python 爬蟲新手教程
一、什么是爬蟲
爬蟲就是把一個網站里的內容讀取下來
這里我們就要學習一個知識
我們看到的網頁是有一種叫HTML的語言編寫的
他可以給文字顯示不同的樣式
如:<p>hello</p> 就會顯示段落:hello
二、如何獲取網頁的內容
一般爬蟲不會把網頁內容爬下來
而是把網頁源代碼爬下來
就好比說:hello 會爬到 <p>hello</p>
如果要在瀏覽器上看源代碼
只需在網頁上右鍵點擊 選擇查看網頁源代碼即可
那么怎么用python把源代碼爬下來呢?
這是要下載一個模塊
在cmd里輸入:
pip install requests
然后就可以用模塊requests爬網頁了
import requests # 導入模塊 url = 'https://sina.com.cn' # 要爬的網址 html = requests.get(url) # 獲取網頁源代碼 print(html.text) # 輸出 注:需要text函數來返回源代碼
輸出:

細心的人可以看到后面的代碼有編碼問題

要把代碼轉成utf-8中文編碼
import requests url = 'https://sina.com.cn' html = requests.get(url) html.encoding = 'utf-8' # 將編碼設為utf-8中文編碼 print(html.text)
輸出

三、分析源代碼
最后要在源代碼中篩選出我們要的數據
需要用到模塊 lxml
在cmd里輸入:
pip install lxml
然后就要使用lxml來篩選數據
import requests from lxml import etree url = 'https://sina.com.cn' html = requests.get(url) html.encoding = 'utf-8' element = etree.HTML(html.text) # 獲取html result = element.xpath('//a/text()') # 進行篩選 for i in result: print(i) # 輸出
輸出:

其中核心語句是
result = element.xpath('//a/text()')
而 //a/text() 的意思是獲取所以的a標簽的值
而常用的xpath語法如下
nodename 選取此節點的所有子節點
/ 從當前節點選取直接子節點
// 從當前節點選取子孫節點
. 選取當前節點
.. 選取當前節點的父節點
@ 選取屬性
* 通配符,選擇所有元素節點與元素名
@* 選取所有屬性
[@attrib] 選取具有給定屬性的所有元素
[@attrib='value'] 選取給定屬性具有給定值的所有元素
[tag] 選取所有具有指定元素的直接子節點
[tag='text'] 選取所有具有指定元素並且文本內容是text節點
四、篩選實例
如果要在sina.com.cn讀取部分新聞

那么要在鍵盤上按下F12
點左上角的按鈕

鼠標懸停在新聞上再點擊
在代碼欄中找新聞

再找到所有新聞的父元素

這里可以看到ul的class為list-a news_top
在python中寫:
import requests from lxml import etree url = 'https://sina.com.cn' html = requests.get(url) html.encoding = 'utf-8' element = etree.HTML(html.text) result = element.xpath('//ul[@class="list-a news_top"]//a/text()') # 進行篩選 for i in result: print(i)
輸出

