python的scrapy框架学习笔记(1)
HTTP协议
http:普通http协议,不太安全
https:安全
请求方法(method) **
GET 常用于从服务器获取数据
请求数据在URL中(也就是header中)
传输数据量小,支持缓存
POST 常用于向服务器发送**数据
请求数据在body中
传输数据量admin,不缓存
PUT 类似POST,向服务器发送数据
HEAD 类似于GET,但服务器只返回头部,常用于检测浏览器是否在线
OPTIONS 对服务器进行一些配置
DELETE 要求服务器删除某个数据
状态码:
200 成功
404 请求的对象没有找到
500 服务器内部错误
503 服务器暂时不可用
1XX 消息
2XX 成功
3XX 重定向
4XX 客户端错误
5XX 服务器错误
其它 自定义状态码 HTTP状态码支持自定义,但一般用不着
爬虫执行流程:
1.scrapy engine(引擎):Scrapy 框架核心部分。负责在Spider和ItemPipeline、Downloader、Scheduler中间通信、传递数据等。
2.Spider(爬虫):发送需要爬取的链给引擎,最好引擎把其他模块请求回来的数据再发送给爬虫,爬虫就去解析想要的 数据。这个部分是开发者自己写的,因为要爬取哪些连接,页面中的哪些数据使我们需要的,都是由程序员自己决定。
3.Scheduler(调度器):负责接收引擎发送过来的请求,并按照一定的方式进行排列和整理,负责调度请求的顺序等。
4.Downloader(下载器):负责接收引擎传过来的下载请求,然后去网络上下载对应的数据再交还给引擎。
5.Item Pipeline(管道):负责将Spider(爬虫)传递过来的数据进行保存。具体保存在哪里,看开发者自己的需求。
6.Downloader Middlewares(下载器中间件):可以扩展下载器和引擎之间通信功能的中间件。
Spider Middlewares(Spider中间件):可以扩展 引擎和爬虫之间 通信功能的中间件。
创建Scrapy
scrapy startproject qsbk
scrapy gensipder qsbk “qiushibaike.com”
创建了一个名字叫做qsbk的爬虫,并且能爬取的网页只会限制在qiushibaike.com这个域名***意:爬虫名字不能和项目名称一样 。
项目目录结构:
1.items.py:用来存放爬虫爬取下来数据的模型。
2.middlewares.py:用来存放 各种中间件的文件。
3.pipelines.py:用来将items的模型存储到 本地磁盘中。
4.settings.py:本爬虫的一些配置信息(比如请求头、多久发送以此请求、ip代理池等)。
5.scrapy.cfg:项目的配置文件
6.spiders包:以后所有的爬虫,都是 存放到这个里面。
最后代码:
class QsbkSpiderSpider(scrapy.Spider):
name = 'qsbk_spider'
#限制爬取范围,指定域名
allowed_domains = ['qiushibaike.com']
#开始爬取的url,可以传递多个
start_urls = ['https://www.qiushibaike.com/text/page/1/']
def parse(self, response):
# print('=' * 40)
# print(type(response))
# print('=' * 40)
#selectorlist
duanzidivs = response.xpath("//div[@class='col1 old-style-col1']/div")
for duanzidiv in duanzidivs:
#selector
author = duanzidiv.xpath(".//h2/text()").get().strip()
content = duanzidiv.xpath(".//div[@class='content']//text()").getall()
content = "".join(content).strip()
print(author)
print(content)
在pycharm的terminal运行qsbk_spiderscrapy crawl qsbk_spider