Scrapy框架简单爬虫demo
一、导读
接着上一节的Scrapy环境搭建,这次我们开始长征的第二步,如果第一步的还没走,请出门右转(Scrapy爬虫框架环境搭建)
二、步骤
新建Scrapy项目 项目名称是scrapyDemo
scrapy startproject scrapyDemo
然后回车,就会自动生成一个项目骨架,如下图:
然后我们写爬虫的代码是在spiders里面写的。
编写spiders里面的爬虫脚本;demo如下,注释都在代码里面
import scrapy
from mySpider.items import MyspiderItemclass NextSpiderSpider(scrapy.Spider):name = "nextSpider"allowed_domains = ["lab.scrapyd.cn"]start_urls = ['http://lab.scrapyd.cn/']def parse(self, response):content = response.css('div.quote') # 提取首页所有名言,保存至变量contentfor v in content: # 循环获取每一条名言里面的:名言内容、作者、标签text = v.css('.text::text').extract_first() # 提取名言author = v.css('.author::text').extract_first() # 提取作者tags = v.css('.tags .tag::text').extract() # 提取标签tags = ','.join(tags) # 数组转换为字符串"""接下来进行写文件操作,每个名人的名言储存在一个txt文档里面"""file_name = '%s-语录.txt' % author # 定义文件名,如:木心-语录.txtitem = MyspiderItem()item['text'] = textitem['author'] = authoritem['tags'] = tags# 将爬取的数据写成txt文件with open(file_name, "a+") as f: # 不同人的名言保存在不同的txt文档,“a+”以追加的形式f.write(text)f.write('\n') # ‘\n’ 表示换行f.write('标签:' + tags)f.write('\n-------\n')f.close()# scrapy crawl nextSpider -o items.json -s FEED_EXPORT_ENCODING=UTF-8 将数据导出来序列化变成json格式yield item# 接下来我们需要判断下一页是否存在,如果存在# 我们需要继续提交给parse执行关键看 scrapy 如何实现链接提交next_page = response.css('li.next a::attr(href)').extract_first() # css选择器提取下一页链接if next_page is not None: # 判断是否存在下一页"""如果是相对路径,如:/page/1urljoin能替我们转换为绝对路径,也就是加上我们的域名最终next_page为:http://lab.scrapyd.cn/page/2/"""next_page = response.urljoin(next_page)"""接下来就是爬取下一页或是内容页的秘诀所在:scrapy给我们提供了这么一个方法:scrapy.Request()这个方法还有许多参数,后面我们慢慢说,这里我们只使用了两个参数一个是:我们继续爬取的链接(next_page),这里是下一页链接,当然也可以是内容页另一个是:我们要把链接提交给哪一个函数(callback=self.parse)爬取,这里是parse函数,也就是本函数当然,我们也可以在下面另写一个函数,比如:内容页,专门处理内容页的数据经过这么一个函数,下一页链接又提交给了parse,那就可以不断的爬取了,直到不存在下一页"""yield scrapy.Request(next_page, callback=self.parse)
Scrapy框架简单爬虫demo相关推荐
- 使用python的scrapy框架简单的爬取豆瓣读书top250
使用python的scrapy框架简单的爬取豆瓣读书top250 一.配置scrapy环境 1. 配置相应模块 如果没有配置过scrapy环境的一般需要安装lxml.PyOpenssl.Twisted ...
- 关于使用scrapy框架编写爬虫以及Ajax动态加载问题、反爬问题解决方案
关于使用scrapy框架编写爬虫以及Ajax动态加载问题.反爬问题解决方案 参考文章: (1)关于使用scrapy框架编写爬虫以及Ajax动态加载问题.反爬问题解决方案 (2)https://www. ...
- 一个scrapy框架的爬虫(爬取京东图书)
我们的这个爬虫设计来爬取京东图书(jd.com). scrapy框架相信大家比较了解了.里面有很多复杂的机制,超出本文的范围. 1.爬虫spider tips: 1.xpath的语法比较坑,但是你可以 ...
- python爬虫之使用Scrapy框架编写爬虫
转自:http://www.jb51.net/article/57183.htm 前面的文章我们介绍了Python爬虫框架Scrapy的安装与配置等基本资料,本文我们就来看看如何使用Scrapy框架方 ...
- python爬取京东书籍_一个scrapy框架的爬虫(爬取京东图书)
我们的这个爬虫设计来爬取京东图书(jd.com). scrapy框架相信大家比较了解了.里面有很多复杂的机制,超出本文的范围. 1.爬虫spider tips: 1.xpath的语法比较坑,但是你可以 ...
- python3 scrapy框架,Python3爬虫(十八) Scrapy框架(二)
对Scrapy框架(一)的补充 Infi-chu: Scrapy优点: 提供了内置的 HTTP 缓存 ,以加速本地开发 . 提供了自动节流调节机制,而且具有遵守 robots.txt 的设置的能力. ...
- 解析python网络爬虫pdf 黑马程序员_正版 解析Python网络爬虫 核心技术 Scrapy框架 分布式爬虫 黑马程序员 Python应用编程丛书 中国铁道出版社...
商品参数 书名:Python应用编程丛书:解析Python网络爬虫:核心技术.Scrapy框架.分布式爬虫 定价:52.00元 作者:[中国]黑马程序员 出版社:中国铁道出版社 出版日期:2018-0 ...
- 用scrapy框架写爬虫
爬虫可以发送给引擎的两种请求: # 1.url:# (爬虫)yield scrapy.Request -> 引擎 -> 调度器(发送给调度器入队) -> 引擎(调度器出队请求于引擎) ...
- Python:Pycharm如何使用scrapy框架做爬虫?
因为入门python以来一直使用pycharm,所以对着黑白的DOS不习惯,所以此次来实现使用pycharm进行实现使用scrapy框架 ①pip install scrapy(首先安装scrapy第 ...
最新文章
- 图算法在斗鱼反作弊中的实践
- 文件传输服务器多目录,node ftp 模块 如何把本地多个文件夹或者文件上传到服务器...
- mybatis中LIKE模糊查询的几种写法以及注意点(亲测第三种CONCAT()函数的)
- 一般处理程序读写session
- 南岸焊接机器人厂_造船三部高效焊接工艺技术年鉴
- 第一百二十六期:代码以外的生存之道,献给每位入了坑的码农
- Python数据挖掘与机器学习技术入门实战
- 关于C/C++中的几个关键字(C基础)
- 2018java计算机二级考试试题和答案,2018年计算机等级考试二级JAVA习题答案(1)
- (转)什么是Cookies详解
- 【SpringBoot_ANNOTATIONS】自动装配 01 @Autowired @Qualifier @Primary
- 渗透测试-安卓APP经验总结
- 谷歌浏览器网页翻译失效,无法翻译成中文,且谷歌翻译api报404问题
- 【简历优化】如何写好项目的亮点难点?项目经历怎么写最好?
- 英语学习/词典App分析-团队作业(五)
- Windows电脑垃圾的清理
- OPPO开放平台移动应用认领
- 程序员需知的9个编程学习官网,建议收藏
- 列表中的元素进行统计数量
- PHP socket 连接 Socket server