如果网页内容是由javascript生成的,应该怎么实现爬虫
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果网页内容是由javascript生成的,应该怎么实现爬虫相关的知识,希望对你有一定的参考价值。
用神箭手云爬虫,完全在云上编写和执行爬虫,不需要配置任何开发环境,快速开发快速实现。简单几行 javascript 就可以实现复杂的爬虫,同时提供很多功能函数:反反爬虫、 js 渲染、数据发布、图表分析、反防盗链等,这些在开发爬虫过程中经常会遇到的问题都由神箭手帮你解决。 参考技术A 使用ssr可以使爬虫正常获得数据 参考技术B pyppeteer 是对无头浏览器 puppeteer的 Python 封装。无头浏览器广泛用于自动化测试,同时也是一种很好地爬虫思路。使用 puppeteer(等其他无头浏览器)的最大优势当然是对 js 加密实行降维打击,完全无视 js 加密手段,对于一些需要登录的应用,也可以模拟点击然后保存 cookie。而很多时候前端的加密是爬虫最难攻克的一部分。当然puppeteer也有劣势,最大的劣势就是相比面向接口爬虫效率很低,就算是无头的chromium,那也会占用相当一部分内存。另外额外维护一个浏览器的启动、关闭也是一种负担。
抓取javascript生成的网页
将javascript内容转换为HTML以将其用于脚本时,我遇到了问题。我使用了多种方法作为phantomjs或python QT库,它们都很好地获得了大部分内容,但问题是页面内部有javascript按钮,如下所示:
现在,当我从脚本加载此页面时,这些按钮将不会默认为任何值,因此下面的所有SELL / NEUTRAL / BUY值都返回0。从脚本加载页面时有没有办法设置这些值?
包含所有值的示例页面是:https://www.tradingview.com/symbols/NEBLBTC/technicals/
任何帮助将不胜感激。
如果你试图通过scrapy或cURL
或urrlib
的衍生来实现这一点,我担心你不能这样做。 Python有另外一个外部包,如selenium,允许你与页面的javascript交互,但selenium的问题太慢,如果你想要类似于scrapy的东西,你可以检查网站的工作原理(因为我可以看到它的工作原理) ajax或websockets)并通过urllib
获取您想要的信息,就像使用API一样。
如果您理解我或我误解了您的问题,请告诉我
我使用的seleneum非常适合这项工作,它确实很慢,但符合我的目的。我还使用了seleneum firefox插件来生成python脚本,因为找到与我必须按下的按钮完全一致的代码非常具有挑战性。
以上是关于如果网页内容是由javascript生成的,应该怎么实现爬虫的主要内容,如果未能解决你的问题,请参考以下文章