Python请求和表单按钮交互问题

2024-04-24 12:45:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我每天从Packt Publishing那里得到一本免费的电子书,里面有他们的“免费学习-免费技术电子书”宣传片。我正在尝试自动化这个过程。我对他们的根路径做了一个帖子来登录,之后我做了一个关于promo URL的GET,并使用beautifulsoup4来获取“claim your free ebook”链接的HREF,现在我被卡住了。代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import requests
from bs4 import BeautifulSoup

USERNAME = 'email@email.com'
PASSWORD = 'secret'
BASE_URL = 'https://www.packtpub.com'
PROMO_URL = 'https://www.packtpub.com/packt/offers/free-learning'

session = requests.session()
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}
session.post(BASE_URL, {"username": USERNAME, "password": PASSWORD}, headers=headers)

response = session.get(PROMO_URL, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
current_offer_href = BASE_URL + soup.find("div", {"class": "free-ebook"}).a['href']
print(current_offer_href)
print(session.post(current_offer_href, headers=headers))

current_offer_href的值是正确的,如果您今天(2016年11月8日)去网站查看按钮,您会发现:

enter image description here

在本例中,我的current_offer_href持有https://www.packtpub.com/freelearning-claim/21558/21478。你知道吗

如果我尝试对current_offer_href做一个POST,就像在我的代码中一样,我会收到<Response [404]>。实际上,我应该得到的是重定向到https://www.packtpub.com/account/my-ebooks,因为如果我在站点上手动单击按钮,就会发生这种情况。这里怎么了?你知道吗


Tags: httpscomfreeurlbasesessionwww电子书