【Python爬虫与数据分析】爬虫selenium工具

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

目录

一、selenium工具安装

二、selenium打开浏览器测试

三、无头浏览器

四、元素定位

五、页面滑动

六、按键、填写登录表单

七、页面切换

八、实战爬取当当网书籍数据


Selenium是Web的自动化测试工具,为网站自动化测试而开发,Selenium可以直接运行在浏览器上,它支持所有主流的浏览器,可以接收指令,让浏览器自动加载界面,获取需要的数据,页面截屏。

一、selenium工具安装

浏览器:谷歌、火狐、Edge,这些浏览器的内核都是google

打开浏览器设置,查看浏览器版本

selenium网页跳转,Python爬虫与数据分析,python,selenium,测试工具,爬虫

打开chromedriver下载网页,选择一个和浏览器内核版本最接近的一个版本:CNPM Binaries Mirrorhttps://registry.npmmirror.com/binary.html?path=chromedriver/点击进入,此处以windows环境为示例:

selenium网页跳转,Python爬虫与数据分析,python,selenium,测试工具,爬虫下载安装包,并解压这个文件,得到这个exe文件

selenium网页跳转,Python爬虫与数据分析,python,selenium,测试工具,爬虫

如果你是使用PyCharm自带的Python解释器,那么你需要将这个文件放入你的PyCharm文件的bin目录下,例如:C:\...\PyCharm Community Edition 2022.1.3\bin

如果你是通过PyCharm使用Anaconda虚拟环境,那么你需要将这个文件放入你的Anaconda文件的Scripts目录下,例如:C:\...\Anaconda3\Scripts

添加环境变量,如果你已经是使用过PyCharm的用户,那么你的PyCharm大概率是已经添加进入环境变量了,此时你不用再添加环境变量

selenium网页跳转,Python爬虫与数据分析,python,selenium,测试工具,爬虫

二、selenium打开浏览器测试

写一个访问浏览器页面的测试代码,首先下载selenium模块

from selenium import webdriver
import time

# 这两个方法二选一,webdriver.Chrome()会真的打开一个浏览器
# driver = webdriver.PhantomJS()
driver = webdriver.Chrome()

# 访问浏览器网址
driver.get('https://www.douban.com/')

# 截图保存图片
driver.save_screenshot("首页.png")

# 页面停留时间
time.sleep(5)

# 退出当前页面
driver.close()

# 退出浏览器
driver.quit()

运行成功会打开浏览器豆瓣首页网址并停留5秒,拿到首页截图。

三、无头浏览器

无头浏览器不会打开浏览器页面,但会访问网页,适用于Linux环境

最新的selenium已经放弃了Phantomjs,直接将无头浏览器的逻辑进行了整合

from selenium import webdriver

# 无头
from selenium.webdriver.chrome.options import Options

# 配置参数
opt = Options()
opt.add_argument("--headless")
opt.add_argument("--disable-gpu")

# 把参数配置给浏览器
driver = webdriver.Chrome(options=opt)

driver.get("https://www.douban.com/")
driver.save_screenshot("./selenium_test/首页1.png")
driver.close()
driver.quit()

四、元素定位

from selenium import webdriver
import time
from lxml import etree

# 无头
from selenium.webdriver.chrome.options import Options

# 元素定位
from selenium.webdriver.common.by import By

# 配置参数
opt = Options()
opt.add_argument("--headless")
opt.add_argument("--disable-gpu")

# 把参数配置给浏览器
driver = webdriver.Chrome(options=opt)

driver.get("https://book.douban.com/")

# 截屏当前页面
driver.save_screenshot("./selenium_test/tv.png")

# 获取前端代码
test = driver.page_source
# print(test)

# html = etree.HTML(test)
# xpath_result = html.xpath('//*[@id="content"]/div/div[1]/div[1]/div[2]/div[1]/div/ul[2]/li')
# print(xpath_result)
# print(len(xpath_result))
# for i in xpath_result:
#     print(i.xpath('.//div[@class="info"]//a/@title'))

# 元素定位
xpath_result = driver.find_element(By.XPATH, '//*[@id="content"]/div/div[1]/div[1]/div[2]/div[1]/div/ul[2]/li[1]')
print(xpath_result)
print(xpath_result.text)


time.sleep(3)
driver.close()
driver.quit()

