教新手使用Scrapy-splash抓取动态页面和Scapy相关内容。这里没有dnf搬砖,从官网获取的中文文本文件丰富、详细、清晰。
用js上传照片推广scrapy.request网址时,响应里只有一大段js函数。要解决这个问题,可以结合Pythonscrapy-splash扩展包。教初学者使用Scrapy-splash抓取动态页面。
1。抓取动态网页。地理环境准备充分。
1.1安装scrapy-splash,智能终端马上运行。
pip安装scrapy-splash
1.2。安装垃圾飞溅服务
docker拉动报废hub/splash
1.3。启动splash服务容器并运行:
dockerrun-p8050:8050scrapinghub/splash
如有疑问,请立即参考scrapy-splashhttps://github.com/scrapy-plugins/scrapy-splash新项目的具体地址。
1.4。splash服务有什么用?尝试用浏览器浏览http://localhost:8050,可以看到以下页面:
尝试在右边的输入框输入任意一个ajax动态网页,点击renderme!片刻之后,你会看到网页页面返回splash3D的渲染结果。
2。装备你的新项目
2.1将以下设备添加到新项目设置中.py:
SPLASH_URL='http://localhost:8050'
DOWNLOADER_middleware={
'scrapy_splash。SplashCookiesMiddleware':723,
'scrapy_splash。'飞溅中间件':725,
'scrapy.downloadermiddleware.httpcompression.httpcompressionmiddleware':810,
}
SPIDER_middleware={'scrapy_splash。splashdepideargsmiddleware':100,}
dupefilter_CLASS='scrapy_splash。'SplashAwareDupeFilter'
httpcache_STORAGE='scrapy_splash。'SplashAwareFSCacheStorage'
2.2修改刺儿头。在新项目网络爬虫的文本文档中请求SplashRequest。在这种情况下,当Scrapy引擎浏览Url时,SplashRequest会立即将请求发送到sracpy-splash服务器。在sracpy-splash服务器成功浏览url之后,它将3D渲染结果返回给scrapy-engine,其编号如下:
script=""
函数main(splash,args)
assert(splash:go(args.url))
assert(splash:wait(args.wait))
return{html=splash:html(),}
结束
"""
classExampleSpider(scrapy。蜘蛛):
defstart_requests(self):
forself.start_urls中的URL:
yieldsplashrequest(URL=URL,callback=self.parse,endpoint='execute',args={'lua_source':script,'wait':0.5})
defparse(self,response):
通过
教新手使用Scrapy-splash抓取动态页面。注意,这里的请求是基于lua脚本共享的实现。当然,你也可以在需要手动浏览的网址外面打包一层,让splashservice立即浏览打包后的网址。
2.2接下来是网络爬虫的具体工作流程。例如,如果您想要抓取一个网站并将照片存储在本地,
开始的时候,觉得一定要在新的projectitems.py文件中创建新的imagepipeline,比如:
从scrapy.exceptions导入废品
从scrapy.pipelines.images导入DropItemfrom
导入图像
MyImagesPipeline(ImagesPipeline):
defget_media_requests(self,item,info):
forimage_URLinitem['image_URLs']:
#注意一定要用scrapy浏览图片的网址。这里的请求,但不是SplashRequest,
#因为scrapy架构控制模块本身无法解析SplashResponse,所以一定要再写一些方法。
产出废品。请求(图像url)
defitem_completed(自身,结果,项目,信息):
image_paths=[x['path']表示正常,x表示正常]
ifnotimage_paths:
引发DropItem("项目不包含图像")
item['图像路径']=图像路径
退货
与新项目settings.py中一样,配备了一键下载分布式系统数据库查询相关设备:
ITEM_PIPELINES={'您的新项目名称。pipelines.myimages管道':300}
IMAGES_STORE='新项目的文件名/'IMAGES_EXPIRES=90。
defparseo数据统计分析示例教程:e(self,response):
list_imgs=response.xpath('//div[@class="text"]/p/img/@src').extract() list_imgs=response.XPath('//div[@class="text"]/p/img/@src')。提取()
#xpath必须修改为指导思想url中你需要获取的内容,比如图片URL等。
iflist_imgs: iflist_imgs:
item=Imseo数据统计分析示例教程:ageItem()
item['image_urls']=list_imgs item['image_URLs']=list_imgs
产量项目
好了,进行完以上工作,你就可以运行你的网络爬虫了,尽情的爬行网站里的各种漂亮小姐姐(手拉撇嘴)!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)