爬虫练习2:爬取省市信息(增加地址信息)

爬取思路:

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,baseURL):
    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')
            # 查找第二个td标签中的a标签,并获取a标签属性为href的值,即为相对网址
            cURL = tds[1].find('a').attrs.get('href')
            #一级网址加上相对网址几位绝对网址
            cityURL = baseURL + cURL 
            clist.append([tds[0].string, tds[1].string, tds[2].string,cityURL])

# 打印和输出数据 
def printCityList(clist, num):
    tplt = "{0:^10}\t{1:{4}^10}\t{2:^10}\t{3:^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],c[3],chr(12288)))
            f.write(tplt.format(c[0],c[1],c[2],c[3],chr(12288)))
        f.close()
        print('已输出至文件:ProvinceCityList.txt')
     
if __name__ == '__main__':
    cinfo = []
    baseURL='http://www.tcmap.com.cn' #一级网址
    cityListURL = baseURL + '/list/jiancheng_list.html'
    html = getHTMLText(cityListURL)
    fillCityList(cinfo, html,baseURL)
    printCityList(cinfo,34) # 输出前34个省市
输出结果:
点击查看代码
    序号    	    省市    	    简称    	   具体网址   

    1     	    北京    	    京     	http://www.tcmap.com.cn/beijing/

    2     	    天津    	    津     	http://www.tcmap.com.cn/tianjin/

    3     	    河北    	    冀     	http://www.tcmap.com.cn/hebei/

    4     	    山西    	    晋     	http://www.tcmap.com.cn/shanxisheng/

    5     	   内蒙古    	    蒙     	http://www.tcmap.com.cn/neimenggu/

    6     	    辽宁    	    辽     	http://www.tcmap.com.cn/liaoning/

    7     	    吉林    	    吉     	http://www.tcmap.com.cn/jilin/

    8     	   黑龙江    	    黑     	http://www.tcmap.com.cn/heilongjiang/

    9     	    上海    	    沪     	http://www.tcmap.com.cn/shanghai/

    10    	    江苏    	    苏     	http://www.tcmap.com.cn/jiangsu/

    11    	   浙江省    	    浙     	http://www.tcmap.com.cn/zhejiangsheng/

    12    	    安徽    	    皖     	http://www.tcmap.com.cn/anhui/

    13    	    福建    	    闽     	http://www.tcmap.com.cn/fujian/

    14    	    江西    	    赣     	http://www.tcmap.com.cn/jiangxi/

    15    	    山东    	    鲁     	http://www.tcmap.com.cn/shandong/

    16    	    河南    	    豫     	http://www.tcmap.com.cn/henan/

    17    	    湖北    	    鄂     	http://www.tcmap.com.cn/hubei/

    18    	    湖南    	    湘     	http://www.tcmap.com.cn/hunan/

    19    	    广东    	    粤     	http://www.tcmap.com.cn/guangdong/

    20    	    广西    	    桂     	http://www.tcmap.com.cn/guangxi/

    21    	    海南    	    琼     	http://www.tcmap.com.cn/hainan/

    22    	    重庆    	    渝     	http://www.tcmap.com.cn/chongqing/

    23    	    四川    	    川     	http://www.tcmap.com.cn/sichuan/

    24    	    贵州    	    黔     	http://www.tcmap.com.cn/guizhou/

    25    	    云南    	    滇     	http://www.tcmap.com.cn/yunnan/

    26    	    *    	    藏     	http://www.tcmap.com.cn/Tibet/

    27    	    陕西    	    陕     	http://www.tcmap.com.cn/shanxi/

    28    	   甘肃省    	    甘     	http://www.tcmap.com.cn/gansusheng/

    29    	    青海    	    青     	http://www.tcmap.com.cn/qinghai/

    30    	    宁夏    	    宁     	http://www.tcmap.com.cn/ningxia/

    31    	    *    	    新     	http://www.tcmap.com.cn/*/

    32    	    *    	    台     	http://www.tcmap.com.cn/*/

    33    	 香港特别行政区  	    港     	http://www.tcmap.com.cn/HongKong/

    34    	    澳门    	    澳     	http://www.tcmap.com.cn/Macau/

已输出至文件:ProvinceCityList.txt
上一篇:git基本设置


下一篇:数据采集与融合技术-实验1