如何使用Python機械化單擊像下面的圖像?單擊具有特定名稱的圖像
<a href="..."><img name="next" id="next" src="..."></a>
我知道要點擊的圖像的名稱和ID。我需要以某種方式識別父鏈接並點擊它。我怎麼能夠?
紅利問題:如何檢查是否有這樣的圖像?
如何使用Python機械化單擊像下面的圖像?單擊具有特定名稱的圖像
<a href="..."><img name="next" id="next" src="..."></a>
我知道要點擊的圖像的名稱和ID。我需要以某種方式識別父鏈接並點擊它。我怎麼能夠?
紅利問題:如何檢查是否有這樣的圖像?
與使用機械化相比,使用bs4(beautifulsoup 4)非常簡單。
from bs4 import BeautifulSoup
import urllib2
text = urllib2.urlopen("http://yourwebpage.com/").read()
soup = BeautifulSoup(text)
img = soup.find_all('img',{'id':'next'})
if img:
a_tag = img[0].parent
href = a_tag.get('href')
print href
檢索父標籤是很容易與BS4,因爲它用的find_all
功能找到當然的標籤後無外乎.parent
發生。 由於見下文。find_all
函數返回一個數組,因此最好在將來做if img:
,但由於這可能不適用於您的網站,因此可以安全地執行此操作。
編輯:我已經改變了代碼,以包括「獎金問題」,這是我在上面描述的替代。
對於你的獎勵問題 - 我會說你可以使用BeautifulSoup來檢查img元素是否工作。你可以使用urllib來查看圖像是否存在(至少,服務器是否會傳遞給你 - 否則你會得到一個錯誤)。
您還可以查看this thread有人比我更聰明 - 似乎在討論一個名爲SpiderMonkey的庫和無法單擊按鈕進行機械化。
好了,我不知道如何使用機械化做到這一點,但我知道如何使用lxml
做:
,假設我們的網頁上有這樣的代碼: <a href="page2.html"><img name="bla bla" id="next" src="Cat.jpg"></a>
。使用lxml
我們會寫這樣的代碼:
from lxml import html
page = urlllib2.urlopen('http://example.com')
tree = html.fromstring(page.read())
link = tree.xpath('//img[@id="next"]/ancestor::a/attribute::href')
大部分的魔法發生在tree.xpath
功能,在這裏你定義你正在尋找先用//img[@id="next"]
的形象,那麼你指定你要尋找的a
標記就在它之前:/ancestor::a
並且您正在尋找特別是href
屬性:/attribute::href
。鏈接變量現在將包含一個匹配該查詢的字符串列表 - 在這種情況下,鏈接[0]將是page2.html
- 您可以urlopen()
,因此有效地點擊它。
對於//img[@id="next"]
部分,您可以使用其他屬性,例如://img[@name="bla bla"]
,它會很好地工作。你只需要考慮哪種屬性更適合這種情況。
我知道這個答案不使用機械化,但是我希望它是一個有用的指針。祝你好運!
圖像放置在哪裏?在一個網站上,在一個GUI或第三個地方? – Evilunclebill
@Evilunclebill在網站上。 – yasar
然後我不能幫你,因爲我沒有python與web工作的知識:-)試着看看這個:http://docs.python.org/2/library/htmlparser.html?highlight=html#HTMLParser – Evilunclebill