這篇文章將為大家詳細(xì)講解有關(guān)如何使用Python3爬取全國(guó)地址信息,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個(gè)參考,希望大家閱讀完這篇文章后對(duì)相關(guān)知識(shí)有一定的了解。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了廣安免費(fèi)建站歡迎大家使用!#!C:\Users\12550\AppData\Local\Programs\Python\Python37\python.exe # -*- coding: utf-8 -*- from urllib.request import urlopen from bs4 import BeautifulSoup import pymysql import urllib.request import re from urllib.error import URLError, HTTPError conn = pymysql.connect(host='127.0.0.1', user='root', passwd='root', db='test', charset='utf8') db = conn.cursor() curr_url = '' # 請(qǐng)求網(wǎng)頁 def get_html(url): global curr_url user_agent = 'Mozilla/6.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.6796.99 Safari/537.36' response = urllib.request.Request(url) response.add_header('User-Agent', user_agent) response = urllib.request.urlopen(response) html = BeautifulSoup(response.read(), "html.parser", from_encoding='gbk') return html def get_list(url, level=1, pid=0, get_level=2): data = []; level_arr = {'1': 'provincetr', '2': 'citytr', '3': 'countytr', '4': 'towntr', '5': 'villagetr'} try: print(url) html = get_html(url) c_url = url tr_list = html.findAll('tr', {'class': level_arr[str(level)]}) for tr in tr_list: region_name, href, page = '', '', '' td_list = tr.findAll('td') for td in td_list: region_name = td.get_text(); # 判斷是否存在該省份 if (level == 1): sql = "select * from region where region_name='" + region_name + "'" db.execute(sql) exist = db.fetchone() if(exist): continue # 判斷是否全數(shù)字-非法則跳過 if (region_name.isdigit()): continue if (region_name): sql = "insert into region(region_name,pid,level,url) value('" + region_name + "','" + str( pid) + "','" + str(level) + "','" + url + "')" db.execute(sql) db.execute('SELECT LAST_INSERT_ID();') last_id = db.fetchone()[0] if (td.a): page = td.a.attrs['href'] pattern = re.compile(r'\w*.html') url = re.sub(pattern, page, c_url) if (level <= get_level): get_list(url, level + 1, last_id) # 每個(gè)省份執(zhí)行完成,則提交 if (level == 1): conn.commit() return data; except HTTPError as e: # 如果有出錯(cuò),則回滾 conn.rollback() print(e) # HTTP Error 502: Proxy Error url = 'http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2017/index.html' get_list(url) print('執(zhí)行完成')
關(guān)于如何使用Python3爬取全國(guó)地址信息就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
網(wǎng)站標(biāo)題:如何使用Python3爬取全國(guó)地址信息-創(chuàng)新互聯(lián)
URL分享:http://jinyejixie.com/article16/depjgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站維護(hù)、小程序開發(fā)、域名注冊(cè)、用戶體驗(yàn)、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容