新手学习日记1: 简介 Scrapy 是一个基于Twisted (用Python实现的基于事件驱动的网络引擎框架)的异步处理框架,是纯Python 实现的爬虫框架,其架构清晰,模块之间的耦合程度低,可扩展性极强,可以灵活完成各种需求,只需要定制开发几个模块就可以轻松实现一个爬虫。
一、scrapy框架架构图 二、爬虫执行流程
1.Engine引擎开始 调用了spiders中的spider的启动方法 2. 获取到了spider中start_urls 3. 将urls转换成请求(request)发送出去 4. request通过downloader进行下载,请求 5. 生成response 6. response通过engine返回到spider中的回调函数 parse上 7. parse中做数据提取 下一个请求的地址 数据都需要通过yield进行返回处理 8. yield的地址会提交到Engine,分配到调度器,开始进行上面过程的循环
yield的数据,会交给ItemPipeline存储三、框架使用 1-1创建工程
scrapy startproject projectName1-2进入工程目录:这里一定要进入到刚才创建好的目录中
cd projectName1-3创建爬虫文件:创建的爬虫文件会出现在之前创建好的spiders文件夹下
scrapy genspider spiderName ·1-4执行爬虫文件
scrapy crawl spiderName1-5保存数据:
scrapy crawl *** -o xx.json #输出json格式文件 scrapy crawl *** -o xx.jsonl #输出json lines格式文件,模仁unicode scrapy crawl *** -o xx.csv #输出csv格式文件,excel可以打开 scrapy crawl *** -o xx.xml #输出xml格式文件2-1 setting.py设置重点:
相当于requests中的headers参数中的User-Agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36 Edg/88.0.705.68' DOWNLOAD_DELAY = 3 # 下载延时 ROBOTSTXT_OBEY = False 可以忽略或者不遵守robots协议 CONCURRENT_REQUEST = 16 # 默认16个并行 DEFAULT_REQUEST_HEADERS = {} # 默认请求头,需要时填写只有程序出现错误的情况下,才显示日志文件,程序正常执行时只会输出我们想要的结果
LOG_LEVEL='ERROR' == scrapy crawl spiderName --nolog //二者是等价的,当然还是推荐使用前者未加 LOG_LEVEL='ERROR #只有程序出现错误的情况下,才显示日志文件`log等级: DEBUG最详细的日志信息,典型应用场景是 问题诊断 INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作 WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的 ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息 如IO操作失败或者连接问题 CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息
保存CSV文件乱码 scrapy 爬取文件保存为CSV文件中文乱码的解决办法 //下面的设置可能会导致繁体出现,可以逐个试一下
FEED_EXPORT_ENCODING = "gb18030" FEED_EXPORT_ENCODING = "utf-8" FEED_EXPORT_ENCODING = "gbk"4-1创建 Item Item 是保存爬取数据的容器。创建Item 需要继承scrapy.Item 类,并且定义类型为scrapy.Field 的字段。
text = scrapy.Field() #定义我们想要的字段:编辑spider中的parse方法(用于解析response)
对response 变量包含的内容进行解析,可以使用CSS选择器或Xpath选择器,解析结果赋值给Item中的字段。
知识点:
1.1 回调函数:
在同步开发中没有回调函数的概念 回调函数使用场景都是异步开发 异步操作完成,主动通知给程序 这个过程就叫回调 1.2 同步和异步
同步 程序线性执行 异步 程序并行执行 异步通常都用在耗时操作中 1.3 yield
加强版本的return 返回并记录位置 下次可以继续执行 在Scrapy中大量使用 可以不中断程序进行数据返回
1.4 Selector
选择器,提取之后的对象 get 获取内部的内容
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。 |
标签: #scrapy爬虫数据清洗 #11创建工程scrapy #startproject #genspider #spiderName