Scrapy 爬虫的使用步骤
- 创建一个工程
- 编写Spider
- 编写Item Pipeline
- 优化配置策略
①Request类:向网络中提交请求
class scrapy.http.Request()
- Request对象表示一个HTTP请求。
- 由Spider生成,由Downloader执行。
Resquest类
②Response类:网络中爬取内容的封装类
class scrapy.http.Response()
- Response对象表示一个HTTP响应。
- 由Downloader生成,由Spider处理
Response类
③Item类: 由Spider产生的信息封装的类
class scrapy.item.Item()
- Item对象表示一个从HTML页面中提取的信息内容。
- 由Spider生成,由Item Pipeline处理。
- Item类似字典类型,可以按照字典类型进行操作
Scrapy爬虫提取信息的方法
- Beautiful Soup
- lxml
- re
- XPath Selector
- CSS Selector
记一个小?:
首先打开Pycharm, 进入Terminal:
然后cd到文件目录,输入命令:
scrapy startproject python demo
然后我们回到工程文件的目录发现自动生成了一堆文件, 简单介绍一下:
demo:外层目录
scrapy.cfg:部署Scrapy爬虫的配置文件
python:Scrapy框架的用户自定义Python代码
__init_.py:初始化脚本
items.py:Items代码模板(继承类)
middlewares.py:Middlewares代码模板(继承类)
pipelines.py:Pipelines代码模板(继承类)
settings.py:Scrapy爬虫的配置文件,优化爬虫功能需要修改其中的配置项
spiders:存放建立的爬虫
__init_.py:初始化脚本
_pycache_:缓存
_pycache_:缓存
然后再到Terminal中,进入到demo目录下
输入
scrapy genspider ex berryqiu.github.io
这样我们就生成了一个名为ex的爬虫。可以来到目录看一下:
打开它,并修改如下:
# -*- coding: utf-8 -*-
import scrapy
class ExSpider(scrapy.Spider):
name = 'ex'
allowed_domains = ['berryqiu.github.io'] # 只能爬取这个域名以下的相关链接
start_urls = ['https://berryqiu.github.io/pages/q.html'] # 以列表形式表示所要爬取的初始页面
def parse(self, response): # parse()用于处理响应,解析内容形成字典发现新的URL爬取请求,self是面向对象类所属关系的标记,response表示从网络中返回内容或所存储的对象
fname = response.url.split('/')[-1] # 用响应的URL中提取名字
#将响应的内容保存为文件
with open(fname, 'wb') as f:
f.write(response.body)
self.log('Save file %s.' % fname)
pass
此时我们查看文件目录, 就会多一个名为q.html