scrapy爬虫第一阶段——爬取多级url
2017-01-12 00:55
281 查看
实验需要爬取一族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")
总结一下思想,就是首先设一个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")
相关文章推荐
- Scrapy爬虫系列笔记之三:正则表达式,url去重策略以及遍历算法_by_书訢
- Scrapy爬虫教程之URL解析与递归爬取
- scrapy 爬虫过滤相同的url,Filtered duplicate request,dont_filter
- python_scrapy爬虫_jieba分词_数据可视化 阶段总结报告
- 通过scrapy shell url利用xpath解析网页(为避免反爬虫封掉IP)
- Scrapy爬虫教程之URL解析与递归爬取
- 自定义 Scrapy 爬虫请求的 URL
- Python 自用代码(scrapy多级页面(三级页面)爬虫)
- 第三百二十六节,web爬虫,scrapy模块,解决重复ur——自动递归url
- Python之Scrapy框架Redis实现分布式爬虫详解
- (3)分布式下的爬虫Scrapy应该如何做-递归爬取方式,数据输出方式以及数据库链接
- scrapy爬虫基础知识
- 第一阶段工作结束
- Scrapy爬虫原理及实践
- (4)分布式下的爬虫Scrapy应该如何做-规则自动爬取及命令行下传参
- [python]爬虫库scrapy
- python+Scrapy爬虫编程环境配置的资料整理
- python网络爬虫框架Scrapy
- windows下scrapy-redis如何为不同的爬虫项目分配不同的db,而不仅仅使用db0
- 爬虫代码实现五:解析所有分页url并优化解析实现类