【Python网络爬虫】三分钟教会你使用SeleniumWire快速爬取数据

这篇具有很好参考价值的文章主要介绍了【Python网络爬虫】三分钟教会你使用SeleniumWire快速爬取数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SeleniumWire快速爬取数据

一、安装所需的库

在终端使用pip进行安装 pip install xxx

import tkinter
from seleniumwire import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

二、设置浏览器启动选项

这里我使用的是Chrome,其中列举了几个常用的option,供大家学习使用

  1. option = webdriver.ChromeOptions():设置Chrome启动选项
  2. option.add_argument(‘headless’):不打开浏览器进行数据爬取,因为没有可视化过程,所以推荐整个流程开发完毕后,在使用此条代码。
  3. option.add_experimental_option(“prefs”, {“profile.managed_default_content_settings.images”: 2}):如果网页中的图片对你没有太大作用,可以不加载网页图片,以提高爬取速度。
  4. option.add_experimental_option(“detach”, True):防止程序执行完浏览器自动关闭
  5. 配置浏览器路径和驱动路径(若使用已安装的浏览器,则不需要配置,需要手动安装chromedriver)
    option.binary_location = r’./chrome-win64/chrome.exe’
    driver_path = r"./chromedriver-win64/chromedriver.exe"
  6. driver = webdriver.Chrome(service=Service(driver_path), options=option):加载以上配置,若第5步未配置,则使用driver = webdriver.Chrome(options=option)即可
  7. driver.maximize_window():最大化浏览器
  8. driver.implicitly_wait(60):设置隐式等待时长为60s,以后在更新Selenium的三种等待方式
option = webdriver.ChromeOptions()
option.add_argument('headless')  # 不使用浏览器ui
option.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})  # 不加载网页图片
option.add_experimental_option("detach", True)  # 
option.binary_location = r'./chrome-win64/chrome.exe'
driver_path = r"./chromedriver-win64/chromedriver.exe"
driver = webdriver.Chrome(service=Service(driver_path), options=option)
driver.maximize_window()
driver.implicitly_wait(60)

三、使用账号密码登录网址

如果爬取的网站需要登陆,可使用selenium.find_element进行登录

# 登录
driver.get("your url")  # 登录的url
driver.find_element(by=By.ID, value='mobile').send_keys('your username')
driver.find_element(by=By.ID, value='passwd').send_keys('your password')
driver.find_element(by=By.ID, value='submitButton').click()

# 这里是你登录之后的操作
'''your code '''

四、seleniumwire.requests爬取数据

  1. for request in driver.requests为固定写法,其含义为:获取Network中的所有请求的url,然后进行遍历
    2.if request.method == ‘POST’ and request.url == ‘your url’:当遍历的请求满足你设置的条件,例如为POST请求和指定的url,执行response。
    这里的url是你需要爬取的网址,在所有的请求中,你需要查看哪个请求是你需要的
    seleniumwire wait_for_request(),python,爬虫,数据分析
    seleniumwire wait_for_request(),python,爬虫,数据分析

3.data = request.response.body:通过request返回response请求的body
4.html一般会将网页的数据进行压缩以节省空间,如果为Gzip压缩方式,可用以下固定的方式解压缩,最终的htmls为字符串形式。
5.driver.requests.clear():将每次的请求关闭,以释放资源。

# 使用seleniumwire.requests爬取数据
for request in driver.requests:
    if request.method == 'POST' and request.url == 'your url': 
        data = request.response.body
        buff = BytesIO(data)
        f = gzip.GzipFile(fileobj=buff)
        htmls = f.read().decode('utf-8')
        print('response data: ', htmls)
        driver.requests.clear()

五、数据清洗和保存

返回的response是页面中的所有数据,数据清洗可使用正则表达式,也可使用beautifulsoup,这两种方法之后在进行汇总文章来源地址https://www.toymoban.com/news/detail-832093.html

# 正则表达式清洗数据
data_code = re.findall(r'data_code\D+(\d+)', htmls)
pay_time = re.findall('"pay_time":"(.*?)"', htmls)
vehicle_id = re.findall('"vehicle_id":"(.*?)"', htmls)
pay_type = re.findall(r'pay_type\D+(\d+)', htmls)

# pandas保存数据到Excel中
data = {'数据编号': data_code, '时间': pay_time, '标识': vehicle_id, '类型': pay_type}
df = pd.DataFrame(data)
df.index += 1
df.to_excel('data.xlsx')

代码汇总

import tkinter
from seleniumwire import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

# 配置chrome
option = webdriver.ChromeOptions()
option.add_argument('headless')
option.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
option.add_experimental_option("detach", True)
option.binary_location = r'./chrome-win64/chrome.exe'
driver_path = r"./chromedriver-win64/chromedriver.exe"
driver = webdriver.Chrome(service=Service(driver_path), options=option)
driver.maximize_window()
driver.implicitly_wait(60)

# 登录
driver.get("your url")  # 登录界面的url
driver.find_element(by=By.ID, value='mobile').send_keys('your username')
driver.find_element(by=By.ID, value='passwd').send_keys('your password')
driver.find_element(by=By.ID, value='submitButton').click()

# 这里是你登录之后的操作,可使用find_element转到需要爬取的数据界面
'''your code '''
 
 # 使用seleniumwire.requests爬取数据
for request in driver.requests:
    if request.method == 'POST' and request.url == 'your url': 
        data = request.response.body
        buff = BytesIO(data)
        f = gzip.GzipFile(fileobj=buff)
        htmls = f.read().decode('utf-8')
        print('response data: ', htmls)
        driver.requests.clear()
   
