【问题标题】:Python Requests / Sessions using generated cookie使用生成的 cookie 的 Python 请求/会话
【发布时间】:2017-05-29 04:28:56
【问题描述】:

我正在尝试创建一个检查开放课程的机器人,该网页使用在访问该网站时设置的 cookie。但是我似乎无法通过我的代码使用请求/会话来复制它。

它应该做什么:

  1. 访问link 1(创建cookie)(搜索页面)
  2. 访问link 2,其中包括 URL 中的搜索词(搜索结果)
  3. 在浏览器中完成后,链接 2 应显示搜索结果

问题:

  • 我可以创建cookie访问链接1
  • 但不能与包含搜索词的链接 2 一起使用
  • 这会导致加载相同的第一个链接(搜索页面)

这是我尝试过的一些示例代码:

s = requests.Session()
# create the cookie using first link
r = s.get(url)

# r2 should be search results
r2 = s.post(urlWithSearchTerms, cookies=r.cookies)

# parse html etc, however loads wrong page
data = r2.text
soup = BeautifulSoup(data,"html.parser")
print(soup.prettify())

它仍然加载第一页,而不是加载搜索结果。

我还尝试了包含 r.headers、使用 session.post(url)、使用无会话等。

如何让 python 加载第二页?

谢谢!

【问题讨论】:

  • 你应该分析浏览器会话发送的 HTTP 请求,看看你缺少什么
  • 我认为您需要向 urlWithSearchTerms 发送 GET 而不是 POST。另外,我根本不明白为什么你甚至需要一个 cookie。我可以在不发送任何 cookie 的情况下点击 urlWithSearchTerms 并获得搜索结果。
  • @corey 那是用浏览器吗?如果是这样,当您删除 cookie 并重试时,它不会加载搜索结果 urlWithSearchTerms
  • 尝试get而不是post
  • @corey 非常感谢,辛苦了!

标签: python python-requests session-cookies


【解决方案1】:

您正在发送一个 HTTP POST 请求,您应该发送一个 GET。

改变这一行:

r2 = s.post(urlWithSearchTerms, cookies=r.cookies)

到:

r2 = s.get(urlWithSearchTerms, cookies=r.cookies)

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2020-05-25
    • 1970-01-01
    • 2019-12-30
    相关资源
    最近更新 更多