页面找不到html,使用请求HTML找不到CSS类

您要尝试执行的操作要求HTML源代码包含具有此类的元素。浏览器的功能不只是下载HTML。当页面引用该页面时,它还会下载CSS和Javascript代码,并执行该页面附带的所有脚本,这可能会触发进一步的网络活动。如果您要查找的内容是由Javascript生成的,则可以在浏览器开发工具检查器中看到这些元素,但这不能使该r.html对象可访问该元素!

对于您尝试抓取的URL,如果您查看网络控制台,则会看到发出了AJAX请求GET请求http://mentalfloss.com/api/facts来填充

结构,因此,如果您要抓取该数据,则可以将其作为JSON来获取。直接从API:

r = session.get('http://mentalfloss.com/api/facts')

description = r.json()[0]['fact']

print("Fun Fact:" + fact)

您也可以通过调用来使requests_html会话使用Javascript呈现页面r.html.render()。

然后,它使用无头浏览器呈现HTML,执行嵌入在其中的JavaScript代码,获取AJAX请求并呈现其他DOM元素,然后将整个页面反射回HTML以供您的代码挖掘。首次执行此操作时,将为您下载无头浏览器基础结构所需的库:

>>> from requests_html import HTMLSession

>>> session = HTMLSession()

>>> r = session.get('http://mentalfloss.com/amazingfactgenerator')

>>> r.html.render()

[W:pyppeteer.chromium_downloader] start chromium download.

Download may take a few minutes.

# .... a lot more information elided

[W:pyppeteer.chromium_downloader] chromium extracted to: /Users/mj/.pyppeteer/local-chromium/533271

>>> r.html.render()

>>> r.html.find('.af-description', first=True)

>>> _.text

'The cubicle did not get its name from its shape, but from the Latin “cubiculum” meaning bed chamber.'

但是,这需要您的计算机做更多的工作。对于此特定示例,直接调用API会更容易。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值