参考资料:
https://blog.csdn.net/qq_37758925/article/details/108607592
https://blog.csdn.net/weixin_42572590/article/details/103629254
更新pip安装
1.不要直接win+R然后cmd,而是要选择“开始”—“Windows系统”—“命令提示符”—右键“以管理员身份运行”!!!
2.不要用家用WiFi,开手机热点连接!!!
3.管理员身份运行命令提示符后,使用镜像下载升级!!!代码如下:
python -m pip install --upgrade pip -i https://pypi.douban.com/simple
scrapy安装
声明:安装请注意版本Python版本!!!
步骤概览:
1、网络安装wheel;
2、本地安装lxml;lxml下载地址
3、本地安装pyWin32;pyWin32下载地址
4、本地安装Twisted;Twisted下载地址
5、网络安装Scrapy;
1、网络安装wheel
pip install wheel
2、本地安装三个库
(1)点击此 下载地址,进入网站,下载,如下:
(2)本地安装
找到 lxml文件 下载到本地的路径,进入cmd安装,如下:
安装pyWin32、Twisted和安装lxml步骤一样。
3、网络安装Scrapy
以管理员身份打开cmd > 输入pip install scrapy
4、检验Scrap是否安装成功
以管理员身份打开cmd > 输入scrapy
,结果如下:
scrapy基本知识
爬虫框架
- 爬虫框架是实现爬虫功能的一个软件结构和功能组件集合。
- 爬虫框架是一个半成品,能够帮助用户实现专业网络爬虫。
5+2结构
程序员主要编写的是SPIDERS和ITEMPIPELINES部分
Scrapy与requests的不同
相同点
- 两者都可以进行页面请求和爬取,python爬虫的两个重要技术路线。
- 两者可用性都好,文档丰富,入门简单。
- 两者都没有处理js、提交表单、应对验证码等功能。
requests | Scrapy |
---|---|
页面级爬虫 | 网站级爬虫 |
功能库 | 框架 |
并发性考虑不足,性能较差 | 并发性好,性能较高 |
重点在于页面下载 | 重点在于爬虫结构 |
定制灵活 | 一般定制灵活,深度定制困难 |
上手十分简单 | 入门稍难 |
选用哪个技术路线开发爬虫?
- 非常小的需求,requests库
- 不太小的需求,Scrapy库
- 定制要求较高的需求(不考虑规模),自搭框架,requests>Scrapy
Scrapy命令行的使用
Requests类
Response类
Item类
Scrapy爬虫的基本使用
- 创建一个工程和Spider模板
- 编写Spider
- 编写Item Pipline
- 优化配置策略
实例1:
- 目标网站:https://python123.io/ws/demo.html
- 文件名称:demo.html
基本步骤:
- 创建工程
scrapy startproject python123demo
- 进入项目目录并产生一个Scrapy爬虫
cd python123demo
scrapy genspider demo python123.io
生成的默认demo文件如下(已添加注释)
import scrapy
class DemoSpider(scrapy.Spider):
name = 'demo'#爬虫名称
allowed_domains = ['python123.io']#指定域名
start_urls = ['http://python123.io/']#爬取页面的初始页面
def parse(self, response):# 解析页面的方法
pass
- 配置产生的spider爬虫
import scrapy
class DemoSpider(scrapy.Spider):
name = 'demo'#爬虫名称
# allowed_domains = ['python123.io']#指定域名
start_urls = ['http://python123.io/ws/demo.html']#爬取页面的初始页面
def parse(self, response):# 解析页面的方法
fname=response.url.split('/')[-1]
with open(fname,'wb') as f:
f.write(response.body)
self.log('Saved file %s.' %self.name)
- 运行爬虫,获取网页
scrapy crawl demo
注:
生成的工程目录
股票项目
详情参考:https://www.icourse163.org/learn/BIT-1001870001?tid=1461946455#/learn/content?type=detail&id=1238729659
注意: 使用了yield
生成器