Python3 网络爬虫:模拟登录淘宝,清空女朋友的购物车!

前言

 

 

文字、图片、视频这类常规的内容下载、API 的使用,这些操作对你来说,应该轻而易举了。

 

那今天,就讲解一下高级一点的技能,「模拟登录」。

 

值此 618 之际,帮他/她清空一波购物车!

 

2

 

模拟登录

 

学爬虫,总能听到「模拟登录」这四个字,究竟什么是「模拟登录」?

 

通俗一点讲,「模拟登录」就是程序用账号和密码自动登录一个网站。

 

然后,拿到只有登录后,才能下载的网站数据。

 

比如,我们只有登录淘宝账号之后,才能看到购物车里有哪些东西。

 

本文,就以「模拟登录」淘宝为例进行讲解,并帮他/她清空购物车。

 

你只需要知道他/她的淘宝账号和密码,并且有个充足的钱包,就可以运行程序,扫码支付一气呵成。

 

体验自动结算钱包秒空的快感!

3

 

Selenium

 

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

 

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

 

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

 

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

 

之前的教程,讲解了很多基于 requests 请求包分析的爬虫思路。

 

本文讲解一个新思路,使用自动化测试工具 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

 

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

 

 

无法翻墙下载没关系,我已经将这三个版本的驱动下载并上传到百度云了。

 

百度云链接(提取码:cbsu):

https://pan.baidu.com/s/1-AfONQGkK8xPwLaW5P-9Bw

 

小试牛刀

 

使用 Selenium 登录百度看一下。

 

  •  
  •  
  •  
  •  
  •  
from selenium import webdriverif __name__ == "__main__":    browser = webdriver.Chrome('path\to\your\chromedriver.exe')    browser.get('https://www.baidu.com/')

 

上面的 path\to\your\chromedriver.exe 是刚刚下载的 Chrome 驱动文件位置,根据自己的情况修改,建议使用绝对路径。结果如下图所示:

 

 

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

 

再来个复杂一些的例子。

 

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
from selenium import webdriverfrom selenium.webdriver.common.keys import Keysif __name__ == "__main__":    driver = webdriver.Chrome("path\to\your\chromedriver.exe")    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_idfind_element_by_namefind_element_by_xpathfind_element_by_link_textfind_element_by_partial_link_textfind_element_by_tag_namefind_element_by_class_namefind_element_by_css_selector

 

 

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

 

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

 

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

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值