js 抓取网页内容(Phantomjs抓取渲染JS后的网页(Python代码)的相关内容吗)

优采云 发布时间: 2022-02-21 22:00

  js 抓取网页内容(Phantomjs抓取渲染JS后的网页(Python代码)的相关内容吗)

  想了解Phantomjs爬取渲染JS网页的内容(Python代码)吗?在这篇文章中,我将讲解Phantomjs爬取和渲染JS网页的相关知识以及一些代码示例。欢迎阅读和指正。重点先:Phantomjs抓取并渲染JS网页(Python代码),一起学习吧。

  最近需要爬取某个网站,可惜页面都是JS渲染后生成的,普通爬虫框架处理不了,于是想到了用Phantomjs搭建代理。

  貌似没有现成的Python调用Phantomjs的第三方库(如果有,请告知小编)。逛了一圈,发现只有pyspider提供了现成的解决方案。

  经过简单的试用,感觉pyspider更像是新手的爬虫工具,像个老妈妈,时而细致,时而喋喋不休。轻量级的小工具应该更受欢迎。我也有一点自私。我可以把我最喜欢的 BeautifulSoup 一起使用,而不用学习 PyQuery(pyspider 用于解析 HTML),也不必忍受浏览器写 Python。糟糕的体验(窃笑)。

  于是花了一个下午把pyspider实现Phantomjs代理的部分拆解,做成一个小的爬虫模块。我希望每个人都会喜欢它(感谢 binux!)。

  准备

  你当然有 Phantomjs,废话! (Linux下最好使用supervisord来守护,爬取时必须保持Phantomjs开启)

  在项目路径中以phantomjs_fetcher.js开头:phantomjs phantomjs_fetcher.js [port]

  安装 tornado 依赖项(使用 tornado 的 httpclient 模块)

  打电话超级简单

  

from tornado_fetcher import Fetcher

# 创建一个爬虫

>>> fetcher=Fetcher(

user_agent='phantomjs', # 模拟浏览器的User-Agent

phantomjs_proxy='http://localhost:12306', # phantomjs的地址

poolsize=10, # 最大的httpclient数量

async=False # 同步还是异步

)

# 开始连接Phantomjs的代码,可以渲染JS!

>>> fetcher.fetch(url)

# 渲染成功后执行额外的JS脚本(注意用function包起来!)

>>> fetcher.fetch(url, js_script='function(){setTimeout("window.scrollTo(0,100000)}", 1000)')

  代码

  相关文章

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线