城市量化研究-PM2.5数据分析-数据获取

城市定量化研究-PM25数据分析实战-数据获取

爬去数据

导入模块

import requests
from lxml import etree
import pandas as pd

获取网页源代码

res = requests.get('http://www.pm25.in').text
res = etree.HTML(res)

解析网页,获取城市的链接

我们需要点击对应城市,转到相应的网页,获取相应的数据
在这里插入图片描述

获取每个城市对应的url后缀,初步想法是将后缀与 http://www.pm25.in 连接起来,构成新的url

这里注意a[@href]与a/@href的区别

前者是返回一个解析器,后者是返回改属性内容

data = res.xpath("//div[@class='bottom']//li/a/@href")
data
['/beijing',
 '/shanghai',
 '/guangzhou',
 '/shenzhen',
 '/hangzhou',
 '/tianjin',
 '/chengdu',
 '/nanjing',
 '/xian',
 '/wuhan',
 '/abazhou',
 '/akesudiqu',
 '/alashanmeng',
 '/aletaidiqu',
 '/alidiqu',
 '/ankang',
 '/anqing',
 '/anshan',
 '/anshun',
 '/anyang',
 '/baicheng',
 '/baise',
 '/baishan',
 '/baiyin',
 '/baoding',
 '/baoji',
 '/baoshan',
 '/baotou',
 '/bayannaoer',
 '/bazhong',
 '/beihai',
 '/beijing',
 '/bengbu',
 '/benxi',
 '/bijie',
 '/binzhou',
 '/boertala',
 '/bozhou',
 '/cangzhou',
 '/changchun',
 '/changde',
 '/changdou',
 '/changdudiqu',
 '/changjizhou',
 '/changsha',
 '/changshu',
 '/changzhi',
 '/changzhou',
 '/chaoyang',
 '/chaozhou',
 '/chengde',
 '/chengdu',
 '/chenzhou',
 '/chifeng',
 '/chizhou',
 '/chongqing',
 '/chongzuo',
 '/chuxiongzhou',
 '/chuzhou',
 '/dalian',
 '/dalizhou',
 '/dandong',
 '/daqing',
 '/datong',
 '/daxinganlingde',
 '/daxinganlingdiqu',
 '/dazhou',
 '/dehongzhou',
 '/deyang',
 '/dezhou',
 '/dingxi',
 '/diqingzhou',
 '/dongguan',
 '/dongying',
 '/eerduosi',
 '/enshizhou',
 '/ezhou',
 '/fangchenggang',
 '/foshan',
 '/fushun',
 '/fuxin',
 '/fuyang',
 '/fuyangshi',
 '/fuzhou',
 '/fuzhoushi',
 '/gannanzhou',
 '/ganzhou',
 '/ganzicangzuzizhizhou',
 '/ganzizhou',
 '/guangan',
 '/guangyuan',
 '/guangzhou',
 '/guigang',
 '/guilin',
 '/guiyang',
 '/guoluozhou',
 '/guyuan',
 '/haerbin',
 '/haibeizhou',
 '/haidongdiqu',
 '/haikou',
 '/haimen',
 '/hainanzhou',
 '/haixizhou',
 '/hamidiqu',
 '/handan',
 '/hangzhou',
 '/hanzhong',
 '/hebi',
 '/hechi',
 '/hefei',
 '/hegang',
 '/heihe',
 '/hengshui',
 '/hengyang',
 '/hetiandiqu',
 '/heyuan',
 '/heze',
 '/hezhou',
 '/honghezhou',
 '/huaian',
 '/huaibei',
 '/huaihua',
 '/huainan',
 '/huanggang',
 '/huangnanzhou',
 '/huangshan',
 '/huangshi',
 '/huhehaote',
 '/huizhou',
 '/huludao',
 '/hulunbeier',
 '/huzhou',
 '/jiamusi',
 '/jian',
 '/jiangmen',
 '/jiangyin',
 '/jiaonan',
 '/jiaozhou',
 '/jiaozuo',
 '/jiaxing',
 '/jiayuguan',
 '/jieyang',
 '/jilin',
 '/jimo',
 '/jinan',
 '/jinchang',
 '/jincheng',
 '/jingdezhen',
 '/jingmen',
 '/jingzhou',
 '/jinhua',
 '/jining',
 '/jintan',
 '/jinzhong',
 '/jinzhou',
 '/jiujiang',
 '/jiuquan',
 '/jixi',
 '/jurong',
 '/kaifeng',
 '/kashediqu',
 '/kelamayi',
 '/kezhou',
 '/kuerle',
 '/kunming',
 '/kunshan',
 '/laibin',
 '/laiwu',
 '/laixi',
 '/laizhou',
 '/langfang',
 '/lanzhou',
 '/lasa',
 '/leshan',
 '/liangshanzhou',
 '/lianyungang',
 '/liaocheng',
 '/liaoyang',
 '/liaoyuan',
 '/lijiang',
 '/linan',
 '/lincang',
 '/linfen',
 '/linxiazhou',
 '/linyi',
 '/linzhi',
 '/linzhidiqu',
 '/lishui',
 '/liupanshui',
 '/liuzhou',
 '/liyang',
 '/longnan',
 '/longyan',
 '/loudi',
 '/luan',
 '/luohe',
 '/luoyang',
 '/luzhou',
 '/lvliang',
 '/maanshan',
 '/maoming',
 '/meishan',
 '/meizhou',
 '/mianyang',
 '/mudanjiang',
 '/nanchang',
 '/nanchong',
 '/nanjing',
 '/nanning',
 '/nanping',
 '/nantong',
 '/nanyang',
 '/naqu',
 '/naqudiqu',
 '/neijiang',
 '/ningbo',
 '/ningde',
 '/nujiangzhou',
 '/panjin',
 '/panzhihua',
 '/penglai',
 '/pingdingshan',
 '/pingdu',
 '/pingliang',
 '/pingxiang',
 '/puer',
 '/putian',
 '/puyang',
 '/qiandongnanzhou',
 '/qiannanzhou',
 '/qianxinanzhou',
 '/qingdao',
 '/qingyang',
 '/qingyuan',
 '/qinhuangdao',
 '/qinzhou',
 '/qiqihaer',
 '/qitaihe',
 '/quanzhou',
 '/qujing',
 '/quzhou',
 '/rikaze',
 '/rikazediqu',
 '/rizhao',
 '/rongcheng',
 '/rushan',
 '/sanmenxia',
 '/sanming',
 '/sansha',
 '/sanya',
 '/shanghai',
 '/shangluo',
 '/shangqiu',
 '/shangrao',
 '/shannan',
 '/shannandiqu',
 '/shantou',
 '/shanwei',
 '/shaoguan',
 '/shaoxing',
 '/shaoyang',
 '/shenyang',
 '/shenzhen',
 '/shihezi',
 '/shijiazhuang',
 '/shiyan',
 '/shizuishan',
 '/shouguang',
 '/shuangyashan',
 '/shuozhou',
 '/siping',
 '/songyuan',
 '/suihua',
 '/suining',
 '/suizhou',
 '/suqian',
 '/suzhou',
 '/suzhoushi',
 '/tachengdiqu',
 '/taian',
 '/taicang',
 '/taiyuan',
 '/taizhou',
 '/taizhoushi',
 '/tangshan',
 '/tianjin',
 '/tianshui',
 '/tieling',
 '/tongchuan',
 '/tonghua',
 '/tongliao',
 '/tongling',
 '/tongrendiqu',
 '/tulufandiqu',
 '/wafangdian',
 '/weifang',
 '/weihai',
 '/weinan',
 '/wendeng',
 '/wenshanzhou',
 '/wenzhou',
 '/wuhai',
 '/wuhan',
 '/wuhu',
 '/wujiang',
 '/wujiaqu',
 '/wulanchabu',
 '/wulumuqi',
 '/wuwei',
 '/wuxi',
 '/wuzhong',
 '/wuzhou',
 '/xiamen',
 '/xian',
 '/xiangtan',
 '/xiangxizhou',
 '/xiangyang',
 '/xianning',
 '/xianyang',
 '/xiaogan',
 '/xilinguolemeng',
 '/xinganmeng',
 '/xingtai',
 '/xining',
 '/xinxiang',
 '/xinyang',
 '/xinyu',
 '/xinzhou',
 '/xishuangbannazhou',
 '/xuancheng',
 '/xuchang',
 '/xuzhou',
 '/yaan',
 '/yanan',
 '/yanbianzhou',
 '/yancheng',
 '/yangjiang',
 '/yangquan',
 '/yangzhou',
 '/yantai',
 '/yibin',
 '/yichang',
 '/yichun',
 '/yichunshi',
 '/yilihasake',
 '/yilihasakezhou',
 '/yinchuan',
 '/yingkou',
 '/yingtan',
 '/yiwu',
 '/yixing',
 '/yiyang',
 '/yongzhou',
 '/yueyang',
 '/yulin',
 '/yulinshi',
 '/yuncheng',
 '/yunfu',
 '/yushuzhou',
 '/yuxi',
 '/zaozhuang',
 '/zhangjiagang',
 '/zhangjiajie',
 '/zhangjiakou',
 '/zhangqiu',
 '/zhangye',
 '/zhangzhou',
 '/zhanjiang',
 '/zhaoqing',
 '/zhaotong',
 '/zhaoyuan',
 '/zhengzhou',
 '/zhenjiang',
 '/zhongshan',
 '/zhongwei',
 '/zhoukou',
 '/zhoushan',
 '/zhuhai',
 '/zhuji',
 '/zhumadian',
 '/zhuzhou',
 '/zibo',
 '/zigong',
 '/ziyang',
 '/zunyi']
