实验需要爬取一族pm2.5数据,纠结了几天爬虫,总算取得阶段性胜利,至少够项目用了
总结一下思想,就是首先设一个start url作为入口,爬到需要的url后将其链接传递到下一级parse,以此类推
原理再研究,会用先:
class DmozSpider(scrapy.spiders.Spider): name = "dmoz0" //爬虫名称,在每次调用爬虫时需要 allowed_domains = ["www.tianqihoubao.com"] //注意这里非常重要,它定义整个搜索的范围,既往下的任何搜索都在这个域名的范围内,注:不是链接! start_urls = [ "http://www.tianqihoubao.com/aqi/" ] //这一部分设定起始url def parse(self, response): //scrapy框架默认传入parse sel = Selector(response) sites = sel.xpath('//dl') url = "http://www.tianqihoubao.com" items = [] for site in sites: provence = site.xpath('dt/b/text()').extract() print(provence) citys = site.xpath('dd/a') for city in citys: name = city.xpath('text()').extract() cityurl = city.xpath('@href').extract() cl = url + cityurl[0] item = CityItem() item['name'] = name item['url'] =url + cityurl[0] items.append(item) yield scrapy.Request(cl, callback=self.parse_item) //yield生成请求,将新的url加入到爬取队列中,cl为url,callback为新的爬取调用的parse名称,这个项目新定义的为parse_item。 print("000") def parse_item(self, response): sell = Selector(response) sites = sell.xpath('//h2') print("999")