從爬取的頁面獲取所需信息
這個需要用到Python的解析庫lxml和xpath的知識,不知道的同學請自行百度,菜鳥或者w3c都有,十分鐘就能搞定個大概,剩下的還是實戰磨合比較好
話不多說,先確定目標,還是那個網站,我們先來爬取一張首頁展示的一個套圖的標題和點進去的url鏈接
就這個吧,含蓄點,不然我怕會出事(尷尬的笑了笑)
首先讓我們按下F12,定位到標題和鏈接的位置
哦,巧了,注意一下下面的紅方框,兩者竟然在一起
那方便了,xpath路徑大差不差
接下來上代碼,不過這裏我就不爬取這一個了,而是把這一頁的所有標題和鏈接都爬出來(話說哪有爬蟲只爬一個呢,我還不如右鍵複製粘貼)
import requests #請求庫用於發送請求
from lxml import html
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
def GetMessage(url):
page = requests.get(url=url,headers=headers) #也可以直接url,不過這裏習慣了url=
tree = html.fromstring(page.text) #把那些html按照結構排一下,類似於目錄結構吧
title = tree.xpath('//span/a/text()')
name = tree.xpath('//span/a/@href')
print(title)
print(name)
if __name__ == '__main__':
url = 'https://www.mzitu.com'
GetMessage(url)
數據出來了,但是這個看着怎麼這麼違和呢?
我們稍微調整一下吧
import requests #請求庫用於發送請求
from lxml import html
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36'
}
def GetMessage(url):
page = requests.get(url=url,headers=headers) #也可以直接url,不過這裏習慣了url=
tree = html.fromstring(page.text) #把那些html按照結構排一下,類似於目錄結構吧
title = tree.xpath('//span/a/text()')
url = tree.xpath('//span/a/@href')
message = []
for i in range(len(title)):
mess = {'title': title[i],'url':url[i]}
message.append(mess)
print(message)
if __name__ == '__main__':
url = 'https://www.mzitu.com'
GetMessage(url)
看,這個數據格式是不是就看着舒服了?