文章目录
Scrapy爬虫的命令行逻辑为什么Scrapy采用命令行创建和运行爬虫?
命令行(不是图形界面)更容易自动化,适合脚本控制。
本质上,Scrapy是给程序员用的,功能(而不是界面)更重要。
一、产生步骤
步骤1:建立一个Scrapy爬虫工程
用命令行在E盘的pycodes文件夹中建立一个工程python123demo
步骤2:在工程中产生一个Scrapy爬虫
新增文件代码
# -*- coding: utf-8 -*-
import scrapy
class DemoSpider(scrapy.Spider):
name = 'demo'#爬虫名称
allowed_domains = ['python123.io']
start_urls = ['http://python123.io/']#所爬取网页
def parse(self, response):#parse0用于处理响应,解析内容形成字典,发现新的URL爬取请求。
pass
步骤3:配置产生的spider爬虫(修改demo.py文件)
# -*- coding: utf-8 -*-
import scrapy
class DemoSpider(scrapy.Spider):
name = 'demo'
#allowed_domains = ['python123.io']
start_urls = ['https://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."%name)
步骤4:运行爬虫,获取网页。
捕获页面成功,以html格式存储在pycodes中
demo.py代码的完整版本
import scrapy
class DemoSpider(scrapy.Spider):
name = 'demo'
#allowed_domains = ['python123.io']
def start_requests(self):
urls = [
'https://python123.io/ws/demo.html'
]
for url in urls:
yield scrapy.Request(url = url ,callable = self.parse())
def parse(self, response):
fname = response.url.split('/')[-1]
with open(fname, "wb") as f:
f.write(response.body)
self.log("Saved file %s."%name)
二、yield关键字的使用
三、Scrapy爬虫的基本使用
1、步骤
1、创建一个工程和Spider模板
2、编写Spider
3、编写Item Pipeline
4、优化配置策略
2、Scrapy爬虫的数据类型
(1)Request类
class scrapy.http.Request()
-Request对象表示一个HTTP请求。
-由Spider生成,由Downloader执行。
(2)Response类
class scrapy.http.Response)
-Response对象表示一个HTTP响应。
-由Downloader生成,由Spider处理。
(3) Item类
class scrapy.item.Item()
-Item对象表示一个从HTML页面中提取的信息内容。
-由Spider生成,由Item Pipeline处理。
-Item类似字典类型,可以按照字典类型操作。
四、Scrapy爬虫提取信息的方法
Scrapy爬虫支持多种HTML信息提取方法
-Beautiful Soup
-lxml
-re
-XPath Selector
-CSS Selector