通过链接,我尝试创建两个列表:一个用于国家/地区,另一个用于货币。但是,我陷入了困境,它只给了我第一个国家/地区名称,但没有迭代到所有国家/地区的列表。任何有关如何解决此问题的帮助将不胜感激。提前致谢。
这是我的尝试:
from bs4 import BeautifulSoup
import urllib.request
url = "http://www.worldatlas.com/aatlas/infopage/currency.htm"
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X
10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80
Safari/537.36'}
req = urllib.request.Request(url, headers=headers)
resp = urllib.request.urlopen(req)
html = resp.read()
soup = BeautifulSoup(html, "html.parser")
attr = {"class" : "miscTxt"}
countries = soup.find_all("div", attrs=attr)
countries_list = [tr.td.string for tr in countries]
for country in countries_list:
print(country)
您还可以使用单个理解列表来制作元组列表,例如[(country, currency)]
& 然后将元组转换为 2 个列表地图和邮政编码 https://stackoverflow.com/a/21867333/2614364 :
temp_list = [
(t[0].text.strip(), t[1].text.strip())
for t in (t.find_all('td') for t in countries[0].find_all('tr'))
if t
]
countries_list, currency_list = map(list,zip(*temp_list))
完整代码:
from bs4 import BeautifulSoup
import urllib.request
req = urllib.request.Request("http://www.worldatlas.com/aatlas/infopage/currency.htm")
soup = BeautifulSoup(urllib.request.urlopen(req).read(), "html.parser")
countries = soup.find_all("div", attrs = {"class" : "miscTxt"})
temp_list = [
(t[0].text.strip(), t[1].text.strip())
for t in (t.find_all('td') for t in countries[0].find_all('tr'))
if t
]
countries_list, currency_list = map(list,zip(*temp_list))
print(countries_list)
print(currency_list)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)