Python爬虫(四)—深入学习Selenium

基于Python +Selenium的爬虫详解 一、selenium简介 由于requests模块是一个不完全模拟浏览器行为的模块,只能爬取到网页的HTML文档信息,无法解析和执行CSS、JavaScript代码,因此需要我们做人为判断; 1、什么是selenium selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法执行javaScript代码的问题。 selenium模块本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器;由于seleniu 阅读详情

前言

以下关于Selenium的内容讲解,强烈推荐深入了解的查看官方文档。

英文版:Selenium、 https://selenium-python.readthedocs.io/

Selenium介绍安装

  • 介绍
    selenium 是一套完整的web应用程序测试系统,包含了测试的录制(selenium IDE),编写及运行(Selenium Remote Control)和测试的并行处理(Selenium Grid)。Selenium的核心Selenium Core基于JsUnit,完全由JavaScript编写,因此可以用于任何支持JavaScript的浏览器上。
    selenium可以模拟真实浏览器,自动化测试工具,支持多种浏览器,爬虫中主要用来解决JavaScript渲染问题。
  • 安装使用 selenium
    virtualenv 来创建隔离的Python环境。
    pip install selenium
  • 选择下载浏览器驱动
    下载以下driver后,放到Python虚拟环境的 Scripts 文件夹下。
浏览器下载地址
Chromehttps://sites.google.com/a/chromium.org/chromedriver/downloads
Edgehttps://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefoxhttps://github.com/mozilla/geckodriver/releases
Safarihttps://webkit.org/blog/6900/webdriver-support-in-safari-10/
  • PhantomJS
    PhantomJS是一个而基于WebKit的服务端JavaScript API,支持Web而不需要浏览器支持,其快速、原生支持各种Web标准:Dom处理,CSS选择器,JSON等等。PhantomJS可以用用于页面自动化、网络监测、网页截屏,以及无界面测试。速度比Selenium快很多,最后进行讲解。

Selenium 的基本使用

  • 声明浏览器对象、访问页面
from selenium import webdriver

browser = webdriver.Chrome()

browser.get("http://www.baidu.com")
print(browser.page_source)
browser.close()
  • 查找单元素
    • 获取方式
      以下通过三种不同的方式去获取响应的元素,第一种是通过id的方式,第二个中是CSS选择器,第三种是xpath选择器,结果都是相同的。
from selenium import webdriver

browser = webdriver.Chrome()

browser.get("http://www.taobao.com")
input_first = browser.find_element_by_id("q")
input_second = browser.find_element_by_css_selector("#q")
input_third = browser.find_element_by_xpath('//*[@id="q"]')
print(input_first)
print(input_second)
print(input_third)
browser.close()

CSS选择器、xpath选择器 可以直接采用chrome浏览器的右击复制,如下图:

chrome快捷复制节点.png

  • 查找元素方法
    • find_element_by_name
    • find_element_by_id
    • find_element_by_xpath
    • find_element_by_link_text
    • find_element_by_partial_link_text
    • find_element_by_tag_name
    • find_element_by_class_name
    • find_element_by_css_selector
      以上方法也可以通过By.NAME等进行获取。如以下代码
from selenium import webdriver

from selenium.webdriver.common.by import By

browser = webdriver.Chrome()

browser.get("http://www.taobao.com")

# 匹配的元素的ID
# input_first_By_ID = browser.find_element_by_id('q')
# 以下类似,都有两种方式。
input_first_By_ID = browser.find_element(By.ID, "q")

# 匹配的元素的xpath定位器
input_first_By_XPATH = browser.find_element(By.XPATH, "//*[@id=\"q\"]")

# 匹配的元素的name属性
input_first_By_NAME = browser.find_element(By.NAME, "q")

# 匹配的元素的文本
input_first_LINK_TEXT = browser.find_element(By.LINK_TEXT, "领淘金币抵钱")

