scrapy框架基本使用
一.框架介绍1.scrapy框架由五个部分组成:
2.框架示意图 ? 二. 框架使用基本使用流程: 1.创建项目:scrapy startproject 项目名称 2.新建爬虫:scrapy genspider 爬虫文件名 爬虫基础域名 3.编写item 4.spider最后return item 5.在setting中修改pipeline配置 6.在对应pipeline中进行数据持久化操作 ? 1.安装pip install scrapy
可能遇到失败: building ‘twisted.test.raiser‘ extension error:Microsoft Visual c++ 14.0 is required. Get it with "Microsoft Visual c++ Build tools": ......等字样的错误 此时需先安装文件 Twisted-19.2.0-cp36-cp36m-win_amd64.whl,需从网络下载到本地,下载链接: https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 在该文件目录下运行命令: pip install Twisted-19.2.0-cp36-cp36m-win_amd64.whl
再执行 pip install scrapy 进行安装. 2.基本使用2.1 通过指令创建项目 scrapy startproject reading_network(项目名)
2.2 通过指令创建spider.py文件 命令: cd reading_network(项目文件)
class GuoxueSpider(scrapy.Spider):
name: 爬虫名,启动的时候根据爬虫的名字启动项目 allowed_domains:允许的域名,爬取的时候这个请求要不要发送,如果是该允许域名之下的url,就会发送,如果不是,则过滤掉这个请求,这是一个列表,可以写多个允许的域名 start_urls:爬虫起始url,是一个列表,里面可以写多个,一般只写一个 def parse(self,response): 就是以后写代码的地方,parse函数名是固定的,当收到下载数据的时候会自动的调用这个方法,该方法第二个参数为response,这是一个响应对象,从该对象中获取html字符串,然后解析。 【注】这个parse函数必须返回一个可迭代对象 2.3 定制item.py 定义所需要爬取的字段,非常简单,复制粘贴 name = scrapy.Field()
2.4 开启爬虫 cmd命令: scrapy crawl guoxue(爬虫文件名)
可以设置启动文件 start.py: from scrapy import cmdline
若报错:ModuleNotFoundError: No module named ‘win32api‘ 可直接安装: pip install pywin32 或安装对应pywin32版本即可: 下载链接: https://sourceforge.net/projects/pywin32/ 根据response 获取网页内容: response.text ? ?字符串类型
非常注意: 想要爬取到数据,需在settings文件中修改ROBOTSTXT_OBEY设置: ROBOTSTXT_OBEY = False ?# 表示不遵守robots.txt 通用爬虫的规则
2.5 将爬取数据生成指定格式文件 需在运行命令后接参数: scrapy crawl guoxue -o data.json # 编码问题 需在settings中添加 FEED_EXPORT_ENCODING = ‘utf-8‘
scrapy用-o filename.json 输出时,会默认使用unicode编码,当内容为中文时,输出的json文件不便于查看,可以在setting.py文件中修改默认的输出编码方式,只需要在setting.py中增加如下语句(默认似乎是没有指定的,所以要增加,如果默认有,就直接修改) 2.6 将爬取数据存入数据库
DB_HOST = ‘127.0.0.1‘
class ReadingNetworkMysqlPipeline(object): ?# 需添加到settings管道配置
2.7 日志文件配置 # 日志等级 用的是python原生的日志系统
需要自己写日志输出方法 2.8 修改输出文件默认编码格式 settings.py添加 : FEED_EXPORT_ENCODING = ‘utf-8‘ # 默认utf-8
参考官方文档: 链接: http://doc.scrapy.org/en/latest/topics/item-pipeline.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |