Scrapy--爬取全国地区对应的天气网址
来源:互联网 发布:美国博士知乎 编辑:程序博客网 时间:2024/05/01 13:46
创建一个scrapy工程:
scrapy startproject get_url
新建一个爬虫:
/scrapy_project/get_url/get_url/spiders$ scrapy genspider myspider weather.com.cn
编辑myspider.py文件内容如下:
# -*- coding: utf-8 -*-import scrapyclass MyspiderSpider(scrapy.Spider): name = 'myspider' allowed_domains = ['weather.com.cn'] start_urls = [] base_url = 'http://www.weather.com.cn/weather/' # 生成需要爬取的网址 # 直辖市、省会和特别行政区总共有34个 for i in range(1,35,1): # 直辖市或特别行政区 if i < 5: # 直辖市或特别行政区里面的城区 for j in range(1,20,1): num_str = str(101000000 + i*10000 + j*100) start_urls.append(base_url + num_str + '.shtml') else: # j代表省下面有多少个城市 # 最多的为四川省和广东省,都有21个 for j in range(1,23,1): # k代表一个市下面有多少个县 # 最多为河北>保定,有26个 for k in range(1,27,1): num_str = str(101000000 + i*10000 + j*100 + k) start_urls.append(base_url + num_str + '.shtml') def parse(self, response): if response.status == 200 and len(response.body) > 1000: url = response.url city_code = url[url.rfind('/')+1:url.rfind('.')] # 小于101050100说明是直辖市或特别行政区,101320000为香港,101330000为澳门 if (int(city_code) < 101050100) or (101320000 < int(city_code) < 101340000): city = response.xpath('//div[@class="crumbs fl"]/a/text()').extract()[0] region = response.xpath('//div[@class="crumbs fl"]/span/text()').extract()[1] city_name = city + '>' + region else: province = response.xpath('//div[@class="crumbs fl"]/a/text()').extract()[0] city = response.xpath('//div[@class="crumbs fl"]/a/text()').extract()[1] region = response.xpath('//div[@class="crumbs fl"]/span/text()').extract()[2] city_name = province + '>' + city + '>' + region with open(r'out.txt','a+') as write_file: write_file.write('\'' + city_name + '\':\'' + url + '\',' + os.linesep) return
运行爬虫:
/scrapy_project/get_url/get_url/spiders$ scrapy runspider myspider.py
爬取结束后,在myspider.py同层就会多出一个out.txt文件,内容如下:
'北京>城区':'http://www.weather.com.cn/weather/101010100.shtml','北京>通州':'http://www.weather.com.cn/weather/101010600.shtml','北京>顺义':'http://www.weather.com.cn/weather/101010400.shtml','北京>朝阳':'http://www.weather.com.cn/weather/101010300.shtml','北京>怀柔':'http://www.weather.com.cn/weather/101010500.shtml',......
接下来就可以使用这些地区与网址的对应信息进行天气数据的爬取了。
阅读全文
0 0
- Scrapy--爬取全国地区对应的天气网址
- Scrapy--爬取全国天气信息
- 全国地区车牌字母对应的地区
- Scrapy爬取新浪天气问题
- 取对应网址的html源码
- PHP获取指定地区的天气
- Scrapy爬虫爬取天气数据存储为txt和json等多种格式
- 全国地区+邮编的数据库脚本
- 全国天气
- 天气API-----开源免费天气预报接口API以及全国所有地区代码!!(国家气象局提供)
- 天气API-----开源免费天气预报接口API以及全国所有地区代码!!(国家气象局提供)
- Scrapy 爬取 豆瓣电影的短评
- scrapy爬取post的数据
- scrapy捕获爬取失败的url
- 用Python 的 Scrapy 爬取 网站
- scrapy实战-爬取
- Scrapy爬取图片
- scrapy爬取图片
- 怎么在虚拟机上部署你自己的项目?
- 翻转子串
- 1097. Deduplication on a Linked List (25)
- 第十六日总结
- 呆萌了
- Scrapy--爬取全国地区对应的天气网址
- poj3468:A Simple Problem with Integers(线段树lazy)
- POJ 1039 Pipe <计算几何>
- test_title
- 刷题#R1
- javascript编解码
- 百度之后, 知乎也要实名制了, 你怎么看?
- MFC消息机制
- 苹果发布智能音箱HomePod,并没有对标亚马逊Echo