# 匹配的元素的标签名称,例如:h1,a,span
input_first_CSS_SELECTOR = browser.find_element(By.CSS_SELECTOR, "#q")

print(input_first_CSS_SELECTOR)
browser.close()
"""
<selenium.webdriver.remote.webelement.WebElement (session="4ee277c466be7248d4c7e078cbf927db", element="0.09114132600392044-1")>
"""
  • 多元素查找
    与以上类似,只不过在以上的方法 find_element_by_css_selector -> find_elements_by_css_selector ,加一个s。

    并且在输出的时候是以list的形式返回,例如以上的输出修改为:
    [<selenium.webdriver.remote.webelement.WebElement (session=“cdbd8f4c90c313c9e94519414365f552”, element=“0.40080093360381364-1”)>]

疑问查看:WebDriver API https://selenium-python.readthedocs.io/api.html

from selenium import webdriver
from selenium.webdriver import ActionChains

browser = webdriver.Chrome()

url = "http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable"
browser.get(url)
browser.switch_to.frame('iframeResult')
source = browser.find_element_by_css_selector('#draggable')
target = browser.find_element_by_css_selector('#droppable')
actions = ActionChains(browser)
actions.drag_and_drop(source, target)
actions.perform()
  • 元素交互操作:输入、清空、点击
    对于获取的元素调用交互方法,主要是元素值的输入、清空、点击等操作。
    以下代码运行为:程序自动打开Chrome浏览器并打开淘宝输入ipad,然后删除,重新输入MakBook pro,并点击搜索。
from selenium import webdriver
import time

browser = webdriver.Chrome()
browser.get("http://www.taobao.com")
input_str = browser.find_element_by_id('q')
input_str.send_keys("ipad")
time.sleep(1)
input_str.clear()
input_str.send_keys("MakBook pro")
button = browser.find_element_by_class_name('btn-search')
button.click()
time.sleep(3)
browser.close()

chromeOptions

chromeOptions 是一个配置 chrome 启动是属性的类。通过这个类,我们可以为chrome配置如下参数(这个部分可以通过selenium源码看到)

  • 添加实验性质的设置参数 add_experimental_option
    代码如下:
# 实例化一个启动参数对象
options = webdriver.ChromeOptions()
# 设置浏览器窗口大小
options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
# 启动浏览器
browser = webdriver.Chrome(chrome_options=chrome_options)

