Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scrapy、python、Xpath如何匹配html中的各个项目_Python_Xpath_Scrapy - Fatal编程技术网

Scrapy、python、Xpath如何匹配html中的各个项目

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

我是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> 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\']