2015-10-13 47 views
2

我正在嘗試編寫一個python腳本,它解析網站中的一個元素,並將其打印出來。從網站使用python獲取元素而無需打開瀏覽器

我不知道如何實現這個,沒有seleniumwebdiver,爲了打開一個瀏覽器,處理腳本來正確顯示網站。

from selenium import webdriver 
browser = webdriver.Firefox() 
browser.get('http://groceries.asda.com/asda-webstore/pages/landing/home.shtml#!product/910000800509') 
content = browser.page_source 
print(content[42000:43000]) 
browser.close() 

這只是一個粗略的草案,將打印內容,包括利息<span class="prod-price-inner">£13.00</span>的元素。

如何在沒有瀏覽器打開的情況下獲取感興趣的元素,甚至不使用瀏覽器?

編輯:我以前試過用urllibbashwget,這既缺乏必要的JavaScript解釋。

+0

你能用php嗎? –

+0

我打算創建一個小的Python腳本。 –

+0

好吧,我正在努力:)我會稍微發表我的答案。只是爲了確保我做對了,你需要價格元素,對吧? –

回答

2

至於其他的答案中提到,此網頁需要JavaScript來呈現內容,所以你不能簡單地通過lxmlBeautiful Soup或類似的庫來獲取和處理頁面。但有很多方法可以獲得您想要的信息。

我注意到您提供的鏈接以結構化的方式從內部API獲取數據。根據網址顯示產品編號爲910000800509。如果您查看Chrome開發工具(或您的瀏覽器的等效開發工具)中的網絡選項卡,則會看到正在對以下網址發出GET請求:http://groceries.asda.com/api/items/view?itemid=910000800509

您可以請求像這樣只用jsonrequests模塊:

import json 
import requests 

url = 'http://groceries.asda.com/api/items/view?itemid=910000800509' 
r = requests.get(url) 
price = r.json()['items'][0]['price'] 

print price 
£13.00 

這也使您可以訪問到許多有關產品的其他信息,因爲請求返回一些JSON與產品的詳細信息。

+0

優雅,簡約而實用! –

+0

我想知道您是如何找到GET請求的。此外,此產品編號爲'910000456105'似乎不起作用,我總是從URL http:// groceries得到價格'£0.00'。 asda.com/product/canned-lagers/tennents-lager/910000456105' .. 除此之外,完美! –

+0

我想編輯我的評論,但爲時已晚。看起來產品目前不可用,因此價格。 –

相關問題