Scrapy、python、Xpath如何匹配htm中的相应项

2024-06-17 14:57:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我是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>

列出的“值”和“列出的日期”的存在是可选的。在

我需要将每个title_名称与各自列出的日期、列出的值(如果可用)分组,然后将reach记录插入MySQL。在

我使用的是scrapy shell,它给出了一些基本示例,比如

^{pr2}$

上面的代码给出了标题名的列表和可用的列出日期、列出的值的列表,但是如何匹配它们?(由于格式不对称,我们不能按索引进行)。在

谢谢。在


Tags: namedivmiddle列表datetitlevalue网站
1条回答
网友
1楼 · 发布于 2024-06-17 14:57:51

好吧,由于网站没有指定div[@class='middle']中的某个内容是日期还是值,因此您必须用自己的方式编写代码来决定这一点。在

我想日期有一些特定的格式,你可以通过一些分析来匹配,也许可以使用正则表达式。在

您能否更具体地说明listed_date和{}的可能值是什么?在

网友
2楼 · 发布于 2024-06-17 14:57:51

请注意,这些XPath表达式是绝对的:

/a//text()

//div[@class=\'middle\']

您需要这样的相对XPath表达式:

^{pr2}$

第二。在(X)HTML这样的混合内容模型中选择文本节点不是一个好主意。您应该使用正确的DOM方法或使用string()函数提取字符串值。(在最后一种情况下,您需要为每个节点求值表达式,因为隐式节点集转换为singleton节点集)

相关问题 更多 >