#
准备:robotsUA 池图片懒加载cookieIPajaxjs 加密(js逆向 字体加密/大众点评/ base64 md5 AES python复写 要不就是第三方库执行js代码)验证码 云打码/超级鹰/极验缺口操作模拟浏览器 -- selenium 动作链 -- chrome无头解析工具 -- xpath bs4 正则 pyquery抓包工具 -- fiddler mitproxy测试工具 -- postmanua 手机端app text/plainscrapy -基础- scrapy startproject name cd name scrapy genspider sname xxx.com scrapy crawl sname- 全量数据获取 - 链接提取器/规则解析器 scrapy startproject name cd name scrapy genspider -t crawl spi xxx.com # 基于CrawlSpider类 scrapy crawl spi基于终端指令的 // scrapy crawl first -o qiubai.csv #指定文件类型有要求.json .csv基于管道的 // 定义管道类 注册管道类 不同管道类之间return item# 爬虫: 发请求,解析数据 #将url封装请求对象,引擎,调度器(过滤器(去重) 队列(容器 过滤后的请求对象)) 先进先出 引擎 下载器 引擎 spider.response 解析数据 引擎 管道 持久化# 管道: 接收item,# 调度器:# 下载器: 去互联网请求 # 下载中间件作用:拦截请求和响应# -拦截请求:# 1 篡改请求头UA UA池,随机random.choice()# 2 设置相关请求对象的代理IP(process_exception中)# 引擎(核心): 数据流处理,处理事务# POST请求的发送:# 重写def start_requests(self):# yield scrapy.FormRequest(url,callback,formdata)# scrapy 默认是自己处理cookie的, settings.py里面COOKIES_ENNABLE=False# # 日志等级# settings.py 里面 LOG_LEVEL='ERROR'# # 日志路径# settings.py 里面 LOG_FILE = 'path'# # 请求传参的应用场景:# 爬取和解析的数据不在同一张页面上面# 在请求方法中使用meta(字典)参数,该字典会传递参数给回调函数# 回调函数接收meta:response.meta['key']settings.py 里面LOG_LEVEL = ERRORROBOTSTXT_OBEY = FalseUSER_AGENT = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36'ITEM_PIPELINES = { }