Scrapy、python、Xpath如何匹配html中的各个项目
我是Xpath新手,尝试使用以下格式创建网站:Scrapy、python、Xpath如何匹配html中的各个项目,python,xpath,scrapy,Python,Xpath,Scrapy,我是Xpath新手,尝试使用以下格式创建网站: <div class="top"> <a> tittle_name </a> <div class="middle"> listed_date </div> <div class="middle"> listed_value </div> </div> <div class="top"> <a> t
<div class="top">
<a> tittle_name </a>
<div class="middle"> listed_date </div>
<div class="middle"> listed_value </div>
</div>
<div class="top">
<a> tittle_name </a>
<div class="middle"> listed_date </div>
</div>
<div class="top">
<a> tittle_name </a>
<div class="middle"> listed_value </div>
</div>
上面的代码给出了标题名列表和可用的列表日期、列表值,但是如何匹配它们呢?(由于格式不对称,我们无法按索引进行)
谢谢。好吧,因为网站没有指定
div[@class='middle']
中的某个内容是日期还是值,所以您必须以自己的方式编写代码来决定
我猜日期有一些特定的格式,你可以通过一些分析来匹配,也许可以使用正则表达式
您能否更具体地说明列出的日期和列出的值的可能值是什么?请注意,这些XPath表达式是绝对的:
/a//text()
//div[@class=\'middle\']
您需要如下相对XPath表达式:
a
div[@class=\'middle\']
第二。在混合内容模型(如(X)HTML)中选择文本节点不是一个好主意。您应该使用适当的DOM方法或
string()
函数提取字符串值。(在最后一种情况下,您需要为每个节点计算表达式,因为隐式节点集转换为单例节点集)是的,您是对的。能够决定上市日期和上市价值。但每个标题名可能有列出的日期或列出的值,可能有两个,也可能没有。格式不对称。因此,从上面Python代码中得到的列表中,我不知道在尝试插入MySQL时如何将title_名称与相应的列出的_日期、列出的_值相匹配。可能需要另一种方法?我认为这里的相对或绝对路径没有问题,因为我从listing调用“/div[@class=\'middle\']”,这是listings=hxs.select(“//div[@class=\'top\'])的结果。感谢text&string()中的注释,我将在以后完善代码时研究它。我不太明白你的最后一句话。这是为每个节点匹配相关条目的建议。如果是的话,你能更具体一点吗。
a
div[@class=\'middle\']