最佳實(shí)踐:python數據采集 爬蟲(chóng)_python爬蟲(chóng)數據采集
優(yōu)采云 發(fā)布時(shí)間: 2022-12-25 05:45最佳實(shí)踐:python數據采集 爬蟲(chóng)_python爬蟲(chóng)數據采集
近年來(lái),python的流行度特別火爆! 在大學(xué)期間,我也進(jìn)行了一些深入的學(xué)習。 畢業(yè)后,我也嘗試過(guò)將python作為自己的職業(yè)方向。 雖然我沒(méi)有如愿成為一名python工程師,但是掌握python也讓我現在的工作發(fā)展和職業(yè)發(fā)展更加得心應手。 便利。 這篇文章主要和大家分享一下我對python爬蟲(chóng)的收獲和感悟。
Python爬蟲(chóng)是大家最熟悉的python應用方式。 由于python擁有豐富的第三方開(kāi)發(fā)庫,可以進(jìn)行很多工作:如web開(kāi)發(fā)(django)、應用程序開(kāi)發(fā)(tkinter、wxpython、qt)、數據統計和計算(numpy)、圖形圖像處理、深度學(xué)習,人工智能等。我平時(shí)用python爬蟲(chóng)(結合tkinter開(kāi)發(fā)爬蟲(chóng)應用),用django開(kāi)發(fā)一些小的個(gè)人網(wǎng)站。 django框架可以根據實(shí)體類(lèi)自動(dòng)生成管理端,大大提高了系統的開(kāi)發(fā)效率。 有興趣的朋友可以試試。
一個(gè)成功的爬蟲(chóng)需要對應一個(gè)標準化的網(wǎng)站。 爬蟲(chóng)主要是為了方便我們獲取數據。 如果目標系統的開(kāi)發(fā)不規范,沒(méi)有規則,很難定制一套規則用爬蟲(chóng)爬,爬蟲(chóng)基本都是定制的。 需要針對不同的系統進(jìn)行調整。
爬蟲(chóng)爬取數據的第一步網(wǎng)站分析目標網(wǎng)站的技術(shù)和數據結構(通過(guò)前端源代碼)。 你可以使用chrome瀏覽器。 目前python爬蟲(chóng)主要面對以下三個(gè)網(wǎng)站:
1、前后臺網(wǎng)站分離
前端通過(guò)傳參訪(fǎng)問(wèn)接口,后端返回json數據。 對于這類(lèi)網(wǎng)站,python可以模擬瀏覽器前端,發(fā)送參數然后接收數據,從而完成爬蟲(chóng)數據的目的
2.靜態(tài)網(wǎng)站
通過(guò)python的第三方庫(requests、urllib)下載源碼,通過(guò)xpath和regular匹配數據
3.動(dòng)態(tài)網(wǎng)站
如果使用第二種方式,下載的源碼就是簡(jiǎn)單的html,源碼中是沒(méi)有數據的,因為這樣的動(dòng)態(tài)網(wǎng)站需要加載js,源碼中才會(huì )有數據。 對于這樣的網(wǎng)站,可以使用自動(dòng)化測試工具selenium 。
爬蟲(chóng)步驟:
網(wǎng)站技術(shù)及目標數據結構分析
根據第一步的分析結構,選擇相應的技術(shù)策略
抓取數據
提高性能,提高操作舒適度(結合客戶(hù)端技術(shù)為爬蟲(chóng)定制界面)
按需清洗數據
數據存儲,存儲到數據庫,文檔等。
防撿機制:
1.當系統判斷屬于同一個(gè)ip的客戶(hù)端多次訪(fǎng)問(wèn)不間斷時(shí),會(huì )拒絕該ip的訪(fǎng)問(wèn)
解決辦法:動(dòng)態(tài)代理,不斷改變訪(fǎng)問(wèn)目標系統的ip,或者從免費ip代理網(wǎng)站抓取ip,建立ip池。 如果目標數據量不大,可以降低訪(fǎng)問(wèn)速度,避免反拾取
2.目標系統需要注冊登錄才能訪(fǎng)問(wèn)
解決方法:利用python的第三方庫(Faker)生成假的登錄名、密碼和*敏*感*詞*,實(shí)現自動(dòng)注冊登錄
3、需要處理目標系統中目標數據頁(yè)的鏈接,才能進(jìn)入目標數據頁(yè)進(jìn)行訪(fǎng)問(wèn)
解決方法:無(wú)法正常訪(fǎng)問(wèn)目標網(wǎng)站目標數據頁(yè)的鏈接。 需要研究頁(yè)面中的js腳本,對鏈接進(jìn)行處理。 我個(gè)人在通過(guò)搜狗瀏覽器爬取微信文章時(shí)遇到過(guò)這個(gè)問(wèn)題。 爬取的文章鏈接需要通過(guò)js腳本進(jìn)行拼接,才能獲取正確的鏈接地址
從哪里獲取目標數據:
通過(guò)xpath獲取數據的位置,可以使用chrome瀏覽器調試功能獲取對應數據的xpath路徑
通過(guò)正則匹配
python爬蟲(chóng)常用的第三方庫:
urllib/requests 請求庫
Faker 生成假數據
UserAgent 生成虛假標頭
etree, beautsoup 匹配數據
json 處理json數據
正規圖書(shū)館
Selenium 自動(dòng)化測試庫
sqlite3數據庫python3自帶
抓取靜態(tài)網(wǎng)頁(yè)數據:
導入請求
from fake_useragent import UserAgent #provide fake request header
from lxml import etree #匹配數據
#抓取目標頁(yè)面的url
url='***ip****:8085/pricePublic/house/public/index'
headers = {'User-Agent': str(UserAgent().random)}
響應=請求。 得到(網(wǎng)址,標題=標題)
# 獲取網(wǎng)頁(yè)源代碼
內容=響應.文本
html = etree. HTML(內容)
#使用xpath查找對應標簽處的元素值,pageNum在這里爬取對應頁(yè)面的頁(yè)碼
pageNum=html.xpath('//*[@id="dec"]/div[2]/div/span[1]/text()')
爬取前后端分離系統的數據:
導入 json
導入請求
#獲取返回的響應
url='***ip***/FindById/22'
響應 = 請求。 得到(網(wǎng)址)
#通過(guò)json庫解析json得到返回的數據
DataNode = json.loads(response.text).get('返回數據').get('數據')[0]
抓取動(dòng)態(tài)數據:
以下代碼示例使用 Google 瀏覽器,使用 selenium 庫,并將瀏覽器設置為無(wú)頭模式。 爬蟲(chóng)會(huì )配合瀏覽器在后臺模擬人工操作。 爬蟲(chóng)會(huì )根據代碼中定義的xpath地址,在瀏覽器中找到相應的位置執行操作,使用selenium爬取數據時(shí),需要安裝相應版本的瀏覽器驅動(dòng)
導入請求
從 faker 導入 Faker
從 fake_useragent 導入 UserAgent
從 lxml 導入 etree
url='***ip***/FindById/22'
# 通過(guò)faker庫獲取假郵箱和電話(huà)號碼
fake=Fakeer('zh_CN')
電子郵件=假的。 電子郵件()
tel=fake.phone_number()
數據={
“電子郵件”:電子郵件
}
#使用requests庫發(fā)送post請求
響應=請求。 post(url, data, headers=headers)
代碼=響應.status_code
內容=響應.文本
#獲取返回的cookies并轉化為字典
cookies = requests.utils.dict_from_cookiejar(response.cookies)
#請求時(shí)帶上cookie
response=requests.get(url, headers=headers, cookies=cookies)
作為一個(gè)合法的公民,爬蟲(chóng)只是一種技術(shù)。 當我們使用它來(lái)爬取目標數據時(shí),我們必須遵守一定的規則。 每個(gè)網(wǎng)站的根目錄下都會(huì )有一個(gè)robots.txt(爬蟲(chóng)協(xié)議)文件,它規定了那些網(wǎng)頁(yè)可以被訪(fǎng)問(wèn),并且在爬取公共信息數據時(shí),不能對目標系統造成嚴重的破壞。 因此,我們呼吁大家在使用各種技術(shù)開(kāi)展工作的過(guò)程中,遵守各種技術(shù)法規和制度規范。 ,共同營(yíng)造你我他文明的網(wǎng)絡(luò )環(huán)境!
操作方法:數據爬取方法
目前采集數據主要有三種方式:使用有財云軟件爬取數據,優(yōu)采云采集器,使用優(yōu)采云寫(xiě)程序爬取
1.優(yōu)采云也是一個(gè)知名的采集工具。 它有兩個(gè)版本,一個(gè)是免費采集模板,一個(gè)是云采集(付費)。
免費的采集模板其實(shí)就是內容采集規則,包括電子商務(wù)、生活服務(wù)、社交媒體、論壇網(wǎng)站等,使用起來(lái)非常采集。
您也可以自己自定義任務(wù)。 配置好采集任務(wù)后,就可以交給有財優(yōu)采云的云端進(jìn)行采集了。 優(yōu)采云共有5000臺服務(wù)器。 通過(guò)云端多節點(diǎn)并發(fā)采集,采集速度遠超本地采集。 另外可以自動(dòng)切換多個(gè)IP,避免IP被封影響采集。
云采集的功能非常方便。 很多時(shí)候IP自動(dòng)切換和云采集是自動(dòng)化采集的關(guān)鍵。
2.有優(yōu)采云采集器已有13年的歷史,是一款老牌的采集工具。 它不僅可以用作爬蟲(chóng),還可以用于數據清洗、數據分析、數據挖掘和可視化。 該數據源適用于絕大部分網(wǎng)頁(yè),通過(guò)采集規則抓取網(wǎng)頁(yè)中可見(jiàn)的內容。
3、在Python爬蟲(chóng)中,基本上有3個(gè)進(jìn)程。
(1)使用Requests來(lái)抓取內容。 我們可以使用Requests庫來(lái)爬取網(wǎng)頁(yè)信息。 Requests庫可以說(shuō)是Python爬蟲(chóng)的利器,也就是Python的HTTP庫。 通過(guò)這個(gè)庫來(lái)爬取網(wǎng)頁(yè)中的數據是非常方便的,可以幫我們節省很多時(shí)間。
(2) 使用XPath 解析內容。 XPath是XML Path的縮寫(xiě),即XML Path Language。 它是一種用于確定XML文檔中某部分位置的語(yǔ)言,在開(kāi)發(fā)中常用作小型查詢(xún)語(yǔ)言。 XPath 可以按元素和屬性按位置索引。
(3) 使用Pandas 保存數據。 Pandas 是一種高級數據結構,可以使數據分析變得更加容易。 我們可以使用 Pandas 來(lái)保存爬取的數據。 最后通過(guò)Pandas寫(xiě)入XLS或MySQL等數據庫。
初學(xué)者推薦使用優(yōu)采云采集工具,簡(jiǎn)單易用
具體案例:
需求一:采集一些目標博主發(fā)帖