经过一段时间的学习,并参考各路大神的文章,总结出一些比较适合小白的网络爬虫的小技巧。跟着笔者的思路,循序渐进,可以慢慢找到一点小感觉。

开发环境

笔者选用的是vs code,轻量级,支持各种插件安装。

  • 首先进入官网,下载python安装包,这里有一点要注意:默认下载是64位的python,建议从以下入口进入:

    点击进入后,拉到最下面,可以选择64/32位的python安装。安装的时候,要勾选Add Python x.x.x To Path(可省去手动配置环境变量),然后一路默认安装即可。
  • 去官网下载vs-code,一路默认安装即可。
  • 在vs-code中搜索python,选择第一项,安装python模块。

配置环境和依赖项

安装第三方库

pyhon之所以受欢迎,得益于它的高效,简而言之,就是借助大量的第三方库。而且,很多强大的功能库,都提供支持python的api接口。

  • 在cmd下执行pip install selenium,selenium是一款WEB自动化工具,主要用于网络爬虫、模拟登录等。
  • 在cmd下执行pip install pyautogui,pyautogui有点类似于按键精灵,主要用于模拟人操作鼠标和键盘,可完美破解一些大型网站会有反爬机制。
  • 在cmd下执行pip install pylint,pylint主要用于发现并分析编码中的错误。
  • 在cmd下执行pip install flake8,flake8主要用于规范python编码格式。
  • 在cmd下执行pip install PyExecJS,PyExecJS用于解析js格式文件,可用来清洗数据;

配置VS-CODE

  1. 设置tab 4字节缩进
  • File - Preferences - Setting(快捷键:Ctrl+,),选择user选项卡
  • 打开json文件,在}之前添加代码(保存好设置,重启vs code即可生效):
"editor.detectIndentation": false,
"editor.tabSize": 4, //vscode设置的缩进量
"editor.formatOnSave": false, //保存时候自动格式化,不建议设置。我在这里设置为false
  1. 在vs code中配置pylint和flake8
  • File - Preferences - Setting(快捷键:Ctrl+,),选择Worksapce选项卡
  • 打开json文件,添加如下代码(保存即可,不用重启):
{"python.linting.flake8Enabled": true,"python.formatting.provider": "yapf","python.linting.flake8Args": ["--max-line-length=248"],"python.linting.pylintEnabled": false
}
  1. 将按两次F5运行,改为按一次
  • 切换到Run选项卡,添加配置,打开lanuch.json,添加如下代码:
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Python: 当前文件","type": "python","request": "launch","program": "${file}","console": "integratedTerminal","stopOnEntry": false}]
}

安装WebDriver

基础学习

在学习过程中参考了很多好的资料,在此分享给大家。

  • Python Selenium库的使用:
    (1)https://blog.csdn.net/weixin_36279318/article/details/79475388
    (2)http://www.testclass.net/selenium_python/
    (3)https://selenium-python.readthedocs.io/index.html
  • 新手用vs code编写代码,经常报一些警告,可参考:
    http://www.panxiaonan.cc/emlog/post-28.html
  • 网上一些模拟淘宝登录的文章
    (1)https://blog.csdn.net/weixin_43407092/article/details/102975955
    (2)https://blog.csdn.net/weixin_46089319/article/details/107861077?utm_medium=distribute.pc_relevant.none-task-blog-baidulandingword-15&spm=1001.2101.3001.4242

模拟淘宝登录

  1. 打开淘宝网
from selenium import webdriver
from time import sleep# 定义一个淘宝类
class TaoBao(object):def __init__(self):self.browser = webdriver.Chrome()self.domain = 'http://www.taobao.com'def open(self):self.browser.get(self.domain)sleep(3)# main函数入口
if __name__ == "__main__":tb = TaoBao()tb.open()
  1. 元素定位
    按F12进入控制台,定位到账号密码输入框的位置

用selenium定义元素的api,这里推荐三个,其中find_element_by_xpath最常用

# 获取账号编辑框,此处id和name一致纯属巧合
self.browser.find_element_by_id('fm-login-id')
self.browser.find_element_by_name('fm-login-id')
self.browser.find_element_by_xpath('//*[@id="fm-login-id"]')

