利用Python模拟登陆淘宝,实现购物秒杀!

模拟登录

学爬虫,总能听到模拟登录这四个字,究竟什么是模拟登录?通俗一点讲,模拟登录就是程序用账号和密码自动登录一个网站。然后,拿到只有登录后,才能下载的网站数据。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:101677771

比如,我们只有登录淘宝账号之后,才能看到购物车里有哪些东西。本文,就以模拟登录淘宝为例进行讲解,并帮他/她清空购物车。

你只需要知道他/她的淘宝账号和密码,并且有个充足的钱包,就可以运行程序,扫码支付一气呵成。
体验自动结算,钱包秒空的快感!

Selenium

模拟登录无非两种方法:请求包分析模拟登录、自动化测试工具模拟登录。

前者,需要抓包分析请求,解析各种参数,还可能涉及一些加密算法。

后者,可以绕过一些繁琐的分析过程,直接定位元素进行操作,但也会遇到一些反爬策略。

两者,都有各自的操作技巧。

本文讲解一个新思路,使用自动化测试工具 Selenium 模拟登录。

Selenium 基本的使用方法,以及如何破解淘宝对于 Selenium 的反爬策略,尽在下文。

Selenium 安装

Selenium 是一个自动化测试工具,支持各种主流浏览器,例如 Chrome、Safari、Firefox 等。

不知道什么是自动化测试工具没关系,我会通过实战操作,慢慢讲解。

不管怎样,先安装 Selenium 再说。

pip install selenium
  •  

使用 pip 直接安装 selenium。

除了安装 Python 的 Selenium 第三方库,还需要根据浏览器配置相应的浏览器驱动。

以 Chrome 为例,下载浏览器驱动。

https://sites.google.com/a/chromium.org/chromedriver/downloads

需要根据浏览器的版本,选择驱动下载。

小试牛刀

使用 Selenium 登录百度看一下。

from selenium import webdriver

if __name__ == "__main__":
    browser = webdriver.Chrome()
    browser.get('https://www.baidu.com/')

结果如下图所示:

程序会自动打开 Chrome 浏览器,并打开 www.baidu.com。

再来个复杂一些的例子。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

if __name__ == "__main__":
    driver = webdriver.Chrome()
    driver.get("https://www.python.org")
    assert "Python" in driver.title
    elem = driver.find_element_by_name("q")
    elem.send_keys("pycon")
    elem.send_keys(Keys.RETURN)
    print(driver.page_source)

打开 www.python.org 官网,并根据 name 属性为 q 找到搜索框,并输入 pycon 并点击搜索。

写好程序,浏览器自动操作,是不是很简单,很酷炫?

这就是自动化测试工具,程序写好,浏览器自动执行你的写的操作。

find_element_by_* 是一种定位网页元素的方法,有很多方式:

find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

可以通过,标签的 id 属性、name 属性、class_name 属性查找元素,也可以通过 xpath 等。

这里面,其实用到最多的就是 xpath,因为好用。

不用动脑思考怎么写xpath,就能操作,方便好用。举个例子,比如我想找到 baidu.com 的搜索框的元素:

在搜索框位置,点击右键,选择 copy 下的 copy xpath,直接复制 xpath 。

粘贴出来你会看到如下内容:

//*[@id="kw"]
  •  

其实意思就是从根目录开始找,找到 id 属性为 kw 的标签。

详细的,关于 Selenium 的 API 文档,可以看官方手册。

官方手册:

https://selenium-python.readthedocs.io/index.html

你可能感兴趣的:(Python,Python爬虫,网络爬虫,Python编程,编程语言)