一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python使用lxml模塊和Requests模塊抓取HTML頁面的教程

Python使用lxml模塊和Requests模塊抓取HTML頁面的教程

2020-08-23 12:04Kenneth Reitz Python

用Pyhton自帶的urllib或urllib2模塊抓取網頁或許有些陳詞濫調了,今天我們就來玩兒些新鮮的,來看Python使用lxml模塊和Requests模塊抓取HTML頁面的教程:

Web抓取
Web站點使用HTML描述,這意味著每個web頁面是一個結構化的文檔。有時從中 獲取數據同時保持它的結構是有用的。web站點不總是以容易處理的格式, 如 csv 或者 json 提供它們的數據。

這正是web抓取出場的時機。Web抓取是使用計算機程序將web頁面數據進行收集 并整理成所需格式,同時保存其結構的實踐。

lxmlRequests
lxml(http://lxml.de/)是一個優美的擴展庫,用來快速解析XML以及HTML文檔 即使所處理的標簽非常混亂。我們也將使用 Requests (http://docs.python-requests.org/en/latest/#)模塊取代內建的urllib2模塊,因為其速度更快而且可讀性更好。你可以通過使用 pip install lxml 與 pip install requests 命令來安裝這兩個模塊。

讓我們以下面的導入開始:

?
1
2
from lxml import html
import requests

下一步我們將使用 requests.get 來從web頁面中取得我們的數據, 通過使用 html 模塊解析它,并將結果保存到 tree 中。

?
1
2
page = requests.get('http://econpy.pythonanywhere.com/ex/001.html')
tree = html.fromstring(page.text)

tree 現在包含了整個HTML文件到一個優雅的樹結構中,我們可以使用兩種 方法訪問:XPath以及CSS選擇器。在這個例子中,我們將選擇前者。

XPath是一種在結構化文檔(如HTML或XML)中定位信息的方式。一個關于XPath的 不錯的介紹參見 W3Schools 。

有很多工具可以獲取元素的XPath,如Firefox的FireBug或者Chrome的Inspector。 如果你使用Chrome,你可以右鍵元素,選擇 ‘Inspect element',高亮這段代碼, 再次右擊,并選擇 ‘Copy XPath'。

在進行一次快速分析后,我們看到在頁面中的數據保存在兩個元素中,一個是title是 ‘buyer-name' 的div,另一個class是 ‘item-price' 的span:

?
1
2
<div title="buyer-name">Carson Busses</div>
<span class="item-price">$29.95</span>

知道這個后,我們可以創建正確的XPath查詢并且使用lxml的 xpath 函數, 像下面這樣:

?
1
2
3
4
#這將創建buyers的列表:
buyers = tree.xpath('//div[@title="buyer-name"]/text()')
#這將創建prices的列表:
prices = tree.xpath('//span[@class="item-price"]/text()')

讓我們看看我們得到了什么:

?
1
2
3
4
5
6
7
8
9
10
11
12
print 'Buyers: ', buyers
print 'Prices: ', prices
Buyers: ['Carson Busses', 'Earl E. Byrd', 'Patty Cakes',
'Derri Anne Connecticut', 'Moe Dess', 'Leda Doggslife', 'Dan Druff',
'Al Fresco', 'Ido Hoe', 'Howie Kisses', 'Len Lease', 'Phil Meup',
'Ira Pent', 'Ben D. Rules', 'Ave Sectomy', 'Gary Shattire',
'Bobbi Soks', 'Sheila Takya', 'Rose Tattoo', 'Moe Tell']
 
Prices: ['$29.95', '$8.37', '$15.26', '$19.25', '$19.25',
'$13.99', '$31.57', '$8.49', '$14.47', '$15.86', '$11.11',
'$15.98', '$16.27', '$7.50', '$50.85', '$14.26', '$5.68',
'$15.00', '$114.07', '$10.09']

恭喜!我們已經成功地通過lxml與Request,從一個web頁面中抓取了所有我們想要的 數據。我們將它們以列表的形式存在內存中。現在我們可以對它做各種很酷的事情了: 我們可以使用Python分析它,或者我們可以將之保存為一個文件并向世界分享。

我們可以考慮一些更酷的想法:修改這個腳本來遍歷該例數據集中剩余的頁面,或者 使用多線程重寫這個應用從而提升它的速度。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 久久香蕉电影 | 国产a一级毛片午夜剧院 | 国产亚洲精品久久yy5099 | 思思玖玖玖在线精品视频 | 瘦老汉gay | 日韩天堂视频 | 欧洲破处 | 成人在线免费观看 | 青柠影院在线观看免费完整版1 | 国产精品边做边接电话在线观看 | 国产精品视频网 | 亚洲网红精品大秀在线观看 | 国产成人一区二区三区小说 | 日韩视频在线免费观看 | 欧美最猛性xxxxx男男 | 精品视频在线免费播放 | 亚洲 欧美 中文字幕 在线 | 青苹果乐园影院免费观看完整版 | 四虎最新网址在线观看 | 91精品国产亚一区二区三区 | 色橹| 午夜一区二区免费视频 | 嗯啊在线观看免费影院 | 美女视频ww8888网网 | 国产一级在线免费观看 | 夫妻性生活一级黄色片 | 王的视频视ivk | 亚洲国产自拍在线 | 日日摸夜夜爽色婷婷91 | 国产色资源 | 黑人巨大vs北条麻妃在线 | 日韩伦理在线观看 | 女仆掀起蕾丝裙被打屁股作文 | 四川女人偷人真实视频 | 国产目拍亚洲精品一区二区三区 | kisssis无减删全集在线观看 | 91aaa免费免费国产在线观看 | 精品牛牛影视久久精品 | 热久久99精品这里有精品 | 挺进白嫩老师下面视频 | 日本春菜花在线中文字幕 |