打开新世界的大门——基于selenium的简易“爬虫”

【网络爬虫】基于Selenium爬取动态网页 目录一、Selenium介绍与配置1.Selenium简介2. Selenium+Python环境配置二、网页自动化测试1.启动浏览器并打开百度搜索2.定位元素三、爬取动态网页的名人名言1. 网页数据分析2. 翻页分析3.爬取数据的存储4. 爬取数据四、爬取京东网站书籍信息五、总结六、参考 一、Selenium介绍与配置 1.Selenium简介   Selenium 是ThoughtWorks专门为Web应用程序编写的一个验收测试工具。Selenium测试直接运行在浏览器中,可以模拟真实用户的行为。支持的 阅读详情

前言

当年发现selenium的时候宛如打开新世界的大门,使用起来简单易上手,对于新手十分友好。在anaconda上安装selenium即可使用。其优势在于可以和chrome浏览器提供的xpath完美结合,简化了分析标签的过程。

本次爬虫暂时先以爬取GitHub上不同语言下不同热度的项目及其fork, watch, star和标注的标签作为练习。

1.目标网页爬取分析

首先在GitHub上搜索java,点击most stars,网站会根据star数目将GitHub上代管的java语言编写的项目降序排序,分析其连接,使用的是显示传参,方便解析。

https://github.com/search?o=desc&p=2&q=java&s=stars&type=Repositories

GitHub搜索

其中,o代表升序或者是降序,p表示页码,s表示排序的依据,q表示搜索的关键字,可以根据自己的需要进行替换,但是这里对于每个项目只显示了star数目,没有显示其他有用的信息,所以需要到每一个项目具体的展示页才能看到所有的信息。

所幸,每个项目自己的详细页面是由https://github.com/ 和用户名+项目名组成的,所以可以先将搜索页面里的项目名称存到本地数据文件中,再顺序索引访问。

总的来说,本次爬虫需要爬取的网页有两部分,一部分是项目列表,另一部分是每个项目的具体信息。

2.网页信息获取

开头说道,之所以使用selenium,就是为了能够结合xpath,简化数据获取的过程,那么如何通过chrome获得想要获取的内容呢?

首先,当打开任意界面后,在想获取的内容上面右键单击,选择“检查”,

检查

此时,浏览器会自动展示需要的内容所对应的html标签,为了获得需要信息在当前页面的路径,可以将鼠标放在高亮块上,右键单击复制XPath,

xpath

此时,使用Ctrl V就可以将其路径复制到任意文本或者代码中了。

3.selenium使用

selenium开发之初是自动测试框架,但是因为完善的网页操作,所以也可以当作爬虫使用,其使用过程也很简单。

首先,需要给chrome浏览器安装chromedriver.exe驱动,只需要将exe文件放在anaconda的script下即可;

之后,在代码中,编写如下代码,即可启动该测试框架;

driver = webdriver.Chrome()
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

此时,会弹出一个受控的浏览器,调用get(nextpage)函数( nextpage 是目标链接);

driver.get(nextpage)

浏览器就会跳转到目标页面,

这时候就用到了上文获取的xpath信息,通过find_element_by_xpath()函数,即可获得标签块,如果要获得文本,只需要再调用一次.text属性,

content=driver.find_element_by_xpath('//*[@id="js-pjax-container"]/div/div[3]/div/ul/li['3']/div[2]/div[1]/a').text

此时,需要获得的属性就已经存到了content里面。

按照这种方法,就可以将需要获得信息依次存储到本地的变量中。

4.数据存储

因为数据量比较大,所以需要存储到本地文件中,这里为方便起见使用excel,存储代码如下(不完整):

f = open("E://Pycharm//deleted//software_spider//result//res_"+language_type[language_index]+".csv", "w", encoding='utf-8')
writer = csv.writer(f)
content=["subject", "watch", "star", "fork"]
for iii in range(0,len(taglist)):
   content.append(taglist[iii])

writer.writerow(content)
f.close()

使用csv库的优势是方便后续继续添加。

5.爬取注意事项

(1)为了避免频繁访问触发网站反扒机制,此处在每次网页跳转前会调用系统函数time.sleep()挂起若干秒,这样才能持续访问,经测试,比较合适的间隔大概为7秒;

(2)因为连接过程不一定一直保持稳定,所以建议每执行一段时间就自动保存当前的内容,防止因为网络连接问题前功尽弃;

(3)对于xpath不方便解析的情况,可以使用beautifulsoup进行解析;

6.结果

本次针对Java. C, Python等十种编程语言进行爬取分析,每种编程语言下爬取star最多的100个项目,中等star数的50个项目,和star数较少的50个项目。共计爬取2000个项目,每个项目包含了star, watch, fork和标注的标签信息。

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

相关推荐

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

前言:今天跟大家分享pathoy之爬虫,pathoy之爬虫技术的用处范围非常广泛以及非常强大的一门技术。在介绍爬虫之前,可以先跟大家讲讲pathoy这一门技术。 一、Pathoy的简介 二、pathoy之爬虫介绍 三、爬虫具体案例: ...

m0_53151031的博客 8890

基于selenium实现爬虫

基于selenium实现爬虫 爬虫:requests bs4靓汤 抓包(ajax) selenium 使用selenium模拟用户实现异步请求网络数据爬取!!!很清楚哇!!! 数据抓包常用方式:谷歌浏览器调试模式–>network—>选择xhr(异步请求的接口)–>查看对应接口的response响应数据 selenium 自动化爬虫(模拟器):模拟用户的行为(浏览器请求网址获取网页内容的行为) 安装: pip(conda) install sel

一个很懒的人 2032

网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。

我从24年11月份开始学习网络爬虫应用开发,经过2个来月的努力,于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。前几天我已经发了一篇日志(网络爬虫学习:应用selenium从搜*狐搜索爬取新闻结果的数据)记录了应用中使用的爬虫技术。这篇日志记录另外一个问题的解决。

bahamutj的博客 5018

【Python_Selenium学习笔记(二)】基于Selenium模块实现网络爬虫

此篇文章主要介绍如何使用 Selenium 模块进行简单的网络爬虫,并以具体的示例进行展示。

禾戊之昂的博客 727

[Python]网络爬虫总结

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

stary_yan的博客 1万+

【爬虫】手把手教你写网络爬虫(1)

从零开始写爬虫,初学者的速成指南!

JDJRdata的博客 2万+

Selenium入门必备:学会用代码控制浏览器,打开网页、找到元素和退出浏览器

大家好,我是凡哥。 作为一个想要学习Web自动化测试的小白,刚开始接触Selenium时可能会有些迷茫和不知所措。但是,不用担心,通过本文的学习,你将能够初步掌握Selenium的基础应用技能,包括如何用代码控制浏览器,打开并加载网页,找到并操作其中的元素,以及最后如何优雅地退出浏览器! 相信随着不断的实践和学习,你定能成为一名出色的Web自动化测试工程师。接下来,就让我们一起开始这段“陪伴式”学习之旅吧!

m0_70618214的博客 6096

Python 网络爬虫进阶:突破数据采集的边界

在成功踏入 Python 网络爬虫的入门之境后,我们犹如初窥宝藏的探险家,领略到了数据采集世界的奇妙与潜力。而此刻,进阶之路在脚下徐徐展开,它将引领我们深入这片领域的更深处,挖掘出更为强大和精妙的爬虫技艺,去征服那些更为复杂和富有挑战性的数据高峰。

m0_74620645的博客 3208

【爬虫笔记】使用Selenium打开网页

1. Selenium的安装非常简单pip install selenium就可以了使用selenium打开浏览器也是非常简单的,直接执行以下代码即可:from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.baidu.com/")什么?出现错误了?自然。之前的版本不会这样,自从升级新版本...

flysky_jay的博客 5301

创建一个快速、高效的网络爬虫:PHP和Selenium示例

