基於python的批量網頁爬蟲


       在各個網站,較久遠的天氣信息基本需要付費購買,因此為了花費更少的代價,得到完整的信息,我們經常會對一個網站進行爬蟲,這篇文章是我第一次爬蟲的心得,因為是第一次進行爬蟲,python程序運行時間較長,若有錯誤,請大佬指出。

       爬取網站https://en.tutiempo.net/climate/ws-567780.html上昆明每月的平均天氣信息。以昆明1942年7月為例,觀測網站https://en.tutiempo.net/climate/07-1942/ws-567780.html,可以發現,綠色代表月份,藍色代表年份,我們需要爬取的信息是1942年到2019年每月的信息。即https://en.tutiempo.net/climate/01-1942/ws-567780.html到https://en.tutiempo.net/climate/12-2019/ws-567780.html每個網頁上圖1紅框內的信息。

圖1

       F12觀測網頁結構如圖2,找到該紅框所對應的代碼(html小白可以把鼠標放在代碼上,出現的藍筐即為該代碼所構成的網頁模塊)。

圖2

       發現紅框對應的網頁代碼如圖3所示:

圖3

       因此構造python字符匹配代碼:

'<td class="tc2">(.*)</td><td class="tc3">(.*)</td><td class="tc4">(.*)</td><td class="tc5">(.*)</td><td class="tc6">(.*)</td><td class="tc7">(.*)</td><td class="tc8">(.*)</td><td class="tc9">(.*)</td><td class="tc10">(.*)</td><td>&nbsp;</td><td>(.*)</td><td>(.*)</td><td>(.*)</td><td>(.*)</td>'

       構造出的整體python代碼如下:

import requests
import re
from xlwt import *

book = Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1') #創建一個sheet
for j in range(78):
# 一共78年
for k in range(12):
# 一共12個月
print(j,k)
try:
# 匹配字符串
word2 = '<td class="tc2">(.*)</td><td class="tc3">(.*)</td><td class="tc4">(.*)</td><td class="tc5">(.*)</td><td class="tc6">(.*)</td><td class="tc7">(.*)</td><td class="tc8">(.*)</td><td class="tc9">(.*)</td><td class="tc10">(.*)</td><td>&nbsp;</td><td>(.*)</td><td>(.*)</td><td>(.*)</td><td>(.*)</td>'
# 在1到9月前面加個0
if(k<9):
url = "https://en.tutiempo.net/climate/0{}-{}/ws-567780.html".format(k + 1, j + 1942)
else:
url = "https://en.tutiempo.net/climate/{}-{}/ws-567780.html".format(k + 1, j + 1942)
f = requests.get(url) # Get該網頁從而獲取該html內容
str = f.content.decode()
# 返回查找到的數據
wordlist2 = re.findall(re.compile(word2), str)
for i in range(13):
# 將數據存入book中
print(wordlist2[0][i])
a = j*12+k
sheet.write(a, i, label=wordlist2[0][i])
except:
print()
# 將book保存到表格里
book.save("weather.xls")

       運行后得到的excel表格見圖5,經過ctrl+F進行字符替換和excel表的數據-分列-完成操作后,得到表格見圖6,進行一些修飾,見圖7表格。

 

圖5

 

圖6

 

圖7

        最后,本篇文章乃作者原創,禁止將本篇文章內容用於商業用途,若需轉載請標明出處。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM