爬虫案例实战
文章目录
- 一、窗口切换实战
- 二、京东数据抓取
一、窗口切换实战
案例实战:使用selenium实现打开百度和腾讯两个窗口并切换
知识点:用到selenium中execute_script()执行js代码及switch_to.window()方法
全部代码如下:
import time
import warnings
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Optionswarnings.filterwarnings('ignore')
# 创建ChromeOptions对象
chrome_options = Options()
# 添加启动参数,禁用浏览器自动化控制提示
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])driver = webdriver.Chrome(chrome_options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": " Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) "}
)
driver.maximize_window()
# 请求第1个网址:driver.get()
driver.get('https://www.baidu.com')
time.sleep(3)# 请求第2个网址:JS代码
js_code = 'window.open("https://www.qq.com")'
driver.execute_script(js_code)# 获取窗口
window_list = driver.window_handles# 切换窗口到百度
driver.switch_to.window(window_list[0])
driver.find_element(by=By.ID, value='kw').send_keys('风景')
driver.find_element(by=By.ID, value='su').click()
time.sleep(2)# 切换窗口到QQ
driver.switch_to.window(window_list[1])
driver.find_element(by=By.XPATH, value='//*[@id="qqhome-top-header"]/div/div/div[2]/div/input').send_keys('Python')
driver.find_element(by=By.XPATH, value='//*[@id="qqhome-top-header"]/div/div/div[2]/div/button/span').click()
input()
二、京东数据抓取
案例实战:使用selenium实现打开京东搜索商品并滑动页面获取数据
知识点:用到selenium中execute_script()执行js代码
全部代码如下:
import time
import warnings
from lxml import etree
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Optionskeyword = '手机'
warnings.filterwarnings('ignore')
# 创建ChromeOptions对象
chrome_options = Options()
# 添加启动参数,禁用浏览器自动化控制提示
chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])driver = webdriver.Chrome(chrome_options)
driver.execute_cdp_cmd("Page.addScriptToEvaluateOnNewDocument",{"source": " Object.defineProperty(navigator, 'webdriver', { get: () => undefined }) "}
)
driver.maximize_window()def requests_url():# 访问京东首页start_url = r'https://www.jd.com/'driver.get(start_url)input_data()def input_data():# 输入数据driver.find_element(by=By.ID, value='key').send_keys(keyword)time.sleep(2)driver.find_element(by=By.CLASS_NAME, value='button').click()time.sleep(8)Down_Scroll()def Down_Scroll():# 控制鼠标滑到底部for i in range(1, 11):js_code = 'scrollTo(0, {})'.format(i * 600)driver.execute_script(js_code)time.sleep(1)time.sleep(3)get_goods_info()def get_goods_info():# 解析响应response = driver.page_sourcehtml_xpath = etree.HTML(response)li_list = html_xpath.xpath('//div[@id="J_goodsList"]/ul/li')for li in li_list:# 1、商品标题goods_name_1 = li.xpath(r'.//div[@class="p-name p-name-type-2"]/a/em/text()')goods_name_2 = li.xpath(r'.//div[@class="p-name p-name-type-2"]/a/@title')goods_name = goods_name_1 if goods_name_1 != [] else goods_name_2goods_name = ''.join(goods_name).replace('\n', '').replace(' ', '').replace(' ', '')# 2、卖家名字sale_name = li.xpath(r'.//a[@class="curr-shop hd-shopname"]/@title')sale_name = ''.join(sale_name)# 3、商品价格goods_price = li.xpath(r'.//div/div[2]/strong/i/text()')goods_price = ''.join(goods_price)if goods_name != '':print(goods_name, sale_name, goods_price, sep=' | ')def main():requests_url()input()if __name__ == '__main__':main()
相关文章:
爬虫案例实战
文章目录 一、窗口切换实战二、京东数据抓取 一、窗口切换实战 案例实战:使用selenium实现打开百度和腾讯两个窗口并切换 知识点:用到selenium中execute_script()执行js代码及switch_to.window()方法 全部代码如下: import time import war…...
uniapp uni-popup内容被隐藏问题
今天开发新需求的时候发现uni-popup 过一会就被隐藏掉只留下遮罩(css被更改了),作者进行了如下调试。 1.讲uni-popup放入其他节点内 失败! 2.在生成dom后在打开 失败! 3.uni-popup将该节点在包裹一层 然后将统计设置样式,v-if v-s…...
leetcode155 最小栈
题目 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。i…...
在Ubuntu乌班图上安装Docker
最近在学习乌班图相关的内容,找了一些文档安装的都是报错的,于是记录一下学习过程,希望也能帮助有缘人,首先查看乌班图的系统版本,我的是如下的: cat /proc/version以下是在Ubuntu 20.04版本上安装Docker。…...
【Redis数据库百万字详解】数据持久化
文章目录 一、持久化1.1、什么是持久化1.2、持久化方式1.3、RDB优缺点1.4、AOF优缺点 二、RDB持久化触发机制2.1、手动触发2.2、自动触发 三、RDB持久化配置3.1、配置文件3.2、配置查询/设置3.3、禁用持久化3.4、RDB文件恢复 四、RDB持久化案例4.1、手动持久化4.2、自动持久化案…...
echarts legend. icon的展示
默认展示 icon展示circle圆形rect矩形roundRect圆角矩形triangle三角形diamond菱形pin水滴arrow箭头none不显示...
PHPstudy情况下上传图片马需要的.htaccess文件
网上的方法是无效的: <FilesMatch "test.jpg">SetHandler application/x-httpd-php</FilesMatch>原因是新版本的phpstudy使用了cgi模式,而网上的方法只适用于linux模式。 <FilesMatch "tpm.png"> AddHandler fcgid-script …...
基于最大重叠离散小波变换的PPG信号降噪(MATLAB 2018)
光电容积脉搏波PPG信号结合相关算法可以用于人体生理参数检测,如血压、血氧饱和度等,但采集过程中极易受到噪声干扰,对于血压、血氧饱和度测量的准确性造成影响。随着当今社会医疗保健技术的发展,可穿戴监测设备对于PPG信号的质量…...
Gradio中Button用法及事件监听器click方法使用
Gradio中Button用法及事件监听器click方法使用 瞎想乱记 事情是这样的:入职时面试的是Java,简历中写了会python,刚好最近有个小项目需要用Python实现,老板就将这个项目交给了我,我… 项目中还真遇到了好几个坑&#…...
【Qt秘籍】[005]-Qt的首次邂逅-创建
一、如何创建文件? 当我们打开Qt Creator,你会发现整个界面类目繁多。现在,让我们直接开始新建一个项目。 1.点击左上角的“文件”>点击“新建文件或项目” 2.如图,选择“Application”>“Qt Wifgets application”> “…...
亚信安慧AntDB:值得信任的数据产品
AntDB的一个显著特点是其高度的容错性和可靠性。AntDB采用了先进的冗余和备份机制,确保在面对硬件故障或系统异常时仍能保持数据的完整性和可用性。这种稳定性不仅为运营商的核心业务提供了持久的保障,也提升了用户的信任和满意度。 AntDB的容错性和可靠…...
超越传统AI 新型多智能体系统MESA,探索效率大幅提升
探索多智能体强化学习的协同元探索 —— MESA 算法深度解读在多智能体强化学习(MARL)的征途中,如何高效探索以发现最优策略一直是研究者们面临的挑战。特别是在稀疏奖励的环境中,这一问题变得更加棘手。《MESA: Cooperative Meta-…...
[SWPU 2019]神奇的二维码、buuctf部分web题
目录 [SWPU 2019]神奇的二维码 [LitCTF 2023]Http pro max plus [SWPUCTF 2021 新生赛]finalrce [鹏城杯 2022]简单包含 [SWPUCTF 2022 新生赛]ez_ez_php(revenge) [GKCTF 2020]cve版签到 cve-2020-7066: [SWPU 2019]神奇的二维码 解码看看,是…...
Python正则表达式匹配中文:深入解析与实战应用
Python正则表达式匹配中文:深入解析与实战应用 在Python编程中,正则表达式是一种强大的工具,它可以用来处理和分析字符串数据。对于需要处理包含中文字符的文本数据的场景,掌握如何使用正则表达式匹配中文就显得尤为重要。本文将…...
实例Python对比两个word文档并找出不同
首先确保已经有了安装包docx 与 difflib,如果没有先用pip命令安装如下 pip install python-docx案例代码 import docx import difflib import os 在文件目录中存在两个待对比的word文档,必须是docx格式 # 获取文档对象 # path input(请输入文件目录:…...
2.1 QT随手简记(三)
新建QT工程 1.方法 第一种:点击new project按钮,弹出对话框,新建即可 第二种;点击文件菜单,选择新建文件或者工程 2.QT工程文件介绍 (1).pro文件 --》QT工程配置文件 QT …...
TechM-技术网站
介绍 你将为⼀个技术社区设计并实现⼀个官⽹。该社区旨在为软件⼯程师、开发⼈员和技术 爱好者提供⼀个交流平台,分享最新的技术动态、⽂章、项⽬案例。 项目模块 项目分为三个模块 : 主页展示模块,文章详情模块,文章专栏模块…...
SpringBoot: 使用GraalVM编译native应用
曾今Go语言里让我最艳羡的两个特性,一个是Goroutine,一个是native编译。 Java 21的虚线程实现了类似Goroutine的能力。Spring Boot 3.x开始提供了GraalVM的支持,现在Spring Boot也能打包成native文件了。 这一篇文章的目标是用一个案例讲解如…...
9. MySQL事务、字符集
文章目录 【 1. 事务 Transaction 】1.1 事务的基本原理1.2 MySQL 执行事务的语法和流程1.2.1 开始事务1.2.2 提交事务1.2.3 回滚(撤销)事务实例1:一致性实例2:原子性 【 2. 字符集 和 校对规则 】2.1 基本原理2.2 查看字符集查看…...
为什么要学习数据结构和算法
前言 控制专业转码学习记录,本科没学过这门课,但是要从事软件行业通过相关面试笔试基础还是要打牢固的,所以通过写博客记录一下。 必要性 1.越是厉害的公司,越是注重考察数据结构与算法这类基础知识 2.作为业务开发,…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
虚拟电厂发展三大趋势:市场化、技术主导、车网互联
市场化:从政策驱动到多元盈利 政策全面赋能 2025年4月,国家发改委、能源局发布《关于加快推进虚拟电厂发展的指导意见》,首次明确虚拟电厂为“独立市场主体”,提出硬性目标:2027年全国调节能力≥2000万千瓦࿰…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
