国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

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

2020-01-04 17:28:01
字體:
來源:轉載
供稿:網友
用Pyhton自帶的urllib或urllib2模塊抓取網頁或許有些陳詞濫調了,今天我們就來玩兒些新鮮的,來看Python使用lxml模塊和Requests模塊抓取HTML頁面的教程:
 

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

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

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

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

from lxml import htmlimport requests

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

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:

<div style="margin: 0px; padding: 0px; line-height: 25.2px; width: 660px; overflow: hidden; clear: both;">		
#這將創建buyers的列表:buyers = tree.xpath('//div[@title="buyer-name"]/text()')#這將創建prices的列表:prices = tree.xpath('//span[@class="item-price"]/text()')

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

print 'Buyers: ', buyersprint 'Prices: ', pricesBuyers: ['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分析它,或者我們可以將之保存為一個文件并向世界分享。

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 新沂市| 黔江区| 莱西市| 三河市| 双峰县| 镇平县| 祥云县| 呈贡县| 三亚市| 阜新市| 娱乐| 镇赉县| 隆子县| 景德镇市| 陈巴尔虎旗| 海晏县| 阿巴嘎旗| 水富县| 门头沟区| 河南省| 靖安县| 新安县| 江山市| 凭祥市| 巢湖市| 安达市| 田林县| 阳泉市| 闵行区| 宁波市| 朝阳区| 吕梁市| 上杭县| 柳林县| 红原县| 攀枝花市| 台北县| 肥东县| 临澧县| 古浪县| 安阳市|