使用scrapy编写爬虫入门
来源:互联网 发布:手机制作纯音乐软件 编辑:程序博客网 时间:2024/06/01 10:04
一、简介
Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。抓取网页的一般方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然后进入到新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样。
Scrapy 使用 Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。
Scrapy 使用 Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。
二、整体架构
爬取流程
上图绿线是数据流向,首先从初始URL开始,Scheduler会将其交给Downloader进行下载,下载之后会交给Spider进行分析,Spider分析出来的结果有两种:一种是需要进一步抓取的链接,例如之前分析的“下一页”的链接,这些东西会被传回Scheduler;另一种是需要保存的数据,它们则被送到Item Pipeline那里,那是对数据进行后期处理(详细分析、过滤、存储等)的地方。另外,在数据流动的通道里还可以安装各种中间件,进行必要的处理。
数据流
三、实战
爬取虎扑新闻:
import scrapyclass hupunewsSpider(scrapy.Spider): name = "hupunewsSpider" #爬虫名称 start_urls = ['https://voice.hupu.com/nba'] #起始url def parse(self, response): # 爬取标题 # extract()返回的是一个列表,extract_first()返回的是一个字符串 for title_href in response.xpath('//li/div[@class="list-hd"]/h4/a'): # print(title_href) title = title_href.xpath('./text()').extract_first() # print(title) # 获取(、拼接)url href = title_href.xpath('./@href').extract_first() print(title) # 必须加yield才能执行请求 yield scrapy.Request(href,callback=self.parse_question) # yield { # 'title':title # } def parse_question(self,response): for contents in response.xpath('//body/div[4]/div[1]/div[2]/div/div[2]/p'): content = contents.xpath('./text()').extract_first() print(content) # yield { # 'content':content # }打开控制台,切换到文件目录,输入
scrapy runspider hupu_news_content.py执行爬虫,可以看到获得的新闻内容
参考:
http://www.jianshu.com/p/a8aad3bf4dc4
阅读全文
0 0
- 使用scrapy编写爬虫入门
- 使用scrapy编写的爬虫
- 使用Scrapy框架编写爬虫
- 使用Scrapy框架编写爬虫
- Scrapy爬虫入门
- Scrapy爬虫框架入门
- 网页爬虫--scrapy入门
- 网页爬虫--scrapy入门
- Python Scrapy爬虫入门
- scrapy 爬虫入门
- scrapy爬虫入门
- 初试scrapy编写twitter爬虫
- 爬虫-04-scrapy代码编写
- Python3网络爬虫:Scrapy入门之使用ImagesPipline下载图片
- 零基础写python爬虫之使用Scrapy框架编写爬虫
- 零基础写python爬虫之使用Scrapy框架编写爬虫
- 零基础写python爬虫之使用Scrapy框架编写爬虫
- scrapy爬虫框架入门实例
- 半年过去了
- Sort Colors leetcode java
- Codeforces 840C [DP]
- 2017——半年总结
- 5.OD-条件断点、条件记录断点
- 使用scrapy编写爬虫入门
- 6.OD-Run trace /Hit trace
- (zoj 3882 Help Bob)<>
- skynet源码分析(10)--消息机制之消息注册和回调
- 嵌入式开发学习笔记 ( java
- 7.OD-字符串参考
- tensorflow1.0后有AttributeError: ‘module’ object has no attribute 'xx'
- 51nod1799 二分答案(分块打表)
- nodejs中需了解的http协议