爬蟲是一件很有趣的事情,就像黑客一樣,和服務器對抗,服務器維護代碼防止爬蟲,我們通過各種bug解決爬蟲困難,真實有趣!今天給大家帶來一串代碼,針對網頁中的表格爬取,表格頁碼變化,而鏈接url不變的情況1
首先給出爬取的原文鏈接:
https://d.qianzhan.com/yuanqu/
接下來一步一步解釋一下代碼:
#導入所需庫文件 import requests import pandas as pd import csv
代碼核心
上面三個庫文件是本次爬蟲所需的主要庫,requests庫向網站發送請求,請求成功則返回響應狀態碼為200,否則為400或者404,pandas庫可以用來直接抓取表格數據,csv庫用來將文件保存在本地csv文件內。
#這裡爬取的表格為廣東省的數據表格 areas = ['廣東省'] #寫入鏈接url urls = ['https://d.qianzhan.com/yuanqu/?p={}'.format(str)for str in areas] x = 0 for url in urls: #打開csv文件,在第一行寫入標題 with open('前瞻.csv', 'a', newline='', encoding='utf-8-sig') as csvfile: w = csv.writer(csvfile) # 寫入標題或稱之為變量 w.writerow(['序號', '園區名稱', '省份', '城市', '佔地面積', '企業數', '詳情']) # 對錶格的全部頁數進行抓取 for i in range(1, 33): # 跳頁 # 在網頁源代碼找到頁碼的屬性,這裡頁碼在屬性page上 data = { 'page': i } # 對網站發送請求,獲得響應 s = requests.session() d = s.get(url, params=data) # 抓取html表格 tb = pd.read_html(d.text)[1] # 將抓取來的表格填入csv文件內 tb.to_csv(r'前瞻.csv', mode='a', encoding='utf_8_sig', header=0, index=0) # 每抓取玩一個省份,打印出抓取結果,給用戶更好體驗 print(areas[x], "已經抓取完成!請到本地文檔中查看抓取結果!") x = x+1 # 全部抓取完成,則打印'全部抓取完畢!' print('全部抓取完畢!')
結果分析
最終成功抓取到所有表格的內容,並存入了csv文件內,大家有問題可以下方留言討論!