for url in data:
    url = 'http://www.pm25.in' + url
    print(url)
    res = requests.get(url).text
    res = etree.HTML(res)
    data = res.xpath("//tbody//tr")
    dts = [] # 装每条数据的空列表
    city = res.xpath('//h2/text()')[0]
    for td in data:
        lst = []# 存放一条数据的列表
        lst.append(td.xpath('td[1]/text()')[0])
        lst.append(td.xpath('td[5]/text()')[0])
        lst.append(res.xpath('//h2/text()')[0])
        dts.append(lst)
    df = pd.DataFrame(dts)
    df.to_csv('./data-pm25.csv',mode='a',header=False,encoding='utf-8') 
    # mode = 'a'追加,header=False,不要表头 encoding='utf-8' 防止乱码
    print('完成',city)
print('all finish')
http://www.pm25.in/beijing
完成 北京
http://www.pm25.in/shanghai
完成 上海
http://www.pm25.in/guangzhou
完成 广州
http://www.pm25.in/shenzhen
完成 深圳
http://www.pm25.in/hangzhou
完成 杭州
http://www.pm25.in/tianjin
完成 天津
http://www.pm25.in/chengdu
完成 成都
http://www.pm25.in/nanjing
完成 南京
http://www.pm25.in/xian
完成 西安
http://www.pm25.in/wuhan
完成 武汉
http://www.pm25.in/abazhou
完成 阿坝州
http://www.pm25.in/akesudiqu
完成 阿克苏地区
http://www.pm25.in/alashanmeng
完成 阿拉善盟
http://www.pm25.in/aletaidiqu
完成 阿勒泰地区
http://www.pm25.in/alidiqu
完成 阿里地区
http://www.pm25.in/ankang
完成 安康
http://www.pm25.in/anqing
完成 安庆
http://www.pm25.in/anshan
完成 鞍山
http://www.pm25.in/anshun
完成 安顺
http://www.pm25.in/anyang
完成 安阳
http://www.pm25.in/baicheng
完成 白城
http://www.pm25.in/baise
完成 百色
http://www.pm25.in/baishan
完成 白山
http://www.pm25.in/baiyin
完成 白银
http://www.pm25.in/baoding
完成 保定
http://www.pm25.in/baoji
完成 宝鸡
http://www.pm25.in/baoshan
完成 保山
http://www.pm25.in/baotou
完成 包头
http://www.pm25.in/bayannaoer
完成 巴彦淖尔
http://www.pm25.in/bazhong
完成 巴中
http://www.pm25.in/beihai
完成 北海
http://www.pm25.in/beijing
完成 北京
http://www.pm25.in/bengbu
完成 蚌埠
http://www.pm25.in/benxi
完成 本溪
http://www.pm25.in/bijie
完成 毕节
http://www.pm25.in/binzhou
完成 滨州
http://www.pm25.in/boertala
完成 博州
http://www.pm25.in/bozhou
完成 亳州
http://www.pm25.in/cangzhou
完成 沧州
http://www.pm25.in/changchun
完成 长春
http://www.pm25.in/changde
完成 常德
http://www.pm25.in/changdou
完成 昌都
http://www.pm25.in/changdudiqu
完成 昌都地区
http://www.pm25.in/changjizhou
完成 昌吉州
http://www.pm25.in/changsha
完成 长沙
http://www.pm25.in/changshu
完成 常熟
http://www.pm25.in/changzhi
完成 长治
http://www.pm25.in/changzhou
完成 常州
http://www.pm25.in/chaoyang
完成 朝阳
http://www.pm25.in/chaozhou
完成 潮州
http://www.pm25.in/chengde
完成 承德
http://www.pm25.in/chengdu
完成 成都
http://www.pm25.in/chenzhou
完成 郴州
http://www.pm25.in/chifeng
完成 赤峰
http://www.pm25.in/chizhou
完成 池州
http://www.pm25.in/chongqing
完成 重庆
http://www.pm25.in/chongzuo
完成 崇左
http://www.pm25.in/chuxiongzhou
完成 楚雄州
http://www.pm25.in/chuzhou
完成 滁州
http://www.pm25.in/dalian
完成 大连
http://www.pm25.in/dalizhou
完成 大理州
http://www.pm25.in/dandong
完成 丹东
http://www.pm25.in/daqing
完成 大庆
http://www.pm25.in/datong
完成 大同
http://www.pm25.in/daxinganlingde
完成 大兴安岭地
http://www.pm25.in/daxinganlingdiqu
完成 大兴安岭地区
http://www.pm25.in/dazhou
完成 达州
http://www.pm25.in/dehongzhou
完成 德宏州
http://www.pm25.in/deyang
完成 德阳
http://www.pm25.in/dezhou
完成 德州
http://www.pm25.in/dingxi
完成 定西
http://www.pm25.in/diqingzhou
完成 迪庆州
http://www.pm25.in/dongguan
完成 东莞
http://www.pm25.in/dongying
完成 东营
http://www.pm25.in/eerduosi
完成 鄂尔多斯
http://www.pm25.in/enshizhou
完成 恩施州
http://www.pm25.in/ezhou
完成 鄂州
http://www.pm25.in/fangchenggang
完成 防城港
http://www.pm25.in/foshan
完成 佛山
http://www.pm25.in/fushun
完成 抚顺
http://www.pm25.in/fuxin
完成 阜新
http://www.pm25.in/fuyang
完成 阜阳
http://www.pm25.in/fuyangshi
完成 富阳
http://www.pm25.in/fuzhou
完成 福州
http://www.pm25.in/fuzhoushi
完成 抚州
http://www.pm25.in/gannanzhou
完成 甘南州
http://www.pm25.in/ganzhou
完成 赣州
http://www.pm25.in/ganzicangzuzizhizhou
完成 甘孜藏族自治州
http://www.pm25.in/ganzizhou
完成 甘孜州
http://www.pm25.in/guangan
完成 广安
http://www.pm25.in/guangyuan
完成 广元
http://www.pm25.in/guangzhou
完成 广州
http://www.pm25.in/guigang
完成 贵港
http://www.pm25.in/guilin
完成 桂林
http://www.pm25.in/guiyang
完成 贵阳
http://www.pm25.in/guoluozhou
完成 果洛州
http://www.pm25.in/guyuan
完成 固原
http://www.pm25.in/haerbin
完成 哈尔滨
http://www.pm25.in/haibeizhou
完成 海北州
http://www.pm25.in/haidongdiqu
完成 海东地区
http://www.pm25.in/haikou
完成 海口
http://www.pm25.in/haimen
完成 海门
http://www.pm25.in/hainanzhou
完成 海南州
http://www.pm25.in/haixizhou
完成 海西州
http://www.pm25.in/hamidiqu
完成 哈密地区
http://www.pm25.in/handan
完成 邯郸
http://www.pm25.in/hangzhou
完成 杭州
http://www.pm25.in/hanzhong
完成 汉中
http://www.pm25.in/hebi
完成 鹤壁
http://www.pm25.in/hechi
完成 河池
http://www.pm25.in/hefei
完成 合肥
http://www.pm25.in/hegang
完成 鹤岗
http://www.pm25.in/heihe
完成 黑河
http://www.pm25.in/hengshui
完成 衡水
http://www.pm25.in/hengyang
完成 衡阳
http://www.pm25.in/hetiandiqu
完成 和田地区
http://www.pm25.in/heyuan
完成 河源
http://www.pm25.in/heze
完成 菏泽
http://www.pm25.in/hezhou
完成 贺州
http://www.pm25.in/honghezhou
完成 红河州
http://www.pm25.in/huaian
完成 淮安
http://www.pm25.in/huaibei
完成 淮北
http://www.pm25.in/huaihua
完成 怀化
http://www.pm25.in/huainan
完成 淮南
http://www.pm25.in/huanggang
完成 黄冈
http://www.pm25.in/huangnanzhou
完成 黄南州
http://www.pm25.in/huangshan
完成 黄山
http://www.pm25.in/huangshi
完成 黄石
http://www.pm25.in/huhehaote
完成 呼和浩特
http://www.pm25.in/huizhou
完成 惠州
http://www.pm25.in/huludao
完成 葫芦岛
http://www.pm25.in/hulunbeier
完成 呼伦贝尔
http://www.pm25.in/huzhou
完成 湖州
http://www.pm25.in/jiamusi
完成 佳木斯
http://www.pm25.in/jian
完成 吉安
http://www.pm25.in/jiangmen
完成 江门
http://www.pm25.in/jiangyin
完成 江阴
http://www.pm25.in/jiaonan
完成 胶南
http://www.pm25.in/jiaozhou
完成 胶州
http://www.pm25.in/jiaozuo
完成 焦作
http://www.pm25.in/jiaxing
完成 嘉兴
http://www.pm25.in/jiayuguan
完成 嘉峪关
http://www.pm25.in/jieyang
完成 揭阳
http://www.pm25.in/jilin
完成 吉林
http://www.pm25.in/jimo
完成 即墨
http://www.pm25.in/jinan
完成 济南
http://www.pm25.in/jinchang
完成 金昌
http://www.pm25.in/jincheng
完成 晋城
http://www.pm25.in/jingdezhen
完成 景德镇
http://www.pm25.in/jingmen
完成 荆门
http://www.pm25.in/jingzhou
完成 荆州
http://www.pm25.in/jinhua
完成 金华
http://www.pm25.in/jining
完成 济宁
http://www.pm25.in/jintan
完成 金坛
http://www.pm25.in/jinzhong
完成 晋中
http://www.pm25.in/jinzhou
完成 锦州
http://www.pm25.in/jiujiang
完成 九江
http://www.pm25.in/jiuquan
完成 酒泉
http://www.pm25.in/jixi
完成 鸡西
http://www.pm25.in/jurong
完成 句容
http://www.pm25.in/kaifeng
完成 开封
http://www.pm25.in/kashediqu
完成 喀什地区
http://www.pm25.in/kelamayi
完成 克拉玛依
http://www.pm25.in/kezhou
完成 克州
http://www.pm25.in/kuerle
完成 库尔勒
http://www.pm25.in/kunming
完成 昆明
http://www.pm25.in/kunshan
完成 昆山
http://www.pm25.in/laibin
完成 来宾
http://www.pm25.in/laiwu
完成 莱芜
http://www.pm25.in/laixi
完成 莱西
http://www.pm25.in/laizhou
完成 莱州
http://www.pm25.in/langfang
完成 廊坊
http://www.pm25.in/lanzhou
完成 兰州
http://www.pm25.in/lasa
完成 拉萨
http://www.pm25.in/leshan
完成 乐山
http://www.pm25.in/liangshanzhou
完成 凉山州
http://www.pm25.in/lianyungang
完成 连云港
http://www.pm25.in/liaocheng
完成 聊城
http://www.pm25.in/liaoyang
完成 辽阳
http://www.pm25.in/liaoyuan
完成 辽源
http://www.pm25.in/lijiang
完成 丽江
http://www.pm25.in/linan
完成 临安
http://www.pm25.in/lincang
完成 临沧
http://www.pm25.in/linfen
完成 临汾
http://www.pm25.in/linxiazhou
完成 临夏州
http://www.pm25.in/linyi
完成 临沂
http://www.pm25.in/linzhi
完成 林芝
http://www.pm25.in/linzhidiqu
完成 林芝地区
http://www.pm25.in/lishui
完成 丽水
http://www.pm25.in/liupanshui
完成 六盘水
http://www.pm25.in/liuzhou
完成 柳州
http://www.pm25.in/liyang
完成 溧阳
http://www.pm25.in/longnan

这里数据爬取以及储存完毕!

后续工作接着更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wency(王斯-CUEB)

我不是要饭的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值