爬虫练习1:爬取省市信息

爬取思路:

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
上一篇:运行python文件报SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 2-3: tr


下一篇:AtCoder Beginner Contest 221 E - LEQ (计数,线段树)