【问题标题】:How to Crawl a website within 2 layers in Python using XPath如何使用 XPath 在 Python 中的 2 层内抓取网站
【发布时间】:2020-06-07 22:28:16
【问题描述】:

所以我正在尝试抓取这个网站,示例 url 是 https://www.rfa.org/cantonese/news/SARS-12312019075620.html

我只是想获取文本,但是,您可以看到一些文本在p 标签下,而其中一些在br 之间。我不想获取图片的文字描述,所以我无法抓取所有内容。

这是我目前所拥有的,只能在p 下获取文本

//*//div[@id="storytext"]/p/text()

但是我怎样才能得到每一个文字而不是图片的描述和其他不必要的信息。

所以有 2 层。第一个是p,另一个是br 之间的文本。图片的描述总是在3层。

【问题讨论】:

  • 更好地添加预期输出

标签: python python-3.x xpath web-scraping


【解决方案1】:

假设您使用的是 LXML。您应该编写一个特定的 XPath(使用轴):

from lxml import html
import requests
page = requests.get('https://www.rfa.org/cantonese/news/SARS-12312019075620.html')
tree = html.fromstring(page.content)
news = tree.xpath('//div[@id="storytext"]//text()[normalize-space()][parent::div[@id="storytext"] or ancestor::p]')
print (news)

输出:

使用正则表达式进行最后的清理。

用于测试 XPath 的 URL(它应该适用于所有类型的页面:新闻、功能、谈话节目等):

【讨论】:

    猜你喜欢
    • 2019-04-26
    • 1970-01-01
    • 2021-10-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-04
    • 1970-01-01
    • 2020-09-28
    • 2015-06-09
    相关资源
    最近更新 更多