爬虫实战(一)Python+selenium自动化获取数据存储到Mysql中

这篇具有很好参考价值的文章主要介绍了爬虫实战(一)Python+selenium自动化获取数据存储到Mysql中。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  行话说得好,“爬虫学得好,牢饭吃到饱!”哈哈博主是因这句话入的坑,不为别的就为邀大家一起铁窗泪(bushi),本人虽小牛一只,但是喜爱捣鼓技术,有兴趣的小伙伴们可以共同探讨,也欢迎各位大佬们的指点,愿共同进步!

从Selenium自动化测试到Mysql数据库

  这次计划是翻墙爬取外网某网站https://metrics.torproject.org/rs.html#details/0E300A0942899B995AE08CEF58062BCFEB51EEDF页面的内容,页面中除了正常的文本数据外,还包含了数张js加载的历史数据统计图,将爬取的文本数据直接以字符形式插入表中,图片数据需要处理为二进制后存入。素材使用的工具是Pycharm+python3.7(个人相当推荐Pycharm,不用考虑python版本于库版本是否匹配的问题,设置黑色的界面风格很有让人写代码的冲动,而且3月4号刚上线chatgpt插件),武器库呢采用的是反爬利器selenium web自动化测试,使用版本是3.141.0。从python连接数据库使用的是Pymysql1.0.2。数据库选用的是Mariadb,没找到免费Mysql,民间还是开源的Mariadb呼声更高。
python爬取数据并存入数据库案例,爬虫实战,爬虫,selenium,mysql,python,mariadb

Selenium自动化测试

   selenium的好处在于对于一般网页的反爬虫手段有着很好的反制策略,例如常见的有请求头反爬虫,这个也是最简单的,如果不给定请求头,对方服务器就不会理你,需要设置的参数有User-Agent、Referer和Cookie。还包括有的网站会使用js接口传递数据。甚至有时你会发现自己的请求语句完全正确但是就是定位到页面元素,那就可能是使用了iframe框架,可以理解为网页嵌套。能够做到这些手段的网站不多,对于数据十分金贵的知网算的上一个,这里挖个小坑后面实战项目会有的。对于selenium还不熟悉的小伙伴,博主推荐Selenium with Python中文翻译文档https://selenium-python-zh.readthedocs.io/en/latest/

  1. 库文件
from selenium import webdriver
import pymysql as sql
import time
import random
  1. Webdriver初始化

  webdriver要和自己的chrome浏览器版本相对应(使用火狐浏览器也是可以的),不知道下载哪个版本来这里http://chromedriver.storage.googleapis.com/index.html

self.url="https://metrics.torproject.org/rs.html#details/0E300A0942899B995AE08CEF58062BCFEB51EEDF"
self.driver_path=r"D:\python\chromedriver.exe"
#获取数据
self.lable=[]
self.tip=[]
self.content=[]
self.image_f=[]
self.image_s=[]
self.time=[]
  1. 访问页面

  headless赋值为True是开启无头模式测试,初次使用webdriver自动化测试的小伙伴可以去掉这行体验一下

option=webdriver.ChromeOptions()
option.headless=True
option.binary_location=r'D:\Google\Chrome\Application\chrome.exe'
self.driver = webdriver.Chrome(executable_path=self.driver_path,options=option)
self.driver.get(self.url)
time.sleep(10)#这里也可以使用self.driver.implicitly_wait(10) 

  implicitly_wait(10) 隐性等待的好处是在设定的时间内只要加载完毕就执行下一步,不用像time.sleep那样强行等待10秒钟

  1. 获取文本数据
# 获取lable
wash=self.driver.find_elements_by_tag_name('h3')
metri.wash_data(wash,0)#wash_data()调用函数对获取到的数据进行清洗
#获取tip
wash=self.driver.find_elements_by_class_name('tip')
wash.pop(0)
metri.wash_data(wash,2)
#获取content
wash=self.driver.find_elements_by_tag_name('dd')
metri.wash_data(wash,1)

  metri是使用类class的名称:metri=metrics(),由于网页设计的原因有时开发人员的无规律设计可能导致我们获取的数据与期望存在偏差,小问题清洗一下就好了

  1. 获取折线图

  对于这类难获取,获取后难以可视化的情形(如下图),博主非常推荐使用selenium中screenshoot_as_png按元素定位拍照的方法
python爬取数据并存入数据库案例,爬虫实战,爬虫,selenium,mysql,python,mariadb

  一筹莫展的时候正好发现了screenshoot的功能,可谓是柳暗花明又一村

self.image_f.append(self.driver.find_element_by_xpath('//*[@id="bw_month"]').screenshot_as_png)
self.image_s.append(self.driver.find_element_by_xpath('//*[@id="weights_month"]').screenshot_as_png)
self.time.append(self.driver.find_element_by_id('history-1m-tab').text)

Mysql数据库

   Mariadb和Oracle甲骨文旗下的Mysql之间的渊源,感兴趣的小伙伴可以去了解一下,Mariadb由于是开源的软件所以更新迭代的次数要比Mysql多,但是两者的语法和大体功能上是相同的

  1. 初始化信息

  在开始运行前一定要安装配置好mysql,我这里使用的是mariadb附上下载链接https://mariadb.com/downloads/,登录界面长这样
python爬取数据并存入数据库案例,爬虫实战,爬虫,selenium,mysql,python,mariadb

  mysql登录信息文章来源地址https://www.toymoban.com/news/detail-796149.html

    def __init__(self):
        # mysql登录信息
        self.host='127.0.0.1'
        self.user='root'
        self.password='123456'
        self.chartset='utf8'#编码格式注意这里不是utf-8,数据库这里的参数配置没有'-'
        self.database='metrics_db'#数据库名称
  1. 建立数据库
 def set_sqldb(self,sql):
        db = sql.connect(
            host=self.host,
            user=self.user,
            password=self.password,
            charset=self.chartset,
        )
        cursor=db.cursor()
        try:
            cursor.execute("create database metrics_db character set utf8;")
        except:
            pass
        cursor.close()
        db.close()
  1. 建立数据表
    #建立mysql数据表
    def set_sqlist(self,sql,list_lable):
        db=sql.connect(
            host=self.host,
            user=self.user,
            password=self.password,
            charset=self.chartset,
            database=self.database
        )
        cursor=db.cursor()
        sql="""drop table if exists `%s`"""%((list_lable))
        cursor.execute(sql)
        if list_lable=='History':
            sql = """
                       create table if not  exists `%s`(id int auto_increment primary key comment'序列号',
                       time VARCHAR(255) not null comment '月份',
                       graph1 longblob comment '图片',
                       graph2 longblob comment '图片');""" % (list_lable)
        else:
            sql=

到了这里,关于爬虫实战(一)Python+selenium自动化获取数据存储到Mysql中的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • python自动化爬虫实战

    偶然的一次机会再次用到爬虫,借此机会记录一下爬虫的学习经历,方便后续复用。 需求:爬取网站数据并存入的csv文件中,总体分为两步 爬取网站数据 存到到csv文件中 1、配置爬虫环境 1.1、下载自动化测试驱动 由于需要实现模拟手动点击浏览器的效果,因此笔者使用到了

    2024年02月03日
    浏览(26)
  • Python爬虫技术之Selenium自动化测试及模拟点击页面爬虫最全知识

    Selenium是一套Web网站的程序自动化操作解决方案(比如点击界面按钮,在文本框中输入文字等操作) Selenium的自动化原理如下 3.1 下载selenium库的命令 3.2 下载谷歌浏览器Chrome对应的驱动 驱动库网址:http://chromedriver.storage.googleapis.com/index.html 注意:根据自己的Chrome版本进行选择

    2024年01月16日
    浏览(45)
  • Python爬虫技术系列-06selenium完成自动化测试V01

    使用selenium库完成动点击下一页,点击视频操作等过程, 如果你非要说这是XX,那我也不过多辩解,毕竟 批评不自由,赞美无意义 。 本案例仅是技术演示,所以会隐去相关网址等,读者可以重点查看这里使用的selenium技术点即可。另外本版本为V01版本,所以仅仅是可用,很多

    2024年02月05日
    浏览(29)
  • Python自动化实战之使用Selenium进行Web自动化详解

    为了完成一项重复的任务,你需要在网站上进行大量的点击和操作,每次都要浪费大量的时间和精力。Python的Selenium库就可以自动化完成这些任务。 在本篇文章中,我们将会介绍如何使用Python的Selenium库进行Web自动化,以及如何将它应用于实际项目中。如果你是一名Python爱好

    2024年02月13日
    浏览(34)
  • Python爬虫框架之Selenium库入门:用Python实现网页自动化测试详解

    是否还在为网页测试而烦恼?是否还在为重复的点击、等待而劳累?试试强大的 Selenium !让你的网页自动化测试变得轻松有趣! Selenium 是一个强大的自动化测试工具,它可以让你直接操控浏览器,完成各种与网页交互的任务。通过使用 Python 的 Selenium 库,你可以高效地实现

    2024年02月10日
    浏览(36)
  • Python+Selenium自动化测试项目实战

    第 1 章 自动化测试 1.1、自动化测试介绍 自动化测试就是通过自动化测试工具帮我们打开浏览器,输入网址,输入账号密码登录,及登录后的操作,总的说来自动化测试就是通过自动化测试脚本来帮我们从繁琐重复的手工测试里面解脱出来,把时间和精力花到更好的地方去,

    2023年04月17日
    浏览(29)
  • Python-爬虫、自动化(selenium,动态网页翻页,模拟搜索,下拉列表选择、selenium行为链)

    selenium是一个Web自动化测试工具,可以直接运行在浏览器上·支持所有主流的浏览器.可以根据我们的指令,让浏览器自动加载页面,获取需要的数据,基础页面截图等。 使用pip install selenium命令下载selenium模块。 运行下列代码: 说明没有下载对应浏览器的驱动,这里使用谷歌

    2024年02月01日
    浏览(48)
  • 从零开始学习Python控制开源Selenium库自动化浏览器操作,实现爬虫,自动化测试等功能(一)

    介绍Selenium : Selenium是一个用于自动化浏览器操作的开源工具和库。它最初是为Web应用测试而创建的,但随着时间的推移,它被广泛用于Web数据抓取和网页自动化操作。Selenium 支持多种编程语言,包括Python,Java,C#等。 这里我们主要实现采用Python的方式 Selenium 的主要特点和

    2024年01月22日
    浏览(49)
  • Python爬虫实战:自动化数据采集与分析

    在大数据时代,数据采集与分析已经成为了许多行业的核心竞争力。Python作为一门广泛应用的编程语言,拥有丰富的爬虫库,使得我们能够轻松实现自动化数据采集与分析。本文将通过一个简单的示例,带您了解如何使用Python进行爬虫实战。 一、环境准备 首先,确保您已经

    2024年02月11日
    浏览(37)
  • Python+selenium自动化测试实战项目(全面,完整,详细)

    前言 之前的文章说过, 要写一篇自动化实战的文章, 这段时间比较忙再加回家过清明一直没有更新,今天整理一下实战项目的代码共大家学习。(注:项目是针对我们公司内部系统的测试,只能内部网络访问,外部网络无法访问) 问: 1.外部网络无法访问,代码也无法运行

    2024年02月13日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包