簡體   English   中英

如何通過 python 中的解析提取 html 中的字符串值

[英]How to extract string value in html with parsing in python

我正在嘗試獲取每個鏈接的字符串值。 (例如,像賓夕法尼亞州)

 <li class="facetbox-shownrow ">
    <a href="/bill/116th-congress/house-bill/9043/cosponsors?r=1&amp;s=1&amp;q=%7B%22search%22%3A%5B%22H.R.9043%22%2C%22H.R.9043%22%5D%2C%22cosponsor-state%22%3A%22Pennsylvania%22%7D" title="include this search constraint" id="facetItemcosponsor-statePennsylvania">
        Pennsylvania        <span id="facetItemcosponsor-statePennsylvaniacount" class="count">[1]</span>    </a>
</li>
   </a> 

但是由於有title和id屬性,我對如何做有點困惑。 當我顯示我的數組時,我得到一個 null 結果。 這是我的代碼:

  for link in links_array:

    main_url_link = base_url_link + link
    html_page_link = requests.get(main_url_link)
    soup_link = BeautifulSoup(html_page_link.text, 'html.parser')
    allData_link = soup_link.findAll('li',{'class':'facetbox-shownrow'})
  
    distric = [y.text_content() for y in allData_link]
    district_array.append(distric)


district_array 

使用.stripped_strings在您的選擇中生成元素字符串列表並選擇/切片結果 - 在這種情況下選擇第一個元素以獲取賓夕法尼亞州

[list(x.stripped_strings)[0] for x in soup.find_all('li',{'class':'facetbox-shownrow'})]

注意在新代碼中應該使用find_all()findAll()實際上仍然有效,但語法非常老舊

要獲取href

[x.a['href'] for x in soup.find_all('li',{'class':'facetbox-shownrow'})]

例子

帶有多個li標簽:

from bs4 import BeautifulSoup

html="""
<li class="facetbox-shownrow ">
    <a href="/bill/116th-congress/house-bill/9043/cosponsors?r=1&amp;s=1&amp;q=%7B%22search%22%3A%5B%22H.R.9043%22%2C%22H.R.9043%22%5D%2C%22cosponsor-state%22%3A%22Pennsylvania%22%7D" title="include this search constraint" id="facetItemcosponsor-statePennsylvania">
        Pennsylvania        <span id="facetItemcosponsor-statePennsylvaniacount" class="count">[1]</span>    </a>
</li>
<li class="facetbox-shownrow ">
    <a href="/bill/116th-congress/house-bill/9043/cosponsors?r=1&amp;s=1&amp;q=%7B%22search%22%3A%5B%22H.R.9043%22%2C%22H.R.9043%22%5D%2C%22cosponsor-state%22%3A%22Pennsylvania%22%7D" title="include this search constraint" id="facetItemcosponsor-statePennsylvania">
        Main        <span id="facetItemcosponsor-statePennsylvaniacount" class="count">[1]</span>    </a>
</li>
<li class="facetbox-shownrow ">
    <a href="/bill/116th-congress/house-bill/9043/cosponsors?r=1&amp;s=1&amp;q=%7B%22search%22%3A%5B%22H.R.9043%22%2C%22H.R.9043%22%5D%2C%22cosponsor-state%22%3A%22Pennsylvania%22%7D" title="include this search constraint" id="facetItemcosponsor-statePennsylvania">
        California        <span id="facetItemcosponsor-statePennsylvaniacount" class="count">[1]</span>    </a>
</li>
"""
soup=BeautifulSoup(html,"html.parser")

[list(x.stripped_strings)[0] for x in soup.find_all('li',{'class':'facetbox-shownrow'})]

Output

['Pennsylvania', 'Main', 'California']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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