3.scrapy模块方法
yield scrapy.Request(url,callback=解析方法名)
==================================================
Day08笔记
1.如何同时开启多个项目管道文件
在piplines.py中所有管道classzhong ,设置函数 porcess_item(self,item.spider)
的返回值为item
######### return item #############
2. 如何保存为csv或者json文件
scrapy crawl tengxun -o tengxun.csv
scrapy crawl tengxun -o tengxun.json
编码问题:settings.py 中添加变量 FEED_EXPORT_ENCODING = "utf-8"
3. 下载器中间件
1. 随机的User-Agent
1. settings.py中
方式一 : USER_AGENT = "Mozilla/5.0..."
方式二 : DEFALUT_REQUEST_HEADERS ={"":"",}
2. 通过设置中间件(middlewares.py)
1. 项目目录中新建userAgents.py,存放大量Agent
## 大量的User-Agent要以字符串方式,不能以字典方式
2. middlewares.py中写class
class ...(object):
def process_request(self,request,spider):
# headers 属性为请求报头,为字典
# request.headers['User-Agent']=...
3. settings.py中开始 DOWNLOADER_MIDDLEWARES
2. 设置代理
1. middlewares.py
class ...(object):
def process_request(self,request,spider):
# request的meta可设置代理参数
request.meta['proxy'] = random.choice(.)
2. settings.py
DOWNLOADER_MIDDLEWARES = {"":300}
4. 图片管道:ImagePipline
1. 使用流程(要操作的文件)
1. settings.py
设置图片要保存的路径的变量
IMAGES_STORE = "/home/tarena/aaa/aaa/images"
2. pipelines.py
1. 导入scrapy定义好的图片管道类
from scrapy.pipelines.images import ImagesPipeline
2. 定义自己的class,继承scrapy的图片管道类
class AAAImagePipeline(ImagesPipeline):
def get_media_requests(self,item,info)
...
2. 案例 : 斗鱼图片抓取案例(手机app)
1. 菜单 --> 颜值
http://capi.douyucdn.cn/api/v1/getVerticalRoom?limit=20&offset=0
2. 抓取目标
1. 图片
2. 主播名
3. 城市
把所有的图片保存在images_STORE
3. 步骤
1. 前提:手机和电脑一个局域网
2. Fiddler抓包工具
Connections : Allow remote computers to ...
HTTPS : ... from all processe
3. IP地址
win + r -->输入 ipconfig
4. 配置手机
手机浏览器: http://ip:8888
下载 FiddlerRoot certificate
5. 安装
设置 -> 更多 -> ... 从存储设备安装
6. 设置手机代理
长按wife -> 代理 ->输入:ip(电脑) 端口号(8888)
5. dont_filter参数
scrapy.Request(url,callback=parse,dont_filter=.)
1. False: 默认,检查域
2. True : 或略域组检查
6. Scrapy shell的使用
1. scrapy shell "http://www.baidu.com/"
2. response.text 获取响应的文本
3. response.body :获取响应的字节流
7. CrawlSpider类
1. Spider的派生类
Spider类:只爬去了start_urls列表中的网页
CrawlSpider类:定义可一些规则(ruler)来提供提取链接,跟进链接
2. 创建CrawlSpider模板爬虫文件
加 -t crawl
scrapy genspider -t crawl tenxun "xxx.com"
3. 实例:从页面中提取所有的链接
1. scrapy shell "https://hr.tencent.com/position.php?"
2. from scrapy.linkextractors import LinkExtractor
3. linkList = LinkExtractor(allow=("start=\d+"))
4. linkList = extract_links(response)
4. Rule
1. 作用:对爬取网站动作指定特定操作
rules = (Rule(LinkExtractor(allow=("正则"))))
rules = (
Rule(LinkExtractor(allow=r'start=\d+'),
callback = "paseHtml",
follow = True,
)
)
8. 机器视觉与tesseract
1. OCR(Optical Character Recngnition)
光学字符识别
扫描字符: 通过字符的形状 --> 电子文本,OCR有很多的底层识别库
2. 安装
Windows 下:
https://scourceforge.net/projects.tesseract-ocr-alt/files/tesseract-ocr-setup-3.02.02.exe/download
Ubuntu: sudo apt-get install tesseract-ocr
Mac :brew install tesseract
3. 验证
终端 :testeract test1.jsp test1.txt
4. 安装pytesseract模块
python -m pip install pytesseract模块
#方法很少,就一个,图片转字符串
:image_to_string
5. 示例
1. 导模块
2. 创建图片对象
3. 转成字符串
# 百度文字识别网站
http://ai.baidu.com/tech/ocr/general
9. Scrapy模拟登录
1. 运行爬虫 : scrapy runspider renren.py