微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使 Scrapy 呈现 Javascript 内容的最简单/初学者友好的方法

如何解决使 Scrapy 呈现 Javascript 内容的最简单/初学者友好的方法

在这里考虑这个网站:https://dlnr.hawaii.gov/dsp/parks/hawaii/akaka-falls-state-park/

我希望抓取右侧标题下的内容。这是我尝试使用 Requests 和 BS 呈现空列表的示例代码,因为它无法呈现 Javascript。使用认设置的 Scrapy 也找不到它。下面的代码返回空字符串,因为它没有呈现 javascript。

import requests as req
from bs4 import BeautifulSoup as bs

r = req.get('https://dlnr.hawaii.gov/dsp/parks/hawaii/akaka-falls-state-park/').text
soup = bs(r)

par = soup.find('h3',text= 'Facilities')

for sib in par.next_siblings:
    print(sib.text)

我想知道 Scrapy 呈现 Javascript 的最简单方法。查看开发工具中的响应似乎工作量太大,特别是如果您使用自动抓取来捕获多个元素。 Scrapy-splash 看起来有点复杂,scrapy-selenium 不再活跃,但我对这两个选项都持开放态度。

希望得到任何帮助。谢谢。

解决方法

Scrapy 没有现成的解决方案。最简单的方法是使用 scrapy-splash 插件。

初始 html 中缺少的数据通常意味着它是在不同的请求中加载的。仔细查看 chrome 开发人员工具中的请求,很快就会发现 request。如果您花时间了解此 UI 的工作原理(从哪里获取第二个请求的数字 57871 和 1621203973679),您甚至不需要渲染任何内容。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。