[英]Pull text from webpage using selenium not working
我正在嘗試從網頁中提取一些文本。 我要從中提取數據的頁面源是:
<tbody>
<tr class="drx_dotted">
<td class="drx_first">
<span name="pharmacy"
longitude="-82.531457"
latitude="42.617612"
pharmacyname="CVS Pharmacy #"
address="1025 St Clair River Dr"
city="Algonac"
state="MI"
zip="48001"
phone="8107944941">
</span>
<p>
<strong>CVS Pharmacy #</strong><br />
1025 St Clair River Dr<br />
Algonac, MI 48001<br />
1-810-794-4941
</p>
<p>
<a class=""
data-ajax="true"
data-ajax-method="post"
data-ajax-success="UpdateSearchPharmacyList"
href="/pfdn/SharedPharmacy/AddNetworkPharmacy?pharmacyNABP=2352324&language=English">Add Pharmacy
<span class='HiddenText'> CVS Pharmacy #</span>
</a>
</p>
</td>
<td>
<p>
Retail
</p>
</td>
<td>
<p>
Not applicable
</p>
</td>
</tr>
我想將“不適用”拉到HTML代碼底部附近。 它是HTML源代碼中第三個“ td”中的“ p”。 還有很多,所以我想一次將所有這些標簽拉入python列表中。
這是我用來查找HTML的硒代碼:
x = driver.find_elements_by_xpath(
'//[@id="divSearchResultContainer"]/div[2]/div[2]/table/tbody/tr/td[3]/p')
當我鍵入print(x)時,它會打印出以下內容:
[<selenium.webdriver.remote.webelement.WebElement object at 0x101f98210>,
<selenium.webdriver.remote.webelement.WebElement object at 0x101f98250>,
<selenium.webdriver.remote.webelement.WebElement object at 0x101f98290>]
因此,硒已經找到並提取了三個實例(這是正確的,應該可以找到三個實例)。 但是,當我嘗試使用來拉文本時;
print x[0].text
輸出為:
None
我嘗試了很多變化,甚至嘗試單獨查找每個元素,但是仍然無法正常工作。 有人遇到過這個問題嗎? 我該如何解決?
謝謝
問題是您有多個tr
標簽,請獲取適當的標簽。 使用find_element_by_xpath()
查找單個元素而不是列表,並使用以下xpath:
'//[@id="divSearchResultContainer"]/div[2]/div[2]/table/tbody/tr[1]/td[3]/p
python代碼:
element = driver.find_elements_by_xpath(
'//[@id="divSearchResultContainer"]/div[2]/div[2]/table/tbody/tr[1]/td[3]/p')
注意tr
之后的[1]
。 這就是我們所說的只看第一個tr
標簽。
還要注意的是, xpath
你看起來脆弱-這是因為使用索引的:給我第二次div
在這個div,然后第二次div
在等發布與元素的完整內容divSearchResultContainer
ID將有助於您提供有更好的解決方案。
對xpath嘗試一下,我還沒有測試過,但是xpath具有last()運算符,這是您想要的。
"//tbody//tr//td[last()]/p[last()]/text()"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.