常用的参数如下:

  1. 设置为开发者模式 (‘excludeSwitches’, [‘enable-automation’)
  2. 不加载图片,加快访问速度 (“prefs”, {“profile.managed_default_content_settings.images”: 2})
  3. 模拟手机打开网页 (‘mobileEmulation’, {‘deviceName’: ‘Apple iPhone 4’})
  4. 关闭保存密码提示
options = webdriver.ChromeOptions() 
prefs = {} 
# 设置这两个参数就可以避免密码提示框的弹出
prefs['credentials_enable_service'] = False 
prefs['profile.password_manager_enabled'] = False 
options.add_experimental_option('prefs', prefs) 
browser = webdriver.Chrome(chrome_options=options)
启动参数作用
–user-agent="设置请求头的User-Agent
–window-size=1366,768设置浏览器分辨率(窗口大小)
–headless无界面运行(无窗口)
–start-maximized最大化运行(全屏窗口)
–incognito隐身模式(无痕模式)
–disable-javascript禁用javascript
–disable-infobars禁用浏览器正在被自动化程序控制的提示
  • 添加扩展应用 (add_extension, add_encoded_extension)
  • 设置 chrome 二进制文件位置 (binary_location)
  • selenium源码
    在目录 \env\Lib\site-packages\selenium\webdriver\chrome\optitions.py 下。
class Options(object):
    KEY = "goog:chromeOptions"

    def __init__(self):
        self._binary_location = ''
        self._arguments = []
        self._extension_files = []
        self._extensions = []
        self._experimental_options = {}
        self._debugger_address = None
        self._caps = DesiredCapabilities.CHROME.copy()

执行JavaScript

  • 调用js方法
    下面的例子是通过登录知乎然后通过js翻到页面底部,并弹框提示。
from selenium import webdriver

browser = webdriver.Chrome()
browser.get("http://www.zhihu.com/explore")
browser.execute_script('window.scrollTo(0, document.body.scrollHeight)')
browser.execute_script('alert("To Bottom")')
  • 获取元素属性、文本值
    可以通过 get_attribute(‘class’) 获取元素的class属性、href属性、文本值等。
from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
logo = browser.find_element_by_id('zh-top-link-logo')
print(logo)
print(logo.get_attribute('class'))  # zu-top-link-logo
print(logo.text)  # 知乎
  • 获取ID,位置,标签名
from selenium import webdriver

browser = webdriver.Chrome()
url = 'https://www.zhihu.com/explore'
browser.get(url)
input = browser.find_element_by_class_name('zu-top-add-question')
print(input.id)
print(input.location)
print(input.tag_name)
print(input.size)
"""
0.8051799500933536-1
{'x': 758, 'y': 7}
button
{'height': 32, 'width': 66}
"""

Frame

涉及到切入到frame中以及切出来的问题,常用的是switch_to.from()和switch_to.parent_frame(),如以下代码:

import time
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException

browser = webdriver.Chrome()
url = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
browser.get(url)

browser.switch_to.frame('iframeResult')

source = browser.find_element_by_css_selector('#draggable')
print(source)
try:
    logo = browser.find_element_by_class_name('logo')
except NoSuchElementException:
    print('NO LOGO')

browser.switch_to.parent_frame()

logo = browser.find_element_by_class_name('logo')
print(logo)
print(logo.text)

等待 Waits

以下内容基本摘自:https://selenium-python.readthedocs.io/waits.html

  • 显式等待
    WebDriverWait与ExpectedCondition相结合是一种可以实现的方法。EC.presence_of_element_located()是确认元素是否已经出现。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Firefox()
driver.get("http://somedomain/url_that_delays_loading")
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()

在抛出TimeoutException之前等待最多10秒,除非它发现元素在10秒内返回。默认情况下,WebDriverWait每500毫秒调用一次ExpectedCondition,直到它成功返回。对于所有其他ExpectedCondition类型,ExpectedCondition类型的布尔返回true或非null返回值成功返回。

  • 常用的判断条件如下
预期条件目的
title_is标题是某内容
title_contains标题包含某内容
presence_of_element_located元素加载出,传入定位元组,如(By.ID,‘p’)
visibility_of_element_located元素可见,传入定位元组
visibility_of可见,传入元素对象
presence_of_all_elements_located所有元素加载出
text_to_be_present_in_element某个元素文本包含某文字
text_to_be_present_in_element_value某个元素值包含某文字
frame_to_be_available_and_switch_to_itframe加载并切换
invisibility_of_element_located元素不可见
element_to_be_clickable元素可点击
staleness_of判断一个元素是否仍在DOM,可判断页面是否已经刷新
element_to_be_selected元素可选择,传元素对象
element_located_to_be_selected元素可选择,传入定位元组
element_selection_state_to_be传入元素对象以及状态,相等返回True,否则返回False
element_located_selection_state_to_be传入定位元组以及状态,相等返回True,否则返回False
alert_is_present是否出现Alert
  • 自定义等待条件
    如果以前的便捷方法都不符合您的要求,您还可以创建自定义等待条件。可以使用带有__call__方法的类创建自定义等待条件,该方法在条件不匹配时返回False。示例 : 略…
  • 隐式等待
    到了一定的时间发现元素还没有加载,则继续等待我们指定的时间,如果超过了我们指定的时间还没有加载就会抛出异常,如果没有需要等待的时候就已经加载完毕就会立即执行。
from selenium import webdriver

browser = webdriver.Chrome()
browser.implicitly_wait(10)
browser.get('https://www.zhihu.com/explore')
input = browser.find_element_by_class_name('zu-top-add-question')
print(input)

其他操作

  • 浏览器的前进和后退
    • 后退:back()
    • 前进:forward()
import time
from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com/')
browser.get('https://www.taobao.com/')
browser.get('https://www.python.org/')
browser.back()
time.sleep(1)
browser.forward()
browser.close()
  • cookie操作
    • get_cookies()
    • delete_all_cookes()
    • add_cookie()
from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
print(browser.get_cookies())

browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'zhaofan'})

