步骤:
1.建立一个scrapy工程,选一个目录,在目录中执行建立爬虫工程的命令
命令:scrapy startproject python123demo
结果:生成工程目录:
python123demo/—外层目录
(1)scrapy.cfg–部署scrapy爬虫的配置文件,将爬虫放到特定服务器,并为服务器配置好相关的接口
(2)python123demo/—scrapy框架对应的所有文件所在的目录,其中彪包含很多Python文件
(2).1 init.py:初始化脚本,用户不需要编写
(2).2 items.py:对于items类的代码模块(继承scrapy提供的类),一般不需要用户编写
(2).3 middlewares.py:Pipelines代码模块
(2).4 settings.py:scrapy爬虫的配置文件(若要优化爬虫,则需要修改settings里对应的配置项)
(2).5 spiders/:存放Python123demo这个工程中所建立的爬虫,它内部的文件有:
<1>init.py:初始文件,无需修改
<2>pycache/:缓存目录,无需修改
2.在工程中创建一个scrapy爬虫
命令:scrapy genspider demo python123.io
结果:在外层目录python123demo里生成一个demo.py文件
文件中allowed_domains:最开始用户提交给命令行的域名,所以这个域名在爬取网站时只能爬取这个域名以下的相关连接
start_urls:以列表形式包含的一个或多个url,就是scrapy框架所要爬取的初始页面
def parse()函数:解析页面的函数,parse():用于处理响应,解析从网络中爬取的内容并且形成字典类型,并且还能从爬取的内容中发现新的url爬取请求
3.配置产生的spider爬虫,修改demo.py,使之满足需求
爬取方法的两个参数:self:面向对象类所属关系的标记,response:从网络中返回内容所对应的对象
4.运行爬虫,获取页面
命令:scrapy crawl demo
过程中涉及的三个类:
Requests:向网络上提交请求的内容
Response:从网络中爬取的内容的封装的类
Items类:由spider产生的信息封装的类
Requests类表示一个Request对象,Request对象表示一个HTTP请求,Requests类由spider生产,最终由DOWNLOADER执行
Response对象表示一个HTTP响应,封装在Response类里,由DOWNLOADER生产,由spider处理
Item对象表示一个从HTML页面中提取的信息内容,由spider生成,由Item Pipelines处理,Item类似字典类型,可以按照字典类型操作
scrapy爬虫支持多种HTML信息提取方法:BeautifulSoup、lxml、re、XPath Selector、CSS Selector等