完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
scrapy爬虫尝鲜
scrapy现在已经完美支持python3+,所以后面的实例我都会使用python3+的环境。首先我们来尝下鲜,下面的代码是scrapy官方文档中的一段演示代码,就这么几行代码就完成了对http://quotes.toscrape.com/tag/humor/ 的爬取解析存储,可以一窥scrapy的强大。 #quotes_spider.py import scrapy class QuotesSpider(scrapy.Spider): name = “quotes” start_urls = [ ‘http://quotes.toscrape.com/tag/humor/’, ] def parse(self, response): for quote in response.css(‘div.quote’): yield { ‘text’: quote.css(‘span.text::text’).extract_first(), ‘author’: quote.xpath(‘span/small/text()’).extract_first(), } next_page = response.css(‘li.next a::attr(“href”)’).extract_first() if next_page is not None: next_page = response.urljoin(next_page) yield scrapy.Request(next_page, callback=self.parse) 运行scrapy runspider quotes_spider.py -o quotes.json 运行后的数据存储在quotes.json文件中 [ {“text”: “u201cThe person, be it gentleman or lady, who has not pleasure in a good novel, must be intolerably stupid.u201d”, “author”: “Jane Austen”}, {“text”: “u201cA day without sunshine is like, you know, night.u201d”, “author”: “Steve Martin”}, {“text”: “u201cAnyone who thinks sitting in church can make you a Christian must also think that sitting in a garage can make you a car.u201d”, “author”: “Garrison Keillor”}, {“text”: “u201cBeauty is in the eye of the beholder and it may be necessary from time to time to give a stupid or misinformed beholder a black eye.u201d”, “author”: “Jim Henson”}, {“text”: “u201cAll you need is love. But a little chocolate now and then doesn‘t hurt.u201d”, “author”: “Charles M. Schulz”}, {“text”: “u201cRemember, we’re madly in love, so it‘s all right to kiss me anytime you feel like it.u201d”, “author”: “Suzanne Collins”}, {“text”: “u201cSome people never go crazy. What truly horrible lives they must lead.u201d”, “author”: “Charles Bukowski”}, {“text”: “u201cThe trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.u201d”, “author”: “Terry Pratchett”}, {“text”: “u201cThink left and think right and think low and think high. Oh, the thinks you can think up if only you try!u201d”, “author”: “Dr. Seuss”}, {“text”: “u201cThe reason I talk to myself is because Iu2019m the only one whose answers I accept.u201d”, “author”: “George Carlin”}, {“text”: “u201cI am free of all prejudice. I hate everyone equally. u201d”, “author”: “W.C. Fields”}, {“text”: “u201cA lady’s imagination is very rapid; it jumps from admiration to love, from love to matrimony in a moment.u201d”, “author”: “Jane Austen”} ] |
|
|
|
scrapy data flow(流程图)
Scrapy使用了Twisted作为框架,Twisted有些特殊的地方是它是事件驱动的,并且比较适合异步的代码。对于会阻塞线程的操作包含访问文件、数据库或者Web、产生新的进程并需要处理新进程的输出(如运行shell命令)、执行系统层次操作的代码(如等待系统队列),Twisted提供了允许执行上面的操作但不会阻塞代码执行的方法。 下面的图表显示了Scrapy架构组件,以及运行scrapy时的数据流程,图中红色箭头标出。 我大概翻译了下,具体参考官方文档 Scrapy数据流是由执行的核心引擎(engine)控制,流程是这样的: 1、爬虫引擎获得初始请求开始抓取。 2、爬虫引擎开始请求调度程序,并准备对下一次的请求进行抓取。 3、爬虫调度器返回下一个请求给爬虫引擎。 4、引擎请求发送到下载器,通过下载中间件下载网络数据。 5、一旦下载器完成页面下载,将下载结果返回给爬虫引擎。 6、引擎将下载器的响应通过中间件返回给爬虫进行处理。 7、爬虫处理响应,并通过中间件返回处理后的items,以及新的请求给引擎。 8、引擎发送处理后的items到项目管道,然后把处理结果返回给调度器,调度器计划处理下一个请求抓取。 9、重复该过程(继续步骤1),直到爬取完所有的url请求。 上图展示了scrapy的所有组件工作流程,下面单独介绍各个组件
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
“0元购”智元灵犀X1机器人,软硬件全套图纸和代码全公开!资料免费下载!
1081 浏览 1 评论
948 浏览 0 评论
【实操文档】在智能硬件的大模型语音交互流程中接入RAG知识库
5758 浏览 1 评论
防止AI大模型被黑客病毒入侵控制(原创)聆思大模型AI开发套件评测4
987 浏览 0 评论
不可错过!人工神经网络算法、PID算法、Python人工智能学习等资料包分享(附源代码)
3276 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 18:28 , Processed in 0.580522 second(s), Total 94, Slave 77 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号