我正在尝试从网页中抓取一些数据...我设法提取了名称和价格,但我在这里遇到了问题...照片: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/