在实际应用中,我们可以根据需要采取不同的定位方式,自定义操作行为,以实现更加精准、高效的数据爬取。其中,Selenium是一款非常优秀的网络自动化测试工具,能够模拟真实的用户操作,对于构建网络爬虫非常有帮助。使用WebDriver,我们可以自动打开、关闭浏览器,模拟用户的操作行为。在创建PHP项目之前,需要安装Composer(https://getcomposer.org/),并通过命令行创建一个新的PHP项目。需要注意的是,在安装PHP时需要确认已经安装了一些必要的扩展,例如:php-curl。

wx_19970108018的博客 1004

《Python 网络爬虫简易速速上手小册》第4章:Python 网络爬虫数据抓取技术(2024 最新版)

通过这些案例,我们可以看到,尽管动态内容的抓取比静态内容更具挑战性,但通过使用正确的工具和技术,我们依然可以有效地获取所需的数据。无论是静态页面的简单抓取,还是动态内容的复杂抓取任务,掌握这些技能都将为你打开数据抓取的大门。在这种情况下,我们可以使用 Selenium 来模拟浏览器行为,先执行 JavaScript,再抓取生成的内容。在网络爬虫的艺术中,精确地提取目标数据是一项至关重要的技能。XPath 和正则表达式就像是爬虫工程师的瑞士军刀,它们提供了强大的能力来定位和抽取网页中的数据。

江帅帅 1925

14.网络爬虫—selenium详讲

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

weixin_50804299的博客 7014

Python 爬虫 示例

Selenium更适合需要模拟真实用户操作的情况,例如需要处理 JavaScript 生成的内容、登录验证、交互式操作等。Scrapy更适合大规模的数据抓取,尤其是当需要高效处理大量请求和数据时。根据你的需求选择合适的框架。如果你需要模拟用户行为,Selenium 是更好的选择;如果你需要构建一个高效的大规模数据抓取项目,Scrapy 会更有优势。

weixin_44455665的博客 1989

Scrapy对比Selenium:哪个最适合您的网络爬虫项目

Scrapy是一个强大且高效的开源网络爬虫框架,采用Python编写。它专为抓取网页并从中提取结构化数据而设计,具有高效、可扩展和可定制的特点,是大规模网络爬虫项目的理想之选。Selenium是一个开源的Web自动化工具,允许用户以编程方式控制Web浏览器。虽然它主要用于测试Web应用程序,但由于其能够与重度JavaScript网站交互,在Web爬虫领域也广受欢迎,这些网站使用传统方法难以爬取。需要注意的是,Selenium只能测试Web应用程序,不能用于测试任何桌面(软件)应用程序或移动应用程序。

守城小轩的技术窝棚 2313

Python网络爬虫模拟登录与验证解析

在互联网上存在大量需要登录才能访问的网站,要爬取这些网站,就需要学习爬虫的模拟登录。对于一个需要登录才能访问的网站,它的页面在登录前和登录后可能是不一样的。

sinat_30844883的博客 3884

colmap+openMVS稠密重建

简要记录一下colmap+openMVS稠密重建相关使用。

weixin_41631106的博客 2243

新世界!打开Selenium和PhantomJs的大门!--爬虫福音

前言写过爬虫的朋友一定知道我们遇到的梦魇是什么,对,没错,就是动态网页!什么是动态网页?给没有了解过的朋友普及一下,就是网页最后的内容不是一开始就是完整的,而是等代码都加载完毕之后再执行一段js代码来补充网页的内容。比如说网页最后的内容是A,最初的代码是B,B里面包含一段js代码,这段代码执行之后可以产生C,这样B+c才等于A。而我们通过网络访问网页的url得到的只是B。这样做确实在很大程度上防止了

ProgramChangesWorld的专栏 9975

基于Python的微信聊天记录分析——数据获取

本篇为“基于Python的微信聊天记录分析”第一篇,主要涉及数据获取,包括Python环境配置、WeChatMsg项目配置和运行、获取聊天记录等内容,流程简单、比较基础,后续这个系列会涉及基于Python的数据处理、统计分析、NLP技术等内容。希望和大家多多交流,共同进步!

Henryli1202的博客 1万+

Python网络爬虫全攻略:从零到一,打造你的数据收集利器

网络爬虫(Web Crawler),也被称为网页蜘蛛(Web Spider),是一种自动获取网页内容的程序。它按照一定的规则,自动地抓取互联网信息。网络爬虫可以用于数据采集、信息监控、搜索引擎构建等多种场景。通过本文的介绍,你应该对Python网络爬虫有了全面的了解。从基础的请求发送、内容解析到数据存储,再到进阶的多线程、异步请求和框架使用,每一步都是构建高效爬虫的关键。记住,技术是工具,合理合法地使用技术,才能发挥其最大的价值。

来自想要赚大钱的小周同学 1781

从数字后端角度谈谈occ电路(一)

摘要:本文介绍了芯片测试中OCC(On-Chip Clock Control)电路的设计与应用。随着工艺进步,芯片制造面临Stuck-at、Bridging和Delay等故障类型,需要不同时钟频率进行测试。OCC电路通过Clock Selection、Clock Chopping Control和Clock Gating三个模块,实现ATE时钟与PLL时钟的切换控制,支持慢速时钟检测Stuck-at故障和快速时钟检测Delay故障。文章详细解析了OCC电路结构及各模块功能,包括同步单元、移位寄存器等关键组件

芯冰乐 585

【系统分析师】2026年上半年真题:论文及解题思路

四篇论文围绕系统与开发实践展开: 安全架构设计强调数据加密(国密算法)、零信任访问控制及容灾架构,以某医疗云平台为例,实现RTO<5分钟的高可用保障。 架构风格应用解析微服务/事件驱动等风格选型,结合电商平台案例,通过服务拆分与异步通信提升扩展性。 需求评审机制提出正式评审与走查结合的方法,在金融系统中减少30%返工,解决业务规则二义性问题。 LLM测试生成利用大模型从需求/代码生成用例,辅以人工校验,使测试效率提升50%,覆盖边缘场景。 各篇均遵循“背景-理论-实践”结构,突出

数据知道的博客 784
上一篇: 简易仿OJ自动判题——Python实现
下一篇: Real-time Arm Gesture Recognition in Smart Home Scenarios via Millimeter Wave Sensing 阅读笔记
Maybemust
博客等级 码龄10年 98粉丝 67原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值