scrapy 命令:
scrapy startproject xx(爬虫目录) 创建爬虫目录
cd xx 进入目录
scrapy genspilder chouti(爬虫名称) chouti.com(起始url)
然后编写
启动爬虫项目:
scrapy crawl chouti(爬虫名称) --nolog(不看默认日志)
# name = "" 这个是爬虫的名字,必须唯一,在不同的爬虫需要定义不同的名字
# allowed_domains = [] 域名范围,限制爬虫爬取当前域名下的网页
# start_urls =[] 爬取的URL元组/列表。爬虫从这里开始爬取数据,第一次爬取的页面就是从这里开始,其他的URL将会从这些起始的URL爬取的结果中生成
# parse(self,response) 解析网页的方法,每个初始URL完成下载后将调用,调用的时候传入每一个初始URL返回的Response对象作为唯一参数,
# 主要作用1、负责解析返回的网页数据,response.body 2、生成下一页的URL请求
编写:
def parse(self, response):
# 1.响应
# response封装了响应相关的所有数据:
- response.text
- response.encoding
- response.request # 当前响应是由那个请求发起;请求中 封装(要访问的url,下载完成之后执行那个函数)
- response.url获取抓取的url
- response.request.url获取抓取的url
-response.body获取网页内容字节类型
-response.body_as_unicode()#获取网站内容字符串类型
# 2. 解析
# response.xpath('//div[@href="x1"]/a').extract_first() 第一个
# response.xpath('//div[@href="x1"]/a').extract() 所有
# response.xpath('//div[@href="x1"]/a/text()').extract() 文本
# response.xpath('//div[@href="x1"]/a/@href').extract() 属性
# tag_list = response.xpath('//div[@href="x1"]/a')
# for tag in tag_list:
# tag.xpath('.//p/text()').extract_first()
# parse() 方法的执行机制
# 使用yield返回数据,不要使用return。parse就会被当做一个生成器。scarpy将parse生成的数据,逐一返回
# 如果返回值是request则加入爬取队列,如果是item类型,则交给pipeline处理
# 3. 再次发起请求
# yield Request(url='xxxx',callback=self.parse)