requests二次爬取全國郵編
阿新 • • 發佈:2019-01-05
全國郵編的網址:http://www.ip138.com/post/
我們這次是爬取 每一個省裡面的所有郵編資訊
這裡要進行二次爬取,才能完全獲取完資料.
import requests,re
#代理ip
proxy={
"HTTP": "113.3.152.88:8118",
"HTTPS": "219.234.5.128:3128",
}
#偽裝頭資訊
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36' ,
}
#根據正常跳轉獲取網址 分析網址,再進行拼接
# url="http://alexa.ip138.com/post/search.asp?page=503®ionid=2"
url="http://www.ip138.com/post/"
response=requests.get(url,headers=headers,proxies=proxy)
#網址編碼為gbk 所以解碼為gbk不再是utf-8
html=response.content.decode('gb2312')
#提取每個省的連線id碼 用於第二次拼接url 請求
rec=re.compile(r'<a href="/(.*?)/" target="_blank">(.*?)</a>' )
ret=rec.findall(html)
for i in ret:
print("地區:"+i[-1]+" "+"編號:"+i[0])
print()
msg=input("請輸入要查詢地區的編號:")
#拼接url
url_yz="http://www.ip138.com/%s/"%msg
response=requests.get(url_yz,headers=headers,proxies=proxy)
html_place=response.content.decode('gbk')
# print(html_place)
# \u4e00-\u9fa5
# 正則中這個代表匹配所有中文字元
rec_place=re.compile(r'<td>([\u4e00-\u9fa5]*?)</td><td><a href="/.*?/">(.*?)</a></td><td><a href="/.*?/">(.*?)</a></td>')
ret_place=rec_place.findall(html_place)
for i in ret_place:
print("市縣區名:"+i[0]+" 郵政編碼:"+i[1]+" 長途區號:"+i[-1])
這樣就可以完全把所有省市郵編都爬取完畢了