print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies())
  • 选项卡管理
    通过执行js命令实现新开选项卡window.open()
    不同的选项卡是存在列表里browser.window_handles
    通过browser.window_handles[0]就可以操作第一个选项卡
import time
from selenium import webdriver

browser = webdriver.Chrome()
browser.get('https://www.baidu.com')
browser.execute_script('window.open()')
print(browser.window_handles)
browser.switch_to_window(browser.window_handles[1])
browser.get('https://www.taobao.com')
time.sleep(1)
browser.switch_to_window(browser.window_handles[0])
browser.get('https://python.org')
from selenium import webdriver
from selenium.common.exceptions import TimeoutException, NoSuchElementException

browser = webdriver.Chrome()
try:
    browser.get('https://www.baidu.com')
except TimeoutException:
    print('Time Out')
try:
    browser.find_element_by_id('hello')
except NoSuchElementException:
    print('No Element')
finally:
    browser.close()

selenium 模拟手机

有些操作,需要模拟手机才能继续进行,例如微信的公众号、服务号。直接上代码,模拟手机型号等属性。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

mobile_emulation = {"deviceName": "Pixel 2 XL",
                    }
options = Options()
options.add_experimental_option("mobileEmulation", mobile_emulation)
driver = webdriver.Chrome(chrome_options=options)
...

PhantomJS

from selenium import webdriver

browser = webdriver.PhantomJS()

browser.get("http://www.baidu.com")
print(browser.page_source)
browser.close()

由于selenium对phantomjs不再支持,因此会警告:UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead

个人博客:Loak 正 - 关注人工智能及互联网的个人博客
文章地址:Python爬虫(四)—深入理解Selenium

Python 网络爬虫高阶用法 通过学习本文的内容,读者应掌握 Python 网络爬虫的高级用法,并能够应对反爬虫机制、抓取动态网页、实现分布式和异步爬虫。网络爬虫技术在数据抓取、信息采集等方面有着广泛的应用,掌握这些技能将大大提升数据处理和分析的效率。 阅读详情

相关推荐

五分钟学会Python网络爬虫

但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的。在学习之前,我们还是要先了解一下相关概念。 什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 大数据时代,要进行数据分析,首先要有数据源,可数据源从哪里来,花钱买,没预算,只能从其它网站就行抓取。 细分下来,业内分为两类:爬虫和反爬虫。 反爬虫:顾名思义,就是防止你来我网站或APP上做爬虫的。 爬虫工程师和反爬虫工程师是一对相爱相杀的小伙伴,经常因为对方要加班写代码,

python588的博客 2360

Python爬虫:selenium

Python爬虫之selenium

mengnf的专栏 2万+

[Python]网络爬虫总结

# [Python]网络爬虫总结 本文将对Python网络爬虫进行简要的总结,涵盖了我目前所使用的所有方法。 静态网页对于静态网页,就不多说了,太简单了。只要用requests库直接把html爬下来,然后用正则表达式匹配即可。但是到了目前互联网发展阶段,已经很少有静态网页了。如果你遇到要爬虫静态网页,那你一定是非常幸福了。动态网页动态网页是比较常见的爬虫目标,这里我给出一些比较常见的爬虫方法,仅