为什么说通过xpath获取最常用呢,因为xpath是精准定位,且能直接拷贝获得。

定位其它网页元素,方法类似,不再赘述。

  1. 滑块验证
    前面有提到过,selenium可以模拟用户点击。
# 找到滑块位置
slider = self.browser.find_element_by_xpath("//span[contains(@class, 'btn_slide')]")
if slider.is_displayed():# 拖拽滑块self.action_chains.drag_and_drop_by_offset(slider, 258, 0).perform()time.sleep(0.5)# 释放滑块,相当于点击拖拽之后的释放鼠标self.action_chains.release().perform()
  1. pyautogui模拟人工点击
    前面有提到过,淘宝有反爬机制,能检测到selenium的模拟点击,会导致登录失败。那么,我们就借助pyautogui模拟人工点击。
  • 首先,用截图工具截图登录按钮的图片(最好用电脑自带的)
  • pyautogui可以根据这张图片,找到登录按钮的位置,从而操作鼠标去点击
 coords = pyautogui.locateOnScreen('1.png')x, y = pyautogui.center(coords)pyautogui.leftClick(x, y)
  1. 登录结果校验
    点击登录按钮后,我们并不能直观的判断是否登录成功。此时,我们可以再次打开淘宝页面,查看用户名是否存在。
  • 找到用户名的显示位置
  • 获取用户名,因为site-nav-user不一定存在,故需要用try处理异常
def get_nickname(self):self.browser.get(self.domain)time.sleep(0.5)try:return self.browser.find_element_by_class_name('site-nav-user').textexcept NoSuchElementException:return ''
  1. 最终代码
from selenium import webdriver
from time import sleep
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import WebDriverException
from selenium.webdriver import ActionChains
import pyautogui
import pymsgbox
pyautogui.PAUSE = 0.5# 定义一个淘宝类
class TaoBao(object):def __init__(self):self.browser = webdriver.Chrome()self.domain = 'http://www.taobao.com'self.browser.maximize_window()  # 窗口最大化self.browser.implicitly_wait(5)def open(self):self.browser.get(self.domain)sleep(1)def login(self, usrname, passwd):self.browser.find_element_by_xpath('//*[@id="J_SiteNavLogin"]/div[1]/div[1]/a[1]').click()  # 点击登录按钮self.browser.find_element_by_xpath('//*[@id="fm-login-id"]').send_keys(usrname)  # 输入账号self.browser.find_element_by_xpath('//*[@id="fm-login-password"]').send_keys(passwd)  # 输入密码# 若出现滑块,需要模拟滑动sleep(1)try:# 出现验证码,滑动验证slider = self.browser.find_element_by_xpath("//span[contains(@class, 'btn_slide')]")if slider.is_displayed():# 拖拽滑块ActionChains(self.browser).drag_and_drop_by_offset(slider, 258, 0).perform()sleep(0.5)# 释放滑块,相当于点击拖拽之后的释放鼠标ActionChains(self.browser).release().perform()except (NoSuchElementException, WebDriverException):pass# 模拟人工点击try:coords = pyautogui.locateOnScreen('1.png')x, y = pyautogui.center(coords)pyautogui.leftClick(x, y)except TypeError:pymsgbox.alert('未找到登录按钮')# 验证登录结果nickname = self.get_nickname()if nickname:pymsgbox.alert('登录成功,呢称为:' + nickname)def get_nickname(self):self.browser.get(self.domain)sleep(0.5)try:return self.browser.find_element_by_class_name('site-nav-user').textexcept NoSuchElementException:return ''# main函数入口
if __name__ == "__main__":tb = TaoBao()tb.open()usrname = 'lgtxxxxxx'passwd = 'xxxxxx'tb.login(usrname, passwd)

