Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.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_Python Requests - Fatal编程技术网

使用python请求访问页面时出现问题

使用python请求访问页面时出现问题,python,python-requests,Python,Python Requests,我试图为一个ML分类项目提取股票的扇区。如果我转到下一页: 我在屏幕上看到一些关于这只股票的信息,这些信息随着id代码的变化而变化——我只选择了列表中的第一只。但是,这些信息在定期请求时都不可用。html页面主要包含javascript函数 我需要的是页面底部的共享详细信息选项卡ICB Supersector。再一次,常规请求中没有可用的内容。我查看了单击此选项卡时发生的情况,所需的请求位于url中: HTTP/1.1 然而,如果我直接使用这个url,我会从请求中得到一个403错误,但是可以从浏

我试图为一个ML分类项目提取股票的扇区。如果我转到下一页:

我在屏幕上看到一些关于这只股票的信息,这些信息随着id代码的变化而变化——我只选择了列表中的第一只。但是,这些信息在定期请求时都不可用。html页面主要包含javascript函数

我需要的是页面底部的共享详细信息选项卡ICB Supersector。再一次,常规请求中没有可用的内容。我查看了单击此选项卡时发生的情况,所需的请求位于url中:

HTTP/1.1

然而,如果我直接使用这个url,我会从请求中得到一个403错误,但是可以从浏览器中工作。我通常不会对这类事情有任何问题,但在这种情况下,我是否必须提交cookies或任何其他信息才能访问该页面?无需登录,并且可以从任何浏览器轻松访问该页面

我在想,1对有效的url发出第一个请求,2存储他们发送给你的cookie,我真的不知道怎么做,3对所需的url发出第二个请求。这样行吗

我尝试使用request.session,但我不确定这是解决方案还是正确实现了它

如果有人处理过这类问题,我希望能找到解决这类问题的方法。谢谢

from urllib.parse import urljoin

import requests
from bs4 import BeautifulSoup

BASE_URL = 'https://www.six-swiss-exchange.com'


def get_page_html(isin):
    params = {
        'id': isin,
        'portalSegment': 'EQ'
    }
    r = requests.get(
        '{}/shares/info_details_en.html'.format(BASE_URL),
        params=params
    )
    r.raise_for_status()
    return r.text


def get_supersector_info(soup):
    supersector = soup.find('td', text='ICB Supersector').next_sibling.a
    return {
        'link': urljoin(BASE_URL, supersector['href']),
        'text': supersector.text
    }


if __name__ == '__main__':
    page_html = get_page_html('CH0012221716CHF4')
    soup = BeautifulSoup(page_html, 'lxml')
    supersector_info = get_supersector_info(soup)
控制台:

https://www.six-swiss-exchange.com/search/quotes_en.html?security=C2700T
Industrial Goods & Services

这太好了,非常感谢!如果我想把那个页面的所有html都放在一个“汤”里呢。如果不可能,那没关系,因为我可以以同样的方式提取任何其他信息行业和子部门。我对这类事情没有你那么精通,但我对你的回答感到足够满意,可以继续进行。我意识到我的请求中缺少的是param portalSegment:EQ。也就是说,我想了解更多关于API调用的信息,因为它们确实更容易处理。再次提前感谢-答案已被接受。我也在网络小报上看到过。它们包含生成图表的数据。我感兴趣的领域是html文件。但是有了合适的参数,我现在就可以得到它们了。谢谢你!