五、页面滑动

from selenium import webdriver
import time

driver = webdriver.Chrome()

driver.get("https:/www.douban.com/")

time.sleep(2)
js = 'window.scrollTo(0, 10000)'   # 向下滑
# js = 'window.scrollTo(10000, 0)' # 向右滑
# js = 'window.scrollTo(10000, 10000)' # 向右并向下滑
driver.execute_script(js)
time.sleep(2)       
js = 'window.scrollTo(0, -10000)'  # 向上滑
driver.execute_script(js)

time.sleep(5)

driver.close()
driver.quit()

六、按键、填写登录表单

from selenium import webdriver
import time
from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

try:
    driver.get('https://book.douban.com/')
    time.sleep(3)

    btn = driver.find_element(By.LINK_TEXT, '登录/注册')
    btn.click()

    # url = driver.current_url
    # driver.get(url)

    driver.find_element(By.XPATH, '//*[@id="account"]/div[2]/div[2]/div/div[1]/ul[1]/li[2]').click()
    time.sleep(2)

    # 填写登录表单
    driver.find_element(By.XPATH, '//*[@id="username"]').send_keys('12345678')
    driver.find_element(By.XPATH, '//*[@id="password"]').send_keys('202125DOUBAN')
    time.sleep(2)

    driver.find_element(By.XPATH, '//*[@id="account"]/div[2]/div[2]/div/div[2]/div[1]/div[4]/a').click()

    time.sleep(10)
    driver.close()
    driver.quit()

except:
    print(Exception)

七、页面切换

不同的网站有不同的应有场景,有些网站不会新生成页面,有些网站可以自动跳转

from selenium import webdriver
from selenium.webdriver.common.by import By
from lxml import etree
import time

url = 'https://www.bilibili.com/'
driver = webdriver.Chrome()
driver.get(url)

html = driver.page_source
html = etree.HTML(html)

href = html.xpath('//*[@id="i_cecream"]/div[2]/main/div[2]/div/div[1]/div[5]/div/div[2]/a/@href')
print(href)
time.sleep(3)

driver.find_element(By.XPATH, '//*[@id="i_cecream"]/div[2]/main/div[2]/div/div[1]/div[5]/div/div[2]/a').click()

time.sleep(3)
# 获取当前所有窗口
current_windows = driver.window_handles
# 根据窗口索引进行切换
driver.switch_to.window(current_windows[0])     # 从 0 下标开始

time.sleep(3)
driver.close()
time.sleep(3)
driver.quit()

八、实战爬取当当网书籍数据

配置无头浏览器更方便测试和程序的执行

当爬取的数据量较少时,可将数据存入列表数据结构中,当爬取大量数据时,可以一边爬取一边将数据写入文件

利用selenium工具lxml模块的配合对前端页面的数据做处理,使程序能自动获取多个前端页面的数据文章来源地址https://www.toymoban.com/news/detail-551985.html

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from lxml import etree

# 配置无头浏览器参数
opt = Options()
opt.add_argument("--headless")
opt.add_argument("--disable-gpu")

# 打开浏览器,传入无头参数
driver = webdriver.Chrome(options=opt)

driver.get('http://search.dangdang.com/')

book_key = input('请输入图书关键字: ')
driver.find_element(By.XPATH, '//*[@id="book_key"]').send_keys(book_key)

# 搜索图书
driver.find_element(By.XPATH, '//*[@id="search_btn1"]').click()

# 爬取界面页数
books_num = int(input('请输入需要爬取的界面页数(60本/页): '))
books_info_lst = []
for i in range(books_num):
    driver.find_element(By.XPATH, f'//*[@id="12810"]/div[5]/div[2]/div/ul/li[{i+2}]/a').click()

    # 获取前端代码
    text = driver.page_source
    html = etree.HTML(text)

    # 获取单页书籍列表
    books_lst = html.xpath('//ul[@id="component_59"]/li')
    for book in books_lst:
        book_name = book.xpath("a/@title")[0]
        book_author = book.xpath("p[@class='search_book_author']/span/a/@title")[0]
        book_price = book.xpath("p[@class='price']/span[@class='search_now_price']/text()")[0]
        try:
            book_detail = book.xpath("p[@class='detail']/text()")[0]
        except:
            book_detail = '没有简介'
        books_info_lst.append((book_name, book_author, book_price, book_detail))

