[英]Python — Beautiful Soup — Returning Information if a tag is empty or has values
我決定學習 Python,因為我現在有更多時間(由於大流行)並且一直在自學 Python。
我正在嘗試從網站上獲取稅率,並且幾乎可以獲得我需要的一切。 下面是來自我的Soup變量的代碼片段以及 Python 的相關部分。
我遇到困難的地方是我找到了option
標簽以及空的data-alias
(“”)。 但是,如果您查看下面的代碼,就會發現一些非空的data-alias
階段(請參閱阿聯酋或英國) ——它們列出了一些國家/地區。
我也希望從中獲取data-url
和國家/地區名稱。
當我丟失一些必需的信息時,如何編碼以獲得空標簽和非空標簽?
謝謝,賽斯
我的代碼:
import requests
from bs4 import BeautifulSoup
import re
l=[]
r = requests.get("https://taxsummaries.pwc.com/")
c=r.content
soup = BeautifulSoup(c, "html.parser")
all = soup.find_all("option", {"data-alias":""})
網站信息:
<option data-alias="" data-id="c9ddd85e-f3dc-4661-a4cb-8101f4644871" data-url="https://taxsummaries.pwc.com:443/uganda">Uganda</option> <option data-alias="" data-id="d21e8abe-784c-4617-a90e-5369b49a202f" data-url="https://taxsummaries.pwc.com:443/ukraine">Ukraine</option> <option data-alias="UAE" data-id="9e3f5e7b-f110-47dd-95d8-3d8160466e4a" data-url="https://taxsummaries.pwc.com:443/united-arab-emirates">United Arab Emirates</option> <option data-alias="Great Britain UK Britain Whales Northern Ireland England" data-id="3c42b2a9-7ed6-4b19-821d-5d78ef6f2b5d" data-url="https://taxsummaries.pwc.com:443/united-kingdom">United Kingdom</option>
這是一種方式,它還會向您介紹其他一些可能感興趣的 Python 主題(正如您提到的那樣,您正在學習):
all = soup.find_all("option", {"data-alias":True})
results=[]
for item in all:
results.append({item.text:item['data-url']})
注釋:
soup.find_all("option", {"data-alias":True})
- 這將找到所有具有data-alias
屬性的option
標簽,無論其值如何results
是將 scope 中的記錄添加到 ( results.append
) 的list
{item.text:item['data-url']}
- 這是一個字典,其中鍵是國家名稱( item.text
),值是 data-url 屬性( item['data-url']
)編寫結果列表的等效(更緊湊)方式是使用列表推導的概念。
results=[{item.text:item['data-url']} for item in all]
您需要使用{"data-alias":True}
。 你可以試試:
import requests
from bs4 import BeautifulSoup
l=[]
r = requests.get("https://taxsummaries.pwc.com/")
c=r.content
soup = BeautifulSoup(c, "html.parser")
options = soup.find_all('option', {"data-alias":True})
for each in options:
print("country_name : " + str(each.text), " data-url : " + str(each['data-url']))
Output 將是:
country_name : Albania data-url : https://taxsummaries.pwc.com:443/albania
country_name : Algeria data-url : https://taxsummaries.pwc.com:443/algeria
country_name : Angola data-url : https://taxsummaries.pwc.com:443/angola
country_name : Argentina data-url : https://taxsummaries.pwc.com:443/argentina
country_name : Armenia data-url : https://taxsummaries.pwc.com:443/armenia
country_name : Australia data-url : https://taxsummaries.pwc.com:443/australia
country_name : Austria data-url : https://taxsummaries.pwc.com:443/austria
country_name : Azerbaijan data-url : https://taxsummaries.pwc.com:443/azerbaijan
country_name : Bahrain data-url : https://taxsummaries.pwc.com:443/bahrain
country_name : Barbados data-url : https://taxsummaries.pwc.com:443/barbados
country_name : Belarus data-url : https://taxsummaries.pwc.com:443/belarus
country_name : Belgium data-url : https://taxsummaries.pwc.com:443/belgium
country_name : Bermuda data-url : https://taxsummaries.pwc.com:443/bermuda
country_name : Bolivia data-url : https://taxsummaries.pwc.com:443/bolivia
country_name : Bosnia and Herzegovina data-url : https://taxsummaries.pwc.com:443/bosnia-and-herzegovina
country_name : Botswana data-url : https://taxsummaries.pwc.com:443/botswana
country_name : Brazil data-url : https://taxsummaries.pwc.com:443/brazil
country_name : Bulgaria data-url : https://taxsummaries.pwc.com:443/bulgaria
and so on ......
獲取list
:
for each in options:
l.append( str(each.text)+ " : " + str(each['data-url']))
print(l)
Output 將是:
['Albania : https://taxsummaries.pwc.com:443/albania', 'Algeria : https://taxsummaries.pwc.com:443/algeria', 'Angola : https://taxsummaries.pwc.com:443/angola', 'Argentina : https://taxsummaries.pwc.com:443/argentina', 'Armenia : https://taxsummaries.pwc.com:443/armenia', 'Australia : https://taxsummaries.pwc.com:443/australia', 'Austria : https://taxsummaries.pwc.com:443/austria', 'Azerbaijan : https://taxsummaries.pwc.com:443/azerbaijan', 'Bahrain : https://taxsummaries.pwc.com:443/bahrain', 'Barbados : https://taxsummaries.pwc.com:443/barbados', 'Belarus : https://taxsummaries.pwc.com:443/belarus', 'Belgium : https://taxsummaries.pwc.com:443/belgium', 'Bermuda : https://taxsummaries.pwc.com:443/bermuda', 'Bolivia : https://taxsummaries.pwc.com:443/bolivia', 'Bosnia and Herzegovina : https://taxsummaries.pwc.com:443/bosnia-and-herzegovina', 'Botswana : https://taxsummaries.pwc.com:443/botswana', 'Brazil : https://taxsummaries.pwc.com:443/brazil', 'Bulgaria : https://taxsummaries.pwc.com:443/bulgaria', 'Cabo Verde : https://taxsummaries.pwc.com:443/cabo-verde', 'Cambodia : https://taxsummaries.pwc.com:443/cambodia', 'Cameroon, Republic of : https://taxsummaries.pwc.com:443/republic-of-cameroon',
and so on............]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.