stary_yan的博客 1万+

Selenium之Chrome选项和Desiredcapabilities: 禁用广告,无痕浏览,无头模式

ChromeOption类是什么?用于操作Chrome驱动程序的各种属性。Chrome Option类通常与Desired Capabilities(期望功能)一起使用。例如:下面的例子...

软测小生 7万+

【100天精通python】Day41:python网络爬虫开发_爬虫基础入门

网络爬虫(Web Crawler),是一种自动化程序,用于在互联网上浏览和抓取信息。爬虫可以遍历网页,收集数据,提取信息,以便于进一步处理和分析。网络爬虫在搜索引擎、数据采集、信息监测等领域发挥着重要作用。1.1 工作原理初始URL选择: 爬虫从一个或多个初始URL开始,这些URL通常是你希望开始爬取的网站的主页或其他页面。发送HTTP请求: 对于每个初始URL,爬虫会发送HTTP请求以获取网页内容。

qq_35831906的博客 6670

Selenium深入浅出.pdf

新的自动化测试工具,简单易学,很快就会上手,摆脱自动化测试的烦恼

python爬虫——selenium

本文涉及了selenium在爬虫中的应用,包括定位元素,节点操作,添加cookie,反屏蔽等常用操作以及seleium中部分API源码分析

weixin_53333436的博客 8645

MaxEnt软件的下载与安装

1、下载网站:http://lucky-boy.ys168.com/ (这是之前在网上搜到的,里面有许多软件安装包,感谢网页主的资源共享,违权必删)

weixin_42191203的博客 2万+

Python selenium无界面headless

Chrome-headless 模式, Google 针对 Chrome 浏览器 59版 新增加的一种模式,可以让你不打开UI界面的情况下使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致,因此速度快与要打开界面的selenium,其使用方法和selenium一样。

java1234的博客 2134

Android 12 HAL开发避坑实录:手把手教你用AIDL在Native层实现一个可开机自启动的Service

本文详细介绍了在Android 12 HAL开发中,如何通过AIDL在Native层实现一个可开机自启动的Service。从环境准备、AIDL接口定义、服务实现到VINTF集成与SELinux策略配置,提供了完整的实战指南,帮助开发者避开常见陷阱,提升开发效率。

weixin_28314575的博客 322

【SAP PO】SAP PO 接口配置完整教程之二REST服务对接

SAP PO 接口配置完整教程之二REST服务对接

XLevon的博客 1万+

python网络爬虫学习笔记之四 Selenium操作元素和浏览器

一、基础知识 Selenium操作元素有find_element_by_xxx 和 find_elements_by_xxx 各八个定位元素的方法: find_element_by_id find_element_by_name find_element_by_class_name find_element_by_tag_name find_element_by_link_text find...

跟着互联网 270

【芯片驱动】2. CMT2300A配合硬件测试(灵敏度和发射功率)的软件实现

前言 在开发一款无线射频产品的时候,软件是一部分,硬件也是一部分。而决定无线收发性能的,首先是硬件的匹配电路,然后才到软件部分的优化。 一款无线射频产品,首先需要先决定是在那个频率范围内(当然是国家允许的范围内),然后硬件则需要在基于这个频点范围进行硬件的参数匹配,具体又分为发送功率匹配、天线匹配、和接收灵敏度的匹配。 现在我们使用2300a这款无线芯片来说,除非自己的团队是射频专家,则可以自己进行无线外围电路的设计外,另外一种更加快捷的方式,就是寻找原厂技术支持,他们会给...

sishuihuahua的博客 7056

网络爬虫解析

网络爬虫(也称为网页蜘蛛、网络机器人)是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。网络爬虫可以用于从网站提取数据,例如监测社交媒体平台上的活动,或者从网上收集新闻和文章。它们也可以用于搜索引擎,如Google和Bing,来抓取和索引网页,以便在用户进行搜索时提供结果。URL通常由多个部分组成,包括协议类型(如HTTP、HTTPS)、主机名(域名或IP地址)、路径(资源在主机上的位置)以及可选的查询参数(用于传递额外的信息)。通过URL,用户可以方便地访问和定位到特定的网络资源。

