python爬蟲——爬取網頁數據和解析數據


1.網絡爬蟲的基本概念

網絡爬蟲(又稱網絡蜘蛛,機器人),就是模擬客戶端發送網絡請求,接收請求響應,一種按照一定的規則,自動地抓取互聯網信息的程序。
只要瀏覽器能夠做的事情,原則上,爬蟲都能夠做到。

2.網絡爬蟲的功能

 

  圖2

網絡爬蟲可以代替手工做很多事情,比如可以用於做搜索引擎,也可以爬取網站上面的圖片,比如有些朋友將某些網站上的圖片全部爬取下來,集中進行瀏覽,同時,網絡爬蟲也可以用於金融投資領域,比如可以自動爬取一些金融信息,並進行投資分析等。

有時,我們比較喜歡的新聞網站可能有幾個,每次都要分別打開這些新聞網站進行瀏覽,比較麻煩。此時可以利用網絡爬蟲,將這多個新聞網站中的新聞信息爬取下來,集中進行閱讀。

有時,我們在瀏覽網頁上的信息的時候,會發現有很多廣告。此時同樣可以利用爬蟲將對應網頁上的信息爬取過來,這樣就可以自動的過濾掉這些廣告,方便對信息的閱讀與使用。

有時,我們需要進行營銷,那么如何找到目標客戶以及目標客戶的聯系方式是一個關鍵問題。我們可以手動地在互聯網中尋找,但是這樣的效率會很低。此時,我們利用爬蟲,可以設置對應的規則,自動地從互聯網中采集目標用戶的聯系方式等數據,供我們進行營銷使用。

有時,我們想對某個網站的用戶信息進行分析,比如分析該網站的用戶活躍度、發言數、熱門文章等信息,如果我們不是網站管理員,手工統計將是一個非常龐大的工程。此時,可以利用爬蟲輕松將這些數據采集到,以便進行進一步分析,而這一切爬取的操作,都是自動進行的,我們只需要編寫好對應的爬蟲,並設計好對應的規則即可。

除此之外,爬蟲還可以實現很多強大的功能。總之,爬蟲的出現,可以在一定程度上代替手工訪問網頁,從而,原先我們需要人工去訪問互聯網信息的操作,現在都可以用爬蟲自動化實現,這樣可以更高效率地利用好互聯網中的有效信息。
3.安裝第三方庫

在進行爬取數據和解析數據前,需要在Python運行環境中下載安裝第三方庫requests。

在Windows系統中,打開cmd(命令提示符)界面,在該界面輸入pip install requests,按回車鍵進行安裝。(注意連接網絡)如圖3

 

 

 

 圖3

安裝完成,如圖4

 

 

 

 圖4

4.爬取淘寶首頁

 1 # 請求庫
 2 import requests
 3 # 用於解決爬取的數據格式化
 4 import io
 5 import sys
 6 sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
 7 # 爬取的網頁鏈接
 8 r= requests.get("https://www.taobao.com/")
 9 # 類型
10 # print(type(r))
11 print(r.status_code)
12 # 中文顯示
13 # r.encoding='utf-8'
14 r.encoding=None
15 print(r.encoding)
16 print(r.text)
17 result = r.text

運行結果,如圖5

 圖5

 

5.爬取和解析淘寶網首頁

 1 # 請求庫
 2 import requests
 3 # 解析庫
 4 from bs4 import BeautifulSoup
 5 # 用於解決爬取的數據格式化
 6 import io
 7 import sys
 8 sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf-8')
 9 # 爬取的網頁鏈接
10 r= requests.get("https://www.taobao.com/")
11 # 類型
12 # print(type(r))
13 print(r.status_code)
14 # 中文顯示
15 # r.encoding='utf-8'
16 r.encoding=None
17 print(r.encoding)
18 print(r.text)
19 result = r.text
20 # 再次封裝,獲取具體標簽內的內容
21 bs = BeautifulSoup(result,'html.parser')
22 # 具體標簽
23 print("解析后的數據")
24 print(bs.span)
25 a={}
26 # 獲取已爬取內容中的script標簽內容
27 data=bs.find_all('script')
28 # 獲取已爬取內容中的td標簽內容
29 data1=bs.find_all('td')
30 # 循環打印輸出
31 for i in data:
32     a=i.text
33     print(i.text,end='')
34     for j in data1:
35         print(j.text)

運行結果,如圖6

 

 

 

 

圖6

7.小結

在對網頁代碼進行爬取操作時,不能頻繁操作,更不要將其設置成死循環模式(每一次爬取則為對網頁的訪問,頻繁操作會導致系統崩潰,會追究其法律責任)。

所以在獲取網頁數據后,將其保存為本地文本模式,再對其進行解析(不再需要訪問網頁)。

打賞

免責聲明!

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



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