我正在尝试为ML分类项目提取股票的部门。如果我转到以下页面:
https://www.six-swiss-exchange.com/shares/security_info_en.html?id=CH0012221716CHF4
我(在屏幕上)获得了有关此股票的一些信息(它改变了,使用id代码 - 我只选择列表中的第一个)。但是,没有任何信息可用于常规请求。 (html页面主要包含javascript函数)
我需要的是“股票详情”标签(页面底部的ICB Supersector)。定期请求再也没有任何内容可用。我查看了当单击此选项卡时所发生的情况,并且所需的请求位于URL:
中但是,如果我直接使用此URL,我会从请求中收到403错误,但是从浏览器开始工作。我通常对这类事情没有任何问题,但在这种情况下,我是否必须提交cookie或任何其他信息才能访问该页面 - 无需登录,可以从任何浏览器轻松访问。
我在想1)向有效的网址发出第一个请求,2)存储他们发送给你的cookie(我不知道该怎么做)和3)向所需网址发出第二个请求。这会有用吗?
我尝试使用request.session(),但我不确定这是否是解决方案,或者我是否正确实现了它。
如果有人处理过这类问题,我会很乐意解决这个问题。感谢。
答案 0 :(得分:1)
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