2301_82032652的博客 2635

【python股票价格预测】基于LSTM(长短期记忆网络)的股票价格预测(附python代码)

【python股票价格预测】基于LSTM(长短期记忆网络)的股票价格预测(附python代码)

k8291121的博客 1013

OpenClaw赚钱实录:从“养龙虾“到可持续变现的实践指南

OpenClaw已经开源3个月有余,作为深耕AI Agent领域的博主,我亲身探索了各种基于OpenClaw的赚钱方法,也踩过坑、付出了时间与精力。现在,我将这些真金白银砸出来的实战经验,毫无保留地总结成这个专栏,分享给不想从零开始摸索的你。博主在优快云已有7万+粉丝和1100万+阅读量,但这却是我的第一个付费专栏。正因如此,我比任何人都更珍惜这个“第一次”。我会像一个手艺人打磨作品一样,死磕每一篇文章的质量,并持续根据订阅者的反馈优化内容。也许你的疑问就是当篇文章的优化点。

冯·诺依曼 2445

【好书推荐3】Python网络爬虫入门到实战

本书介绍了Python3网络爬虫的常见技术。首先介绍了网页的基础知识,然后介绍了urllib、Requests请求库以及XPath、Beautiful Soup等解析库,接着介绍了selenium对动态网站的爬取和Scrapy爬虫框架,最后介绍了Linux基础,便于读者自主部署编写好的爬虫脚本。本书所有代码和相关素材可以到GitHub下载获取,地址为https://github.com/sfvsfv/Crawer。本书主要面向对网络爬虫感兴趣的初学者。杨涵文。

定期分享我的发现和想法,感谢你的陪伴和支持 7927

uniapp - 解决报错Error in event handler for “service.requestComponentInfo“: “TypeError: cannot read prop

uniapp,报错,Error in event handler for "service.requestComponentInfo": "TypeError: cannot read properties of undefined (reading 'matches')",h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,如何解决这个问题,一直报错,uniapp报错Error,都检查了还是报错,怎么解决这个错误,uniapp出现Error in event han

🏆 前端领域优质创作者 6380

使用 Selenium Wire 进行 Python 网络爬虫

是 Selenium Python 绑定的一个扩展,能够对浏览器请求进行控制。它允许直接在使用 Selenium 的同时,从 Python 代码中实时拦截并修改请求与响应。注意该库目前已停止维护,但依然有不少爬虫技术和脚本在使用。

亮数据 Bright Data 的博客 1826

学Simulink--机器人基础关节控制场景实例:基于Simulink的无刷直流电机(BLDC)关节六步换相位置控制仿真

本文详细介绍了基于Simulink的BLDC六步换相位置控制仿真方法,针对机器人关节的低成本控制需求。重点阐述了霍尔定位、六步换相和位置闭环三大核心原理,通过Simulink建模实现了从霍尔信号处理到位置环控制的全流程。仿真结果表明,该系统可实现0.3°的定位精度和80ms的响应时间,满足教育机器人等应用场景需求。文章还提供了核心代码模块和参数设置方法,并探讨了转矩脉动抑制、无传感器控制等进阶优化方向,为低成本机器人关节驱动提供了实用解决方案。

amy_mhd的博客 154

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

python网络爬虫爬取静态网页

网络爬虫又称网页蜘蛛、网络机器人,是一种按照一定的规则、自动请求万维网网站并提取网络数据的程序或脚本。如果说网络像一张网,那么爬就是网上的一只小电子,在网上爬行的过程中遇到了数据,就把它爬取下来。网络爬虫的常用功能:如图所示。获取大量数据,用来做数据分析公司项目的测试数据,公司业务所需数据Python做爬虫优势1、Python :请求模块、解析模块丰富成熟,强大的Scrapy网络爬虫框架2、PHP :对多线程、异步支持不太好3、JAVA:代码笨重,代码量大。

