python - HTML 抓取 XPath

标签 python html xpath python-requests lxml

我正在尝试从网页中抓取一些数据...我设法提取了名称和价格,但我在这里遇到了问题...照片:http://i.imgur.com/N8p9Fj2.jpg

我想打印所有 <li></li>部分,但 <bold></bold> 涵盖的数字不露面,这是为什么呢?我确信有某种方法可以打印整个内容。

我一直这样做:原来的XPath是

//*[@id="ad-54132"]/div[2]/ul/li

我将其缩短(以便它打印所有广告,无论它们是多少,而不是只打印“54132”广告)到:

squarefeet = tree.xpath('//*/div[2]/ul/li/text()')

就像我一开始说的,它只打印不在 <bold></bold> 上的文本

最佳答案

通过使用 li/text()您只会获得作为 li直接子节点 的文本节点.

获取li内的所有文本节点,无论是直接子还是嵌套,都可以使用li//text() .但这将导致每个 li 有多个文本节点。你可能不想要的。

如果您想将所有文本节点连接成每个 li 的单个文本,您可以调用 XPath string()normalize-space()每个 li 的函数像这样的元素:

squarefeet = [li.xpath('normalize-space(.)') for li in tree.xpath('//*/div[2]/ul/li')]

normalize-space()行为就像 string()在这种情况下,如果有的话,它还会删除前导和尾随空格,并且还会用单个空格替换空格序列。

关于python - HTML 抓取 XPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34689411/

相关文章:

python - 在 Python 中显式设置虚拟变量

html - 交替着色由 CSS flex 创建的虚拟行

html - div 旁边的垂直对齐标题

selenium - 验证文本是否存在于特定元素中

javascript - XPATH获取所选节点的根节点

python - 从数据框列中提取异常

python - 如何向量化生成 scipy 稀疏矩阵的代码?

javascript - 如何执行 NON-LINK 的 JavaScript onClick?

c# - 选择 HTML 文档中的第 N 个子节点

python - 异步初始化时将参数传递给 python 类