scrapy的开发流程 笔记10

1,创建项目 scrapy startproject 项目名
2,创建spiders爬虫文件 Scrapy genspider sipider名字 网址(占位)
3,打开spider文件-->将待爬取的url放到start_urls中
start_urls--起始url,scrapy启动之后,就开始下载start_urls里面的url。
scrapy将start_urls里面的url下载好后的response就交给这个方法来处理
4,更改settings.py中的配置
  1,scrapy默认是遵守robots,将rotbos协议改为False
  ROBOTXT_OBET=False
  2,设置下载的请求头。
  'User-Agent':''
  'Accept':''
  'Accept-Language':''
  3,如果将cookie加入请求头,想要让他生效,还必须在打开一条配置
  cookie_enabled=False
  这条配置主要是将scrapy下载时自己的cookie关闭,就可以使用户自定义cookie了。
5,在parse方法中,验证response中是否有数据。
 def parse(self,response):
  print(response.text)
6,在item.py中定义要爬取的字段。
 class GubItem(scrapy.Item):
  read_num=scrapy.Field()
  comment=scrapy.Field()
  title=scrapy.Field()
  href=scrapy.Field()
7,在parse方法中实现数据提取逻辑
 Response有xpath方法
 [Selector对象]=Response.xpath('xpath表达式')
 从selector对象汇总提取字符串的方法有两个:
  1,Extract()--从一个列表中提取每个selector对象的内容
  2,Extract_first()--提取出列表中获取第一个selector对象的内容。
  提取样板:
  for li in li_list:
   item=GubItem()
8,保存数据到mongo
 (1)将提取完善的item,用yield返回
   yield item
 (2)在pipelines.py中实现处理这个返回的item的逻辑。如果想要pipelines生效,也就是让他能够拿到item,必须做配置:
  'music_163.pipelines.Music163Pipeline'--》pipelines中类的全路径:300,
  类的全路径其实就是可以确认找到这个类的路径。
   (3)在这个类中实现保存item的代码:
   import pymongo
   class Music163Pipeline(object):
    def __init__(self):
	 self._clinet=pymongo.MongoClient()
	 self._db=self._clinet['music']
	def get_md5(self,value):
	 return hashlib.md5(bytes(value,enconding='utf-8')).hxdigest()
	def process_item(self,item,spider):
	 #设置一个专门用来做更新的字段,这个字段是不能重复的
	 item['detail_hash']=self.get_md5(item['detail_url'])
	 self._db['singer'].update({'detail_hash':item['detail_hash']},{'$set':dict(item)},true)
	 print(item)
	 return item
9,下载中间件:
 Scrapy主要告诉他我们要下载的url,或者是yield出去的scrapy.Request对象,他都会让我们下载,但是有时候我们想自己下载,比如使用selenium+phantomjs。这时候,必须使用下载中间件来提前获取下载的request对象,就可以做到提前下载。
    下载中间件可以理解为,scrapy下载前,实现的一个接口,你可以在接口中提前获取马上就要下载的request对象,进而做一些对request对象的处理。
	处理方式:
	  使用selenium
	  设置请求头
	  设置代理
	设置中间件的步骤:
	 (1)新建一个py文件,my_middle_wares.py
	 (2)写一个类,这个类中实现process_reqeust方法,这个方法就是下载中间件截取request方法。
	 def process_request(self,request,spider):3)想要让中间件生效,必须在settings.py配置
	downloader_middlewares={
	  'douban.,y_middler_wares.MyMiddleWares':543,
	}
10、可以通过命令直接将爬取的保存到对应文件中。
 首先:
   yield item
   保存到json文件:
   保存到csv文件
   Scrapy crawl guba_spider-o guba.csv
11,scrapy发送二次请求
  #发送二次请求,将url封装scrapy.Request对象,scrapy就会按照request设置取下载。
   yield scrapy.Request(
    url=new_url
	callback=self.parse_area,#回调函数,将来scrapy下载好的response由哪个方法来处理。
	enconding='utf-8',
	Meta={'data'.item}
   )
   Meta是用来从requests对象到response对象传递参数的参数。
   在requests对象中设置好之后,在response中调用:
      Item=response.meta['data']
	new_url='首页路由'+area
	#发送二次请求,将url封装scrapy.Request对象,scrapy就会按照request设置下载去下载
	 yield scrapy.Request(
	   url=new_url
	   callback=self.parse_area,#回调函数,将来scrapy下载好的response由哪个方法来处理。
	   enconding='utf-8'
	 )
	Last、启动scrapy项目
	Scrapy crawl spider文件的name属性 如果不想要看配置信息,增加一个--nolog参数
	baidu>scrapy crawl baidu_spider --nolog
	通过文件来启动scrapy
	创建main文件 
	from scrapy import cmdline
	cmdline.execute('scrapy crawl music_spider --nolog'.split())
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值