城市定量化研究-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
这里数据爬取以及储存完毕!
后续工作接着更新