无法获取超链接href美丽汤

我试图获取锚点 (a) 元素的超链接,但我不断得到:

h ttps://in.finance.yahoo.com/h ttps://in.finance.yahoo.com/

https://img.mukewang.com/64fed7310001008c09460196.jpg

我已尝试过此处提供的所有解决方案:链接

这是我的代码:

href_links = []

symbols = []

prices = []

commodities = []


CommoditiesUrl = "https://in.finance.yahoo.com/commodities"

r = requests.get(CommoditiesUrl)

data = r.text

soup = BeautifulSoup(data)


counter = 40

for i in range(40, 404, 14):

    for row in soup.find_all('tbody'):

        for srow in row.find_all('tr'):

            for symbol in srow.find_all('td', attrs={'class':'data-col0'}):

                symbols.append(symbol.text)

                href_link =  soup.find('a').get('href')

                href_links.append('https://in.finance.yahoo.com/' + href_link)

            for commodity in srow.find_all('td', attrs={'class':'data-col1'}):

                 commodities.append(commodity.text)

            for price in srow.find_all('td', attrs={'class':'data-col2'}):

                prices.append(price.text)



pd.DataFrame({"Links": href_links, "Symbol": symbols, "Commodity": commodities, "Prices": prices })

另外,我想知道是否可行,与网站类似,将商品符号作为我的 pandas 数据框中的超链接。

https://img1.mukewang.com/64fed743000183c902940242.jpg

慕尼黑8549860
浏览 51回答 1
1回答

繁星coding

我不确定您发布的代码发生了什么,但您可以通过find将a属性data-symbol设置为 的元素简单地获取该 URL GC=F。html 有 2 个这样的元素。您想要的是第一个,这是 . 返回的内容soup.find('a', {'data-symbol': 'GC=F'}).get('href')。import requests, urllibfrom bs4 import BeautifulSoupCommoditiesUrl = "https://in.finance.yahoo.com/commodities"r = requests.get(CommoditiesUrl)data = r.textsoup = BeautifulSoup(data)gold_href = soup.find('a', {'data-symbol': 'GC=F'}).get('href')# If it is a relative URL, we need to transform it into an absolute URL (it always is, fwiw)if not gold_href.startswith('http'):    # If you insist, you can do 'https://in.finance.yahoo.com" + gold_href    gold_href = urllib.parse.urljoin(CommoditiesUrl, gold_href)print(gold_url)另外,我想知道是否可行,与网站类似,将商品符号作为我的 pandas 数据框中的超链接。我对熊猫不熟悉,但我想说答案是肯定的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5