[英]Generate a list from HTML elements using Python
我正在使用Selenium和BeautifulSoup從Wikipedia頁面創建一些列表。 當我查看頁面源代碼時,我想從中獲取信息的鏈接總是被構造為:
<li><a href="/wiki/town_name,_California" title="town_name, California">town_name, state</a></li>
您可以單擊標簽中的鏈接,該鏈接會將您定向到該鎮的Wiki頁面。 永遠是/wiki/town_name,_California
我想在Python中使用for循環來查找具有此結構的每個項目,但不清楚如何編寫正則表達式。 我試過了:
my_link = "//wiki//*,California"
和
my_link = "//wiki//*,_California"
但是當我嘗試運行時:
br.find_element_by_link_text(my_link)
這些返回了類似的錯誤:
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"link text","selector":"//wiki//*,_California"}
我也嘗試過:
import selenium, time
import html5lib
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
pg_src = br.page_source.encode("utf")
soup = BeautifulSoup(pg_src)
br = webdriver.Chrome()
url = "http://somewikipage.org"
br.get(url)
lnkLst = []
for lnk in br.find_element_by_partial_link_text(",_California"):
lnkLst.append(lnk)
並得到了:
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"partial link text","selector":",_California"}
有什么辦法可以糾正此代碼,以便建立目標鏈接列表?
閱讀CSS選擇器,它們是您的朋友。 我認為以下應該起作用。
hrefs = [a.href for a in soup.select('li a[href^="/wiki/"]')]
正如您在問題中提到的那樣, br.find_element_by_partial_link_text(",_California")
無法正常工作是因為,_California
您提供的HTML
,_California
實際上不是link_text
。
根據您的問題,我們需要找到包含屬性href="/wiki/town_name,_California"
的<a>
href="/wiki/town_name,_California"
。 因此,您可以使用以下任一選項:
css_selector
:
br.find_element_by_css_selector("a[href=/wiki/town_name,_California]")
xpath
:
br.find_element_by_xpath("//a[@href='/wiki/town_name,_California']")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.