我正在使用 Python 和 Requests 模块以及 BeautifulSoup 编写一个 AliExpress 网络爬虫,我让它运行良好,但是我遇到了一个问题 - 我被随机重定向到登录页面。我对此的解决方案是在抓取之前在会话开始时简单地登录,但我不知道如何登录。
登录页面 ( https://login.aliexpress.com ) 只需要用户名和密码,但是当我尝试使用我的代码输入它们并测试以查看我是否通过转到https://home 登录时。 aliexpress.com/index.htm并查看 html,它失败了,因为它将我重定向回登录页面。
尝试多种解决方案无济于事后我的代码:
import requests
LOGIN_URL = "https://login.aliexpress.com/"
LOGIN_INFO = {
"loginId": "myemail@email.com",
"password": "mypassword"
}
with requests.Session() as sess:
#go to login page
sess.get(LOGIN_URL)
#attempt to log in with my login info
sess.post(LOGIN_URL, data=LOGIN_INFO)
#go to 'My AliExpress' page to verify successful login
success = sess.get("https://home.aliexpress.com/index.htm")
#manually check html to see if I was sent to the login page again
print(success.text)
这几乎是我多次尝试失败后剩下的东西。我尝试过的一些事情是:
在 'sess.get(LOGIN_URL)' 之后查看 cookie,它会返回此信息,但我不知道如何处理它(以键:值格式):
- ali_apache_tracktmp :
- ali_apache_track:
- xman_f : t52Eyo+p3qf6E6fdmL5yJ81g2icRn+2PYjjrWYHlqlDyXAixo92Z5KHMZV8SCV7vP4ZjxEmuTQesVWkqxUi3SpFU1qbRyNRd+d0pIIKVhrIDri2oaWrt6A==
- JSESSIONID:30678741D7473C80BEB85825718FB1C6
- acs_usuc_t:acs_rt=343aef98b0ca4ae79497e31b11c82c29&x_csrf=1b5g78e7fz2rt
- xman_us_f : x_l=0
- ali_apache_id : 23.76.146.14.1510893827939.187695.4
- xman_t : PSIYMbKN2UyuejZBfmP9o5hdmQGoSB0UL0785LnRBxW0bdbdMmtW2A47hHbgTgD7TmFp7QVsOW4kXTsXMncy+iKisKfqagqb4yPxOVFdw+k=
尝试查找 csrf 令牌,但仅在上面第 5 个项目符号中的 '_csrf=' 之后找到了文本。尝试使用它并没有用。
查看了您登录时发送的 html 表单,但我不知道 html,只能识别它的字段比我看到的其他人用于其他网站的字段多得多(此处 Chrome 的表单数据图像)。
将我的代码中的“myPassword”更改为上图中password2字段中的文本,并将“password”键也更改为“password2”。
谷歌搜索了几个小时,但没有找到任何可行的方法。
在这一点上,我束手无策,因此非常感谢任何有关如何进行的帮助。我不是最好的编码器(仍在学习),除了我从一些关于抓取的教程中学到的东西之外,我不知道 html,并希望自己弄清楚,但几个小时后我仍然没有解决它并意识到我真的可以使用帮助。
我正在使用python 3.5。如果需要更多信息,请告诉我。在被卡住和清醒这么久之后,大脑几乎完全变成了糊状。