m0_74198026的博客 3273

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

网络爬虫之Selenium(可视化)爬虫

一、网络爬虫介绍 1、什么是爬虫: 网络爬虫(web crawler)也叫网页蜘蛛,网络机器人,是一种用来自动浏览万维网的程序或者脚本。爬虫可以验证超链接和HTML代码,用于网络抓取(Web scraping)。网络搜索引擎等站点通过爬虫软件更新自身的网站内容(Web content)或其对其他网站的索引。 2、爬虫的由来(为什么会有爬虫): 随着时代的发展,信息时代引领时代潮流,但我们到网上去搜集信息时,查找网上的海量信息就像大海捞针,森罗万象,要提取到对我们有用的信息,我们...

boy_10的博客 4800

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

从入门到精通:网络爬虫开发实战总结

学习是一种持续不断的过程,无论在什么领域,都需要不断地努力和探索。在这段爬虫学习历程中,我不仅获得了丰富的知识和技能,也结交了很多志同道合的朋友和粉丝,他们对我的学习和进步都提供了极大的支持和鼓励,支持我继续写下去。 总的来说,这段时间的学习和写作让我认识到了自己的不足和缺陷,也让我更加坚定了继续学习和进步的决心。我相信,在未来的学习和工作中,这段经历将成为我前行的动力和支撑。在这里,我将过去写过的爬虫文章总结一下,不仅是在爬虫学习这里留下一个里程碑,也是为了能够总结一下阶段性学习成果。

weixin_50804299的博客 6560

14.网络爬虫—selenium详讲

🧾 🧾Selenium是一个自动化测试工具,用于测试Web应用程序。它可以模拟用户在Web浏览器中的操作,如点击链接、填写表单、提交表单等。Selenium的主要特点是灵活性和可扩展性,它可以与其他工具和框架集成,如JUnitTestNGMavenAnt等。Selenium的核心组件包括和。Selenium IDE是一个浏览器插件,用于录制和回放测试脚本`;Selenium WebDriver是一个自动化测试框架,用于编写和执行测试脚本Selenium Grid是一个分布式测试框架,

weixin_50804299的博客 7014

【爬虫】基于 Selenium 的 Python 淘宝评论爬取

随着电子商务的发展,消费者评论已经成为购买决策中重要的参考因素之一。如何高效地抓取并分析大量的在线评论,成为了数据分析领域的重要课题。本文将探讨如何使用 Selenium 和 Python 自动化工具抓取网页中的评论数据,并结合技术实现分析过程。我们将详细介绍相关的抓取原理,如何利用 Selenium 库编写 Python 程序来实现这一目标,以及每段代码的详细解析。本篇文章不仅适合初学者学习如何使用 Selenium 进行网页抓取,也对有一定编程经验的读者提供了详细的技

2303_77200324的博客 5907

《Python 网络爬虫》

本文介绍了 Python 网络爬虫的基本概念、技术原理、常用工具以及实战案例,希望能够帮助读者快速掌握 Python 网络爬虫技术。在实际应用中,需要根据具体的需求选择合适的工具和方法,并注意遵守法律法规和网站的使用条款,避免对网站造成过大的负担和影响。Scrapy 是一个功能强大的 Python 爬虫框架,它提供了一套完整的爬虫开发工具,包括请求发送、网页解析、数据存储等。网络爬虫,又称为网页蜘蛛、网络机器人,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。(一)爬取新闻网站数据。

weixin_47266126的博客 1709
上一篇: Python爬虫(三)— 深入了解Requests模块
下一篇: Python爬虫(五)—正则表达式 re 的深入学习
luoz_python
博客等级 码龄10年 57粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值