Python網絡爬蟲之獲取網絡數據
Python 語言的優勢在於其功能強大,可以用於網絡數據采集、數據分析等各種應用場景。本篇文章將介紹如何使用 Python 獲取網絡數據、使用 requests 庫、編寫爬蟲代碼以及使用 IP 代理。
使用 Python 獲取網絡數據
使用 Python 語言從互聯網上獲取數據是一項非常常見的任務。Python 有一個名為 requests 的庫,它是一個 Python 的 HTTP 客戶端庫,用於向 Web 服務器發起 HTTP 請求。
我們可以通過以下代碼使用 requests 庫向指定的 URL 發起 HTTP 請求:
import requests response = requests.get('<http://www.example.com>')
其中,response
對象將包含服務器返回的響應。使用 response.text
可以獲取響應的文本內容。
此外,我們還可以使用以下代碼獲取二進制資源:
import requests response = requests.get('<http://www.example.com/image.png>') with open('image.png', 'wb') as f: f.write(response.content)
使用 response.content
可以獲取服務器返回的二進制數據。
編寫爬蟲代碼
爬蟲是一種自動化程序,可以通過網絡爬取網頁數據,並將其存儲在數據庫或文件中。爬蟲在數據采集、信息監控、內容分析等領域有著廣泛的應用。Python 語言是爬蟲編寫的常用語言,因為它具有簡單易學、代碼量少、庫豐富等優點。
我們以“豆瓣電影”為例,介紹如何使用 Python 編寫爬蟲代碼。首先,我們使用 requests 庫獲取網頁的 HTML 代碼,然後將整個代碼看成一個長字符串,使用正則表達式的捕獲組從字符串提取需要的內容。
豆瓣電影 Top250 頁面的地址是 https://movie.douban.com/top250?start=0
,其中 start
參數表示從第幾個電影開始獲取。每頁共展示瞭 25 部電影,如果要獲取 Top250 數據,我們共需要訪問 10 個頁面,對應的地址是 https://movie.douban.com/top250?start=xxx
,這裡的 xxx
如果為 0
就是第一頁,如果 xxx
的值是 100
,那麼我們可以訪問到第五頁。
我們以獲取電影的標題和評分為例,代碼如下所示:
import re import requests import time import random for page in range(1, 11): resp = requests.get( url=f'<https://movie.douban.com/top250?start=>{(page - 1) * 25}', headers={'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'} ) # 通過正則表達式獲取class屬性為title且標簽體不以&開頭的span標簽並用捕獲組提取標簽內容 pattern1 = re.compile(r'<span class="title">([^&]*?)</span>') titles = pattern1.findall(resp.text) # 通過正則表達式獲取class屬性為rating_num的span標簽並用捕獲組提取標簽內容 pattern2 = re.compile(r'<span class="rating_num".*?>(.*?)</span>') ranks = pattern2.findall(resp.text) # 使用zip壓縮兩個列表,循環遍歷所有的電影標題和評分 for title, rank in zip(titles, ranks): print(title, rank) # 隨機休眠1-5秒,避免爬取頁面過於頻繁 time.sleep(random.random() * 4 + 1)
在上述代碼中,我們通過正則表達式獲取標簽體為標題和評分的 span 標簽,並用捕獲組提取標簽內容。使用 zip
壓縮兩個列表,循環遍歷所有電影標題和評分。
使用 IP 代理
許多網站對爬蟲程序比較反感,因為爬蟲程序會耗費掉它們很多的網絡帶寬,並制造很多無效的流量。為瞭隱匿身份,通常需要使用 IP 代理來訪問網站。商業 IP 代理(如蘑菇代理、芝麻代理、快代理等)是一個好的選擇,使用商業 IP 代理可以讓被爬取的網站無法獲取爬蟲程序來源的真實 IP 地址,從而無法簡單的通過 IP 地址對爬蟲程序進行封禁。
以蘑菇代理為例,我們可以在該網站註冊一個賬號,然後購買相應的套餐來獲得商業 IP 代理。蘑菇代理提供瞭兩種接入代理的方式,分別是 API 私密代理和 HTTP 隧道代理,前者是通過請求蘑菇代理的 API 接口獲取代理服務器地址,後者是直接使用統一的代理服務器 IP 和端口。
使用 IP 代理的代碼如下所示:
import requests proxies = { 'http': '<http://username:password@ip>:port', 'https': '<https://username:password@ip>:port' } response = requests.get('<http://www.example.com>', proxies=proxies)
其中,username
和 password
分別是蘑菇代理賬號的用戶名和密碼,ip
和 port
分別是代理服務器的 IP 地址和端口號。註意,不同的代理提供商的接入方式可能不同,需要根據實際情況進行相應的修改。
總結
本文介紹瞭 Python 獲取網絡數據、使用 requests 庫、編寫爬蟲代碼以及使用 IP 代理的方法。Python 的 requests 庫非常方便,可以幫助我們快速訪問網絡資源。編寫爬蟲程序需要掌握正則表達式、HTTP 協議等知識,同時需要註意爬取速度和頻率,以避免對被爬取網站造成負擔。最後,使用 IP 代理可以幫助我們隱匿身份,保護我們的網絡安全。
到此這篇關於Python網絡爬蟲之獲取網絡數據的文章就介紹到這瞭,更多相關Python獲取網絡數據內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!