python - scrapy爬虫规则和注意事项

scrapy爬虫项目的结构

items.py: 用来存放爬虫爬取下来的数据的模型。有固定的格式。
middlewares.py: 用于存放各种中间的文件。
pipelines.py: 用于将items的模型存储到本地磁盘中。
settings.py: 本爬虫的一些配置信息。例如,浏览器的请求头,多久发送一次请求,ip代理等。
scrapy.cfg: 项目的配置文件。
spider包: 以后所有的爬虫,都是存放在这个里面。

每个文件结构里面的一些注意事项

1. item.py
建议在items.py中定义好模型,以后就不用使用字典定义了。其中模型定义的写法是固定的,例如:
	class PriscillaItem(scrapy.Item):  
	  Author=scrapy.Field()  
	  Content=scrapy.Field()
定义好模型后,在spider文件中,首先要引用该模型,写入例如:
	from Priscilla.items import PriscillaItem
随后把抓取的内容,返回对应的模型类型,并用yield返回到pipelines.py中。写法例子如下:
	item=PriscillaItem(Author=author,Content=content)  
	yield item

2. pipeline.py
	这是专门用来保存数据的,其中有三个常用方法需要定义:
	open_spider(self,spider): 当爬虫被打开时候执行。
	process_item(self,item,spider): 当爬虫有item传过来时候被调用 。
	close_spider(self,spider): 当爬虫关闭时候被调用。
	注意,需要激活pipeline才能正常使用,在'settings.py'中,设置‘ITEM_PIPELINES".
	ITEM_PIPELINES = {'Priscilla.pipelines.PriscillaPipeline': 300,}
	下面代码是pipeline.py中的例子:
	
	import json
	class PriscillaPipeline(object):
	    def __init__(self):
	        self.fp=open("duanzi.json",'w',encoding='utf-8')

def open_spider(self,spider):
    print("爬虫开始")

def process_item(self, item, spider):
    item_json=json.dumps(dict(item),ensure_ascii=False)
    self.fp.write(item_json+'\n')
    return item

def close_spider(self, spider):
    self.fp.close()
    print("爬虫结束了")
    
3. 爬虫代码中的注意点
	response是一个'scrapy.http.response.html.HtmlResponse"对象,可以执行'xpath'和’css'提取数据。
	提取出来的数据,是一个‘Selector’或者是一个'SelectorList'对象。
	如果想要获取其中的字符串,那么应该执行'getall'或者‘get'方法。这里getall等效于extract(),get等效于extract_first()。
	getall方法: 获取Selector中的所有文本。返回一个列表。
	get方法: 获取的是Selector中的第一个文本。返回一个str类。
	如果数据解释回来,要传给pipline处理,可以使用yield来返回数据。或者把所有的item收集起来,作为一个大的列表,统一用return 返回大列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值