【发布时间】:2020-12-13 08:19:30
【问题描述】:
我正在尝试通过 python 的requests 模拟以下浏览器操作:
- 登陆https://www.bundesanzeiger.de/pub/en/to_nlp_start
- 点击“更多搜索选项”
- 点击复选框“同时查找历史数据”(对应于 POST 参数:
isHistorical: true) - 点击“搜索净空头头寸”按钮
- 点击“Als CSV herunterladen”按钮下载csv文件
这是我必须模拟的代码:
import requests
import re
s = requests.Session()
r = s.get("https://www.bundesanzeiger.de/pub/en/to_nlp_start", verify=False, allow_redirects=True)
matches = re.search(
r'form class="search-form" id=".*" method="post" action="\.(?P<appendtxt>.*)"',
r.text
)
request_url = f"https://www.bundesanzeiger.de/pub/en{matches.group('appendtxt')}"
sr = session.post(request_url, data={'isHistorical': 'true', 'nlp-search-button': 'Search net short positions'}, allow_redirects=True)
然而,即使sr 给了我一个status_code 200,当我检查sr.url 时它确实是一个错误,它显示https://www.bundesanzeiger.de/pub/en/error-404?9
再深入一点,我注意到上面的 request_url 解析为类似
https://www.bundesanzeiger.de/pub/en/nlp;wwwsid=EFEB15CD4ADC8932A91BA88B561A50E9.web07-pub?0-1.-nlp~filter~form~panel-form
但是当我在 Chrome 中检查请求 url 时,它实际上是
https://www.bundesanzeiger.de/pub/en/nlp?87-1.-nlp~filter~form~panel-form`
这里的87 似乎发生了变化,表明它是某个会话 ID,但是当我使用 requests 执行此操作时,它似乎无法正确解析。
知道我在这里缺少什么吗?
【问题讨论】:
标签: python session web-scraping python-requests session-cookies