今天用 requests + BeautifulSoup 抓取 aliexpress 的时候, 在模拟登录时候出现了很多问题, 提交数据时会对密码等一些字段加密, 而且提交一大堆不知名的字段, 大概有二十多项。 看到那么多字段, 整个人就不好了, 作为一个懒人, 准备绕过这个坑。
大概思路是这样, 通过 selenium 打开浏览器, 模拟登录。 获取cookies ,并将cookies以文件的形式保存到本地。 当我们使用requests打开页面的时候就可以用本地的cookies。 因为 通过selenium打开浏览器的方式登陆没有那么多限制, 只需要模拟登录流程( 输入帐号密码, 点击登录即可登陆)。 而且selenium可以模拟各种浏览器, 亦可以在命令行下实现浏览器功能。
1: 通过selenium 登录
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
def login(username, password browser=None):
browser.get("https://login.example.com/")
pwd_btn = browser.find_element_by_name("password")
act_btn = browser.find_element_by_name("loginId")
submit_btn = browser.find_element_by_name("submit-btn")
act_but.send_keys(username)
pwd_btn.send