# 使用正则表达式对数据进行清洗 
data_code = re.findall(r'data_code\D+(\d+)', htmls)
pay_time = re.findall('"pay_time":"(.*?)"', htmls)
vehicle_id = re.findall('"vehicle_id":"(.*?)"', htmls)
pay_type = re.findall(r'pay_type\D+(\d+)', htmls)

# 将采集的数据保存到Excel中
data = {'数据编号': data_code, '时间': pay_time, '标识': vehicle_id, '类型': pay_type}
df = pd.DataFrame(data)
df.index += 1
df.to_excel('data.xlsx')
tkinter.messagebox.showinfo(title='提示', message='已采取完毕')

到了这里,关于【Python网络爬虫】三分钟教会你使用SeleniumWire快速爬取数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【渗透测试】漏洞扫描AWVS安装使用教程,三分钟手把手教会,非常简单

    Acunetix Web Vulnerability Scanner(简称AWVS)是一个 自动化 的Web漏洞扫描工具,它可以扫描任何通过 Web浏览器访问 和 遵循HITP/HTTPS 规则的Web站点。 AWVS原理是基于 漏洞匹配方法 ,通过 网络爬虫 测试你的网站安全,检测流行安全 AWVS可以检测什么漏洞,它有什么优势? AWVS可以通过

    2024年01月25日
    浏览(65)
  • 【Selenium IDE录制脚本】三分钟教会你Selenium IDE的安装及使用

    目录 1、安装Selenium IDE 1.1、安装Firefox浏览器  1.2、安装selenium IDE 2、selenium的脚本录制         因为selenium的不同版本对Firefox的支持不同,所以我们安装了Firefox之后,需要关闭他的自动更新 搜索:  点击进入:  点击后,会有一个路径选择的会话框,下载路径:  找到下

    2024年02月09日
    浏览(51)
  • Python爬虫入门教程!手把手教会你爬取网页数据

    其实在当今社会,网络上充斥着大量有用的数据,我们只需要耐心的观察,再加上一些技术手段,就可以获取到大量的有价值数据。这里的“技术手段”就是网络爬虫。今天就给大家分享一篇爬虫基础知识和入门教程: 爬虫就是自动获取网页内容的程序,例如搜索引擎,Go

    2023年04月26日
    浏览(116)
  • 五分钟快速掌握Python中dict(字典)的详细使用方法

    目录 概念: dict的定义格式: dict的使用方法: 定义空字典的两种方法: dict.clear:  copy: copy:浅拷贝 deepcopy:深拷贝 get:  items:  keys:  popitem:  setdefault:  update:  values: dict----dictionary  字典: 根据去获取内容 不能重复 必须是不可变的数据类型

    2024年02月12日
    浏览(46)
  • 如何在网络爬虫中解决CAPTCHA?使用Python进行网络爬虫

    网络爬虫是从网站提取数据的重要方法。然而,在进行网络爬虫时,常常会遇到一个障碍,那就是CAPTCHA(全自动公共图灵测试以区分计算机和人类)。本文将介绍在网络爬虫中解决CAPTCHA的最佳方法,并重点介绍CapSolver无缝集成。 网络爬虫中的CAPTCHA是指在从网站提取数据时遇

    2024年01月22日
    浏览(58)
  • Python 萌新 - 花10分钟学爬虫

    前言 Python 新手入门很多时候都会写个爬虫练手,本教程使用 Scrapy 框架,帮你简单快速实现爬虫,并将数据保存至数据库。在机器学习中数据挖掘也是十分重要的,我的数据科学老师曾经说过,好算法不如好数据。 Python助学大礼包点击免费获取 安装 Scrapy (系统默认安装了

    2024年02月06日
    浏览(40)
  • Python网络爬虫使用教程

    (1)介绍:urllib 模块是 Python 标准库,用于抓取网络上的 URL 资源。 注:现在用的更多的是第三方库requests,requests 模块比 urllib 模块更简洁。 (2)模块: urllib.request:请求模块,用于打开和读取 URL; urllib.error:异常处理模块,捕获 urllib.error 抛出异常; urllib.parse:URL 解析,爬

    2024年02月08日
    浏览(44)
  • 一分钟教会你ai绘画怎么操作

    嘿,朋友们!今天我想和大家聊一聊人工智能绘画。你们有没有听说过这项技术?简单来说,就是用计算机程序来创作艺术作品,比如绘画、音乐等等。最近这种技术越来越受到人们的关注,也有很多网站和应用程序开始提供这种功能。但是,你们知道怎么使用这种技术吗?

    2024年02月09日
    浏览(47)
  • au怎么提取人声?一分钟教会你!

    提取人声技术可以帮助人们获得更清晰、纯净的声音,以满足不同的需求,如音频处理、字幕制作和学习外语等。那么如何利用AU提取人声呢?下面介绍了三种相关的方法。 一、使用AU软件 1 、打开AU软件,按【ctrl+o】,选择音频文件进行导入。 2 、点击【效果】,点击【立体

    2024年02月06日
    浏览(48)
  • 5分钟教会你如何在生产环境debug代码

    有时出现的线上bug在测试环境死活都不能复现,靠review代码猜测bug出现的原因,然后盲改代码直接在线上测试明显不靠谱。这时我们就需要在生产环境中debug代码,快速找到bug的原因,然后将锅丢出去。 生产环境的代码一般都是关闭source map和经过混淆的,那么如何进行debug代

    2024年01月19日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包