scrapy框架第一章
2018-06-23 13:26:56来源:未知 阅读 ()
操作环境:python2.7+scrapy
安装比较简单,网上教程也超多,就不在此赘述。
示例网站:https://www.cnblogs.com/cate/python/ (爬去关于博客园所有python的帖子)
#############开始新建项目 E:work\scrapy_pro\
打开cmd(命令行窗口)
cd 进入文件夹 cd..回到上一级 进入某个盘符直接输入E: 大小写没关系
############执行新建项目命令 项目名 cnblog
scrapy startproject cnblog
创建ok,进入项目cd cnblog ,操作该项目时在这一层目录。
目录如下
dir-spiders:存放所有spider的文件,里面的spider文件自己新建。
items.py:用来存放爬去的内容,在导出数据时需要用到
middlewares.py:中间件文件,写入多余的功能,比如需要与PhantomJs结合使用时修改这里。
pipelines.py:暂时没用过。
settings.py:项目配置文件。
######打开spiders文件夹开始新建spider文件 test.py 名字无所谓
打开test.py
# -*- coding: utf-8 -*- import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule
###引入的是items.py里面构造的类 from cnblog.items import ExampleItem
class TestSpider(CrawlSpider):
name = 'blog' allowed_domains = ['cnblogs.com'] start_urls = ['https://www.cnblogs.com/cate/python/'] rules = ( ###爬去索引页并跟踪其中链接 ###查找start_urls 所有的分页页面 Rule(LinkExtractor(allow=r'/cate/python/[2-9]*'), follow=True), ###爬去items页面并将下载响应返回个头parse_item函数 ####查询每个分页页面的详情页 Rule(LinkExtractor(allow=r'http://www.cnblogs.com/[a-z]*/p/[0-1]*'), callback='parse_item', follow=False ), ) def parse_item(self, response): item = ExampleItem() #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract() #i['name'] = response.xpath('//div[@id="name"]').extract() #i['description'] = response.xpath('//div[@id="description"]').extract() #print response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract() if response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract(): item['blog_name'] = response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract() else: item['blog_name'] = 'null' items = [] items.append(item) return items
items.py
# -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.html import scrapy class ExampleItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() blog_name = scrapy.Field()
上面是两个需要用到的两个文件
前面的是spider文件,另一个是定义存储的内容文件
items.py
blog_name = scrapy.Field() //定义一个获取的字段,获取详情页的标题
test.py
from scrapy.linkextractors import LinkExtractor ##引入linkextractors 用于筛选链接和跟进链接,还有很多功能,可以去百度下
from scrapy.spiders import CrawlSpider, Rule ##定义spider的模板,引入Rule规则
from example.items import ExampleItem ##引入定义的items.py
下面是对类的详细介绍
class TestSpider(CrawlSpider): ##继承模板CrawlSpider 普通模板继承Spider name = 'blog' ###定义spider名 运行---$ scrapy crawl blog allowed_domains = ['cnblogs.com'] ## 定义查找范围 start_urls = ['https://www.cnblogs.com/cate/python/'] ###初始url ###通过rules限定查找的url ###分页的url ='/cate/python/[2-9]*' ###详情页的url = 'http://www.cnblogs.com/[a-z]*/p/[0-1]*' ####当有follow=True 则会跟进该页面 ####原理就是 spider在初始页面查找,同时查找帖子详情页的url和下一个分页,同时跟进下一个分页页面,继续查找下一个分页页面和上面的详情页url,详情页面使用回调函数进行采集 rules = ( ###爬去索引页并跟踪其中链接 ###查找start_urls 所有的分页页面 Rule(LinkExtractor(allow=r'/cate/python/[2-9]*'), follow=True), ###爬去items页面并将下载响应返回个头parse_item函数 ####查询每个分页页面的详情页 Rule(LinkExtractor(allow=r'http://www.cnblogs.com/[a-z]*/p/[0-1]*'), callback='parse_item', follow=False ), ) ####详情页面回调函数 def parse_item(self, response): ###实例化item类 item = ExampleItem() ###几种xpath获取标签的方式 #i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract() #i['name'] = response.xpath('//div[@id="name"]').extract() #i['description'] = response.xpath('//div[@id="description"]').extract() #print response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract() if response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract(): item['blog_name'] = response.xpath('//a[@id="Header1_HeaderTitle"]/text()').extract() else: item['blog_name'] = 'null' items = [] ###把数据装进仓库 items.append(item) return items
#####现在开始执行spider
切换到当前目录
—————————导出json文件
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:Highcharts图表库
- 使用scrapy框架爬取全书网书籍信息。 2019-08-13
- 网络编程相关知识点 2019-08-13
- 浅谈 Web框架 2019-08-13
- django框架使用及创建项目 2019-07-24
- celery 分布式异步任务框架(celery简单使用、celery多任务结 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash