我每天从Packt Publishing那里得到一本免费的电子书,上面有他们的“免费学习-免费技术电子书”促销活动。我正在尝试自动化这个过程。我对他们的根路径做了一个帖子来登录,之后我在促销网址上做了一个GET,并使用BeautifulSoup 4获得了“申请你的免费电子书”链接的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日)访问该站点并检查按钮,您将发现它:

在本例中,我的current_offer_href包含https://www.packtpub.com/freelearning-claim/21558/21478。
如果我尝试像我的代码中那样对current_offer_href进行POST,我会收到<Response [404]>。实际上,我应该得到的是重定向到https://www.packtpub.com/account/my-ebooks,因为如果我手动单击站点上的按钮,就会发生这种情况。这是怎么回事?
发布于 2016-11-09 02:51:22
您是根据您的用户代理过滤服务器端的。为了解决这个问题,改变用户代理。
https://stackoverflow.com/questions/40493212
复制相似问题