簡體   English   中英

使用Python從HTML元素生成列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM