虽然这是一个很久以前的问题 。但是看到好多答案的办法有点太重了,这里分享一个效率更优、资源占用更低的方法 。
文章插图
【Python 爬虫如何获取 JS 生成的 URL 和网页内容?】
首先请一定记住,浏览器环境对内存和CPU的消耗都非常严重,模拟浏览器环境的爬虫代码要尽可能避免 。请记住,对于一些前端渲染的网页,虽然在html源码中看不到我们需要的数据,但是更大的可能是它会通过另一个请求拿到纯数据(很大可能以JSON格式存在),我们不但不需要模拟浏览器,反而可以省去解析HTML的消耗 。
然后,我们以北邮人论坛为目标!打开北邮人论坛的首页,发现它的首页HTML源码中确实没有页面所显示文章的内容,那么,很可能这是通过JS异步加载到页面的 。通过浏览器开发工具(Chrome浏览器在OS X下通过command+option+i或Win/linux下通过F12)分析在加载首页的时候请求,容易发现,如下截图中的请求:
文章插图
截图中选中的请求得到的response即是首页的文章链接,在preview选项中可以看到渲染后的预览图:
文章插图
至此,我们确定这个链接可以拿到首页的文章及链接 。在headers选项中,有这次请求的请求头及请求参数,我们通过Python模拟这次请求,即可拿到相同的响应 。再配合BeautifulSoup等库解析HTML,即可得到相应的内容了 。
对于如何模拟请求和如何解析HTML,小编有时间在再写,大家记得关注一下,以后常分享给大家好的文章!
推荐阅读
- 如何设计实现一个轻量的开放API网关
- 160台电脑组网,需要一些什么网络设备,如何组网?
- 恶意软件是如何使DNS隐蔽信道通信技术实现通信的?
- 一台电脑如何带两个显示器并显示不同内容?
- Excel中如何引用其它位置的数据
- win10如何快速启动
- 如何选择合适的固态硬盘,2019年固态硬盘选购指南
- 硬盘无法正常识别时如何检测
- 抖音小店设置佣金步骤 抖音小店如何做无货源模式
- csgo调枪口抖动 csgo如何减少压枪画面抖动