10Scrapy实例

演示HTML地址:http://python123.io/ws/demo.html
文件名称demo.html
步骤
1.建立一个Scrapy爬虫工程(路径是D:\pycodes)
>scrapy startproject python123demo(工程名)

		会在D盘中生成外层目录python123demo/,
			包含
			scrapy.cfg(部署scrapy爬虫的配置文件);
			python123demo/(scrapy框架中的用户自定义python代码),
				包含
							_init_.py(初始化脚本,用户不编写)、
							items.py(Items代码模块,继承类,用户一般不编写)、
							middlewares.py(Middlewares代码模块,继承类,如果需
								要扩展,就写在此包中)、
							pipelines.py(Pipelines代码模块,继承类)、
							settings.py(Scrapy爬虫的配置文件)、
							spiders/(Spiders代码模块目录,继承类)
							包含
									_init_.py(初始文件,无需修改)
									_pycache_/(缓存目录,无需修改)

2.在工程中产生一个scrapy爬虫
>cd python123demo
>scrapy genspider demo python123.io(生成一个名称为demo的spider)

		自动生成demo.py
			# -*- coding:utf-8 -*-
			import scrapy 
			class DemoSpider(scrapy.Spider):DemoSpider继承自scrapy.Spider
				name="demo"
				allowed_domains=["python123.io"]最开始用户提交的域名
				start_urls=['http://python123.io/']爬取的初始页面
				def parse(self,response):用于处理响应,解析内容形成字典,发现新的url爬取	
				     pass                                                     请求。

3.配置产生的spider爬虫
打开demo.py
将allowed_domains注释
将start_urls改为[‘http://python123.io/ws/demo.html’]
将parse函数爬取方法的具体功能改变
self:面向对象类所属关系的标记
response:从网络中返回内容所对应的对象
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.运行爬虫,获取网页
python123demo>scrapy crawl demo(捕获文件存在demo.html中)

yield关键字
yield等价于生成器
生成器是一个不断产生值的函数
包含yield语句的函数是一个生成器
生成器在每次产生一个值(yield语句),函数被冻结,被唤醒后再产生一个值。
例子
def gen(n):
for i in range(n):
yield i**2

		for i in gen(5):
			print(i," ",end=" ")
		0 1 4 9 16

生成器相比一次列出所有内容的优势:更节省存储空间,响应更迅速,使用更灵活。

scrapy爬虫的使用步骤
1.创建一个工程和spider模板
2.编写spider
3.编写Item Pipeline
4.优化配置策略

scrapy爬虫的数据类型
Requests类:代表向网络上提交请求的内容
class scrapy.http.Request()
Request对象表示一个Http请求
由spider生成,由Downloader执行
属性或方法:.url .method .headers .body .meta .copy()
Response类:代表从网络中爬取内容的封装类
class scrapy.http.Response()
Response对象表示一个Http请求
由Downloader生成,由spider处理
属性或方法:.url .status.headers .body .flags一组标记 .request .copy()
Item类:代表spider产生的信息封装类
class scrapy.item.Item()
Item对象表示一个从HTML页面中提取的信息内容
由spider生成,由Item Pipeline处理
Item类似字典类型,可以按照字典类型操作

scrapy爬虫提取信息的方法
Beautiful Soup
lxml
re
XPath Selector
CSS Selector
使用.css(‘a::attr(href)’).extract()
标签名称 标签属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值