如何使用scrapy+splash+Lua滚动爬取CSDN

如何使用scrapy+splash+Lua滚动爬取CSDN,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

成都创新互联公司服务项目包括银州网站建设、银州网站制作、银州网页制作以及银州网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,银州网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到银州省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

这个主要是为了使用splash,做的

CSDN爬的数据频繁以后好像会自动504,开始正文:

安装scrapy,安装splash需要安装docker,详细的安装步骤在我的csdn博客

https://blog.csdn.net/zhao_5352269/article/details/82850496


打开csdn,会发现csdn的文章是随着你鼠标滑动向下加载的

如何使用scrapy+splash+Lua滚动爬取CSDN

如果就只用scrapy框架爬的话,就是只有当前显示的内容

而我们需要滑动以后的内容,就需要splash了,当然是用selnium也是可以的

安装完splash以后,启动服务,在页面访问

如何使用scrapy+splash+Lua滚动爬取CSDN

点击Examples,再继续选择Scroll page,就会出现改脚本,点击render me,就会直接运行,返回你所需的东西.默认的url可能会有点慢,直接复制csdn的地址,在运行,

如何使用scrapy+splash+Lua滚动爬取CSDN

如何使用scrapy+splash+Lua滚动爬取CSDN

如何使用scrapy+splash+Lua滚动爬取CSDN

可以将所有的都截取加上,详细见官方文档https://splash.readthedocs.io

  • splash:set_viewport_full - 更改视口大小(在 splash:png或 splash:jpeg之前调用它 )以获取整个页面的屏幕截图;

如何使用scrapy+splash+Lua滚动爬取CSDN

如何使用scrapy+splash+Lua滚动爬取CSDN

将图片保存,这样就实现在splash中滑动的效果

如何使用scrapy+splash+Lua滚动爬取CSDN

接下来就是在scrapy框架中,使用splash了。

将刚才的脚本复制到爬虫中(微信这个有问题,不能全部显示,一会发源码)

script = """
function main(splash, args)
 splash:go(args.url)
 local scroll_to = splash:jsfunc("window.scrollTo")
 scroll_to(0, 1000)
 splash:set_viewport_full()
 splash:wait(10)
 return {html=splash:html()}
end
"""

复制过来没有全部显示

然后再使用SplashRequest中的args传递参数,也可以使用Scrapy.Request使用meta传递参数

yield SplashRequest(nav_url, endpoint='execute', args={'lua_source': script, 'url': nav_url}

在对setting进行设置(必须)

DOWNLOADER_MIDDLEWARES = {
   'scrapy_splash.SplashCookiesMiddleware':723,
   'scrapy_splash.SplashMiddleware':725,
   'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,#不配置查不到信息
  # 'Technology.middlewares.TechnologyDownloaderMiddleware': 543,
}
HTTPCACHE_ENABLED = True
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_DIR = 'httpcache'
#HTTPCACHE_IGNORE_HTTP_CODES = []
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
SPLASH_URL = "http://192.168.99.100:8050"      #自己安装的docker里的splash位置
DUPEFILTER_CLASS = "scrapy_splash.SplashAwareDupeFilter"
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'

执行代码

如何使用scrapy+splash+Lua滚动爬取CSDN

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


分享文章:如何使用scrapy+splash+Lua滚动爬取CSDN
链接URL:http://myzitong.com/article/picops.html