爬取思路:
1、获取网页信息
2、爬取省市信息,存到列表
3、打印输出列表中的数据
点击查看代码
import requests
from bs4 import BeautifulSoup
import bs4
def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return ""
# 抓取数据,存到列表
def fillCityList(clist, html):
soup = BeautifulSoup(html, "html.parser")
for tr in soup.find('table').children:
if isinstance(tr, bs4.element.Tag):
# 查找tr标签中的td标签,等同于tds = tr.find_all('td')
tds = tr('td')
clist.append([tds[0].string, tds[1].string, tds[2].string])
# 打印和输出数据
def printCityList(clist, num):
# 格式化输出样式
tplt = "{0:^10}\t{1:{3}^10}\t{2:^10}\n"
if num > 34 :
print ('\n省市数量的最大值为34,请重新执行!~~\n')
else :
# 打印并输出到文件,行末加上一个中文的空格符号chr(12288)
f = open('ProvinceCityList.txt','w')
print(tplt.format("序号","省市","简称",chr(12288)))
f.write(tplt.format("序号","省市","简称",chr(12288)))
for i in range(num):
c = clist[i]
print(tplt.format(c[0],c[1],c[2],chr(12288)))
f.write(tplt.format(c[0],c[1],c[2],chr(12288)))
f.close()
print('已输出至文件:ProvinceCityList.txt')
if __name__ == '__main__':
cinfo = []
url = 'http://www.tcmap.com.cn/list/jiancheng_list.html'
html = getHTMLText(url)
fillCityList(cinfo, html)
printCityList(cinfo, 34) # 输出前34个省市
点击查看代码
序号 省市 简称
1 北京 京
2 天津 津
3 河北 冀
4 山西 晋
5 内蒙古 蒙
6 辽宁 辽
7 吉林 吉
8 黑龙江 黑
9 上海 沪
10 江苏 苏
11 浙江省 浙
12 安徽 皖
13 福建 闽
14 江西 赣
15 山东 鲁
16 河南 豫
17 湖北 鄂
18 湖南 湘
19 广东 粤
20 广西 桂
21 海南 琼
22 重庆 渝
23 四川 川
24 贵州 黔
25 云南 滇
26 * 藏
27 陕西 陕
28 甘肃省 甘
29 青海 青
30 宁夏 宁
31 * 新
32 * 台
33 香港特别行政区 港
34 澳门 澳
已输出至文件:ProvinceCityList.txt