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)