零基础带你用python模拟淘宝登录相关推荐

  1. python模拟淘宝登录后上下架商品_Python 淘宝系列(三): 模拟登陆成功后获取购物车信息...

    依然采用IE的F12开发者工具分析抓取到的数据. 关键问题 获取token后,重定向地址的获取 一般网站登录成功后,跳转方式主要有两种:(1)服务器返回的响应头中包含 location header, ...

  2. python模拟淘宝登陆_【Python】selenium模拟淘宝登录

    # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By f ...

  3. python爬虫淘宝登录_python爬虫实现模拟淘宝登录

    就算所有人都不支持你.这条路会很曲折,你也会一度认为是不是自己选错了,但只要坚持,就算最后没有成功,但努力了就不会有遗憾. python爬虫模拟淘宝登录 小贴士 这个爬虫和搜索引擎的爬虫是有区别的.搜 ...

  4. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

  5. python爬虫淘宝登录_淘宝的模拟登录(python3+selenium)

    淘宝登录 爬数据的前提是要先登录,那么先来说怎么使用python3+selenium登录淘宝的. 一.登录前的准备工作 关于一开始做登录时,一直会出现滑块,这个滑块怎么滑都通过不了,后来才知道是淘宝有 ...

  6. python3爬虫学习笔记之模拟淘宝登录

    准备工作 使用chrome f12调试模式,抓包查看淘宝登录的整个流程,并查看post请求的数据 值得注意的是,淘宝用的是gbk编码 说明 此版本没有处理验证码,只是单纯的登录 具体的流程和实现都在代 ...

  7. Python 模拟淘宝客服小蜜自动回复

    首先,新建一个文本文件做准备: 订单|如果您有任何订单问题,可以登录淘宝账号,点击"我的订单",查看订单详情. 物流|如果您有任何订单问题,可以登录淘宝账号,点击"我的订 ...

  8. 自学爬虫项目(二)一一利用selenium模拟淘宝登录,爬取商品数据

    文章目录 前言 一.明确目标 二.分析过程 三.代码封装 总结 前言 你是否还在为学习Python没有方向而苦恼?快来跟着壹乐一起学习吧!让我们共同进步! 今天我们用selenium与Beautifu ...

  9. 【Java爬虫-模拟淘宝登录】

    已失效!1 package demo2; 2 3 import org.openqa.selenium.By; 4 import org.openqa.selenium.WebElement; 5 i ...

最新文章

  1. C# HttpHelper帮助类,真正的Httprequest请求时无视编码,无视证书,无视Cookie,网页抓取...
  2. java语言的数组描述_下列关于Java语言的数组描述中,错误的是()。_学小易找答案...
  3. 【算法学习笔记】83.排序辅助 动态规划 SJTU OJ 1282 修路
  4. 5分钟能回答的人,年薪25万美金以上
  5. 高级IO(文件的读写)——阻塞式IO的困境、非阻塞式IO
  6. 微服务高可用之熔断器实现原理与 Golang 实践
  7. 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)--有BUG,注意看我的备注
  8. ELK 6.2版本部署
  9. 蓝桥杯 BASIC-19 基础练习 完美的代价
  10. 从 JavaScript 到 TypeScript 6 - Vue 引入 TypeScript
  11. html中设置锚点定位的几种常见方法
  12. @Transactional注解属性(2)
  13. [已实现]暴力破解路由器管理密码
  14. 王垠《清华梦破碎》沉思与反省
  15. LOGO特训营 第六节 字体设计实操(矩形钢笔造字)
  16. 双稳态电路的两个稳定状态是什么_干货 | 常见的脉冲电路到底有何用途和特点?终于了解了!...
  17. CSS系列之浮动详解
  18. Konva Vue当中的一些技术心得
  19. VMware(6):如何配置虚拟机与宿主机的端口映射
  20. C/C++刁钻问题各个击破之细说sizeof .

热门文章

  1. conda环境opencv报错cv2.error:
  2. 15_Pandas计算元素的数量和频率(出现的次数)
  3. 33-viper 配置文件加载
  4. Python OpenCV 实现魔方识别+复原
  5. WebRTC视频JitterBuffer详解
  6. 五点三次平滑滤波在消除随机噪声中的应用以及其Maltab程序
  7. Python调用腾讯API发送短信验证码
  8. 【ROS】移动机器人导航仿真(2)——SLAM(gmapping)
  9. 四轮差分驱动平台gazebo插件
  10. 苹果5壁纸_冷高轮时间wallpaper Engine动态时钟壁纸 小人人体形状造型数字 手势数字 麻将数字 扑克数字 时钟壁纸...