for i in books_info_lst:
    print(i)
print(len(books_info_lst))

driver.close()
driver.quit()

到了这里,关于【Python爬虫与数据分析】爬虫selenium工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 爬虫与数据分析项目实战2.1 Selenium爬取Boss招聘信息

    完成: 1.爬取信息 2.基于爬取结果筛选符合条件的信息    岗位名称、薪资、岗位要求、地区、公司名称、公司规模、细节链接 3.筛选base杭州的岗位保存到csv文件中 But容易出现网络不稳定造成的无法定位元素所在位置的情况,小范围爬取可以 4.基于csv分析后续

    2024年02月08日
    浏览(31)
  • Python爬虫|使用Selenium轻松爬取网页数据

    1. 什么是selenium? Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作浏览器一样。支持的浏览器包括IE,Firefox,Safari,Chrome等。 Selenium可以驱动浏览器自动执行自定义好的逻辑代码,也就是可以通过代码完全模拟成人类使用

    2024年02月04日
    浏览(36)
  • Python爬虫——Selenium在获取网页数据方面的使用

    目录 一、Selenium (一)引入  (二)启动浏览器 二、操作 (一)点击 (二)输入 三、数据获取 四、特点 五、抓取拉钩实例 六、其他操作 (一)窗口切换 代码 (二)操作下拉列表/无头浏览器 代码         一个电影票房的网站里,响应数据是一串完全看不懂的字符串

    2024年02月07日
    浏览(33)
  • 大数据舆情评论数据分析:基于Python微博舆情数据爬虫可视化分析系统(NLP情感分析+爬虫+机器学习)

    基于Python的微博舆情数据爬虫可视化分析系统,结合了NLP情感分析、爬虫技术和机器学习算法。该系统的主要目标是从微博平台上抓取实时数据,对这些数据进行情感分析,并通过可视化方式呈现分析结果,以帮助用户更好地了解舆情动向和情感倾向。系统首先利用爬虫技术

    2024年04月15日
    浏览(32)
  • 大数据爬虫分析基于Python+Django旅游大数据分析系统

    欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。    基于Python和Django的旅游大数据分析系统是一种使用Python编程语言和Django框架开发的系统,用于处理和分析旅游行业的大数据,为旅游从业者和决策者提供有关旅游趋势、客户需求、市场竞争

    2024年02月03日
    浏览(47)
  • 【Python爬虫与数据分析】基本数据结构

    目录 一、概述 二、特性 三、列表 四、字典 Python基本数据结构有四种,分别是列表、元组、集合、字典 ,这是Python解释器默认的数据结构,可以直接使用,无需像C语言那样需要手搓或像C++那样需要声明STL头文件。 Python的数据结构非常灵活,对数据类型没有限制,即一个数

    2024年02月11日
    浏览(37)
  • Python爬虫数据分析的基本概念

    Python爬虫数据分析是一种利用Python编程语言和相关的库来获取互联网上的数据,并对数据进行处理、分析和可视化的技术。Python爬虫数据分析技术在数据挖掘、商业智能、市场调研、舆情分析等领域都有广泛的应用。本文将介绍Python爬虫数据分析的基本概念、常用库和实战案

    2024年02月06日
    浏览(31)
  • 【Python爬虫与数据分析】进阶语法

    目录 一、异常捕获 二、迭代器 三、拆包、聚合、映射 四、filter() 函数 五、匿名函数 六、闭包 七、装饰器 异常捕获可增强程序的健壮性,即程序在遇到遇到异常的时候并不会做中断处理,而是会将异常抛出,由程序员来分析异常和做异常处理。 迭代器通常用于数据结构对

    2024年02月12日
    浏览(36)
  • 简单的用Python抓取动态网页数据,实现可视化数据分析

    一眨眼明天就周末了,一周过的真快! 今天咱们用Python来实现一下动态网页数据的抓取 最近不是有消息说世界首富马上要变成中国人了吗,这要真成了,可就是历史上首位中国世界首富了! 那我们就以富豪排行榜为例,爬取一下2023年国内富豪五百强,最后实现一下可视化分

    2024年02月05日
    浏览(36)
  • 数据分析毕业设计 大数据招聘岗位数据分析与可视化 - 爬虫 python

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年02月10日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包