爬虫流
- spiders(爬虫)Request请求
- spider_middlewares(爬虫中间件)加工请求
- scheduler(调度器)请求表排序
- downloader middlewares(下载中间件)
- downloader(下载器Response)联网拉数据
- spiders(爬虫)parse处理返回内容
- item_pipeline(数据管道 items)存储数据
scrapy 一般爬虫流
- start类
- 执行cmd命令启动爬虫
- from scrapy import cmdline
- cmdline.execute(‘scrapy crawl pachongname’.split(‘ ‘))
- settings类
- 读取爬虫配置信息
- headers(请求头)
- Rebot(协议)
- ITEM_PIPELINES(存储)
- LOG等配置
- spider类
- spider函数
- 定义爬虫名成 name
- 定义start_users 第一个爬取链接
- parse函数处理response响应
- 处理响应数据
- bs4通过tag标签过滤
- xpath过滤
- re过滤
- 数据赋值给item存储对象
- yield 提交给引擎
- pipeline类
- 数据管道item pipeline负责存储
- init()初始化存储对象(存储文件等)
- process_item()将item数据添加到存储文件中
- close_spider()关闭爬虫 存储文件对象等
- item类
- item 负责定义存储类型
- 键值对item类型
控制台命令 创建Scrapy框架
scrapy startprojcet xiangmuming
爬虫 genspider模板 crawl自动化模板
scrapy genspider -t crawl sgbz 3gbizhi.com
基于Scrapy框架中的Spider的递归爬取进行实现(Request模块递归回调parse方法)。
基于CrawlSpider的自动爬取进行实现(更加简洁和高效)。
CrawlSpider其实是Spider的一个子类,除了继承到Spider的特性和功能外,还派生除了其自己独有的更加强大的特性和功能。其中最显著的功能就是”LinkExtractors链接提取器“。Spider是所有爬虫的基类,其设计原则只是为了爬取start_url列表中网页,而从爬取到的网页中提取出的url进行继续的爬取工作使用CrawlSpider更合适。
1.创建scrapy工程:scrapy startproject projectName
2.创建爬虫文件:scrapy genspider -t crawl spiderName www.xxx.com
--此指令对比以前的指令多了 "-t crawl",表示创建的爬虫文件是基于CrawlSpider这个类的,而不再是Spider这个基类。
关闭控制台日志
import logging
logging.getLogger('scrapy').propagate = False
IDE中执行cmd命令
from scrapy import cmdline
cmdline.execute('scrapy crawl xiangmuming'.split(' '))
fake-useragent 动态UA
pip install fake-useragent
from fake_useragent import UserAgent
str(UserAgent().random)
spider中更改settings配置
随机延迟
custom_settings = {
#动态延迟
'DOWNLOAD_DELAY': random.randint(3, 9),
#动态headers
'DEFAULT_REQUEST_HEADERS': {
'User-Agent': None,
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
}
增量爬虫(更新监控)
Original: https://blog.csdn.net/nitianxiaozi/article/details/127716924
Author: lin’s_qianyue
Title: 爬虫 scrapy框架 学习摘要
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/791396/
转载文章受原作者版权保护。转载请注明原作者出处!