Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法得到美味的汤_Python_Html_Beautifulsoup - Fatal编程技术网

Python 无法得到美味的汤

Python 无法得到美味的汤,python,html,beautifulsoup,Python,Html,Beautifulsoup,我正在尝试获取锚点(a)元素的超链接,但我不断获得: https://in.finance.yahoo.com/h ttps://in.finance.yahoo.com/ 我已经尝试了这里提供的所有解决方案: 这是我的密码: href_links = [] symbols = [] prices = [] commodities = [] CommoditiesUrl = "https://in.finance.yahoo.com/commodities" r = requests.get

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

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

我已经尝试了这里提供的所有解决方案:

这是我的密码:

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 })
此外,我想知道是否可行,类似于网站,在我的熊猫数据框中将商品的符号作为超链接


我不确定你发布的代码是怎么回事,但是你可以通过
查找
一个属性为
数据符号
设置为
GC=F
元素来获取该URL。html有两个这样的元素。您想要的是第一个,它是由
soup.find('a',{'data-symbol':'GC=F'})返回的。get('href')

此外,我想知道是否可行,类似于网站,在我的熊猫数据框中将商品的符号作为超链接


我不熟悉熊猫,但我会说答案是肯定的。请参阅:

最外层的
for
环路到底是用来做什么的<范围(4040414)中的i的code>:循环体中甚至没有引用i
i
import requests, urllib

from bs4 import BeautifulSoup

CommoditiesUrl = "https://in.finance.yahoo.com/commodities"
r = requests.get(CommoditiesUrl)
data = r.text
soup = 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)