scrapy-splash简单使用详解
1.scrapy_splash是scrapy的一个组件
scrapy_splash加载js数据基于Splash来实现的
Splash是一个Javascrapy渲染服务,它是一个实现HTTPAPI的轻量级浏览器,Splash是用Python和Lua语言实现的,基于Twisted和QT等模块构建
使用scrapy-splash最终拿到的response相当于是在浏览器全部渲染完成以后的网页源代码
2.scrapy_splash的作用
scrpay_splash能够模拟浏览器加载js,并返回js运行后的数据
3.scrapy_splash的环境安装
3.1使用splash的docker镜像
dockerinfo查看docker信息
dockerimages 查看所有镜像
dockerpullscrapinghub/splash 安装scrapinghub/splash
dockerrun-p8050:8050scrapinghub/splash& 指定8050端口运行
3.2.pipinstallscrapy-splash
3.3.scrapy配置:
SPLASH_URL='http://localhost:8050' DOWNLOADER_MIDDLEWARES={ 'scrapy_splash.SplashCookiesMiddleware':723, 'scrapy_splash.SplashMiddleware':725, 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware':810, } SPIDER_MIDDLEWARES={ 'scrapy_splash.SplashDeduplicateArgsMiddleware':100, } DUPEFILTER_CLASS='scrapy_splash.SplashAwareDupeFilter' HTTPCACHE_STORAGE='scrapy_splash.SplashAwareFSCacheStorage'
3.4.scrapy使用
fromscrapy_splashimportSplashRequest yieldSplashRequest(self.start_urls[0],callback=self.parse,args={'wait':0.5})
4.测试代码:
importdatetime importos importscrapy fromscrapy_splashimportSplashRequest from..settingsimportLOG_DIR classSplashSpider(scrapy.Spider): name='splash' allowed_domains=['biqugedu.com'] start_urls=['http://www.biqugedu.com/0_25/'] custom_settings={ 'LOG_FILE':os.path.join(LOG_DIR,'%s_%s.log'%(name,datetime.date.today().strftime('%Y-%m-%d'))), 'LOG_LEVEL':'INFO', 'CONCURRENT_REQUESTS':8, 'AUTOTHROTTLE_ENABLED':True, 'AUTOTHROTTLE_TARGET_CONCURRENCY':8, 'SPLASH_URL':'http://localhost:8050', 'DOWNLOADER_MIDDLEWARES':{ 'scrapy_splash.SplashCookiesMiddleware':723, 'scrapy_splash.SplashMiddleware':725, 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware':810, }, 'SPIDER_MIDDLEWARES':{ 'scrapy_splash.SplashDeduplicateArgsMiddleware':100, }, 'DUPEFILTER_CLASS':'scrapy_splash.SplashAwareDupeFilter', 'HTTPCACHE_STORAGE':'scrapy_splash.SplashAwareFSCacheStorage', } defstart_requests(self): yieldSplashRequest(self.start_urls[0],callback=self.parse,args={'wait':0.5}) defparse(self,response): """ :paramresponse: :return: """ response_str=response.body.decode('utf-8','ignore') self.logger.info(response_str) self.logger.info(response_str.find('http://www.biqugedu.com/files/article/image/0/25/25s.jpg'))
scrapy-splash接收到js请求:
到此这篇关于scrapy-splash简单使用详解的文章就介绍到这了,更多相关scrapy-splash使用内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。