使用BS4和Selenium实现高级网页数据采集的实战指南(爬取知乎数据)

selenium和bs4的联合使用 Selenium可以模拟浏览器点击或登录网站的行为。但在获取网站文本上并不方便。可以尝试使用Selenium+bs4获取文本信息。 导入相关库 from selenium import webdriver import time from bs4 import BeautifulSoup 打开网页 url = "https://www.xxx.com" driver.get(url) driver = webdriver.Chrome() 模拟浏览器活动 点击 driver.find_ele 阅读详情

最近因为一些原因,需要收集一些知乎的数据进行分析。但当实际操作时却发现遇到了种种问题.首当其冲的就是知乎的反爬机制.最初我的思路是先手动登录,然后提取并存放cookie信息到本地以方便以后使用.然后重新打开后再读取cookie然后刷新页面,结果遇到了和这篇博文一样的情况.

image.png

虽然能成功登录和访问问答,但当我获取搜索结果和点击展开评论时会报错. 经过一段时间的查阅和尝试后写下了这篇博客.

最初的思路:

不完整代码如下:

 

driver.get('https://www.zhihu.com')

# 暂停程序执行,等待一段时间(60秒),以确保网页加载完全

time.sleep(30)

# 获取当前页面的所有 cookie 信息,并将其存储为字典

dictCookies = driver.get_cookies()

# 将字典形式的 cookies 转换成 JSON 格式的字符串

jsonCookies = json.dumps(dictCookies)

print(jsonCookies)


# 将 JSON 格式的 cookies 写入到名为 "cookies_juejin.json" 的文件中

with open("cookies_zhihu.json", "w") as fp:

fp.write(jsonCookies)

# 关闭浏览器

driver.quit()


# 创建一个 Firefox 浏览器的实例

browser = webdriver.Firefox(options=options)



# 打开指定网页

browser.get("https://www.zhihu.com")

# 删除当前浏览器中的所有 cookie 信息

# browser.delete_all_cookies()

# 从名为 "cookies_juejin.json" 的文件中读取之前保存的 JSON 格式的 cookies

# with open('cookies_zhihu.json', 'r', encoding='utf-8') as f:

# listCookies = json.loads(f.read())

# # 将读取到的 cookies 添加到当前浏览器中

# for cookie in listCookies:

# browser.add_cookie(cookie)

# 再次访问网页,这次将包含之前保存的 cookie 信息,实现自动登录

browser.refresh()

使用Selenium来登录知乎,然后将获取到的cookies保存到一个JSON文件中,以便后续使用。在浏览器刷新时加载这些cookies,以实现自动登录。然而会遇到之前所说的那种问题,开始思考是哪里被发现了.

被发现的原因

经过查阅后发现, Selenium容易被检测的主要原因在于它所创建的浏览器指纹与手动操作所创建的浏览器指纹不同。一个常见的检测方法是通过检查window.navigator.web

爬虫实践——selenium、bs4 目录一、浏览器的一般设置二、打开网页并获取网页源码的方式三、HTML解析1、BeautifulSoup2、Selenium的webdriver加入触发动作四、反爬虫操作 from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities import urllib.parse import urllib.request from bs4 import Bea 阅读详情

相关推荐

BS4+Selenium动态网页数据采集实战:以知乎为例

在数据采集领域,动态网页内容获取是常见的技术挑战。其核心原理在于,现代网站大量使用JavaScript进行异步数据加载和渲染,传统的静态页面抓取工具无法直接获取这些动态生成的内容。为了解决这一问题,工程师们结合了浏览器自动化与HTML解析技术,形成了高效的技术方案。这种方案的技术价值在于,既能模拟真实用户行为获取完整渲染后的页面,又能保持数据提取环节的高效与精准,从而广泛应用于舆情监控、市场研究和竞争分析等场景。本文以知乎平台为例,详细阐述了如何运用BeautifulSoup4进行HTML解析,并结合Sel

weixin_30855761的博客 427

动态网页的信息爬取(Python+Selenium)

文章目录一、Selenium1.1 简介1.2 配置环境二、自动填充百度网页的查询关键字并完成自动搜索三、爬取一个动态网页的数据3.1 查看元素3.2 代码四、爬取京东网站上的感兴趣书籍信息4.1 查看元素4.2 代码五、总结六、参考文献 一、Selenium 1.1 简介 Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动操作,不同是Selenium 可以直接运行在浏览器上,它支持所有主流的浏览器(包括PhantomJS这些无界

qq_55691662的博客 3071

Windows+Python3+Selenium爬取知乎图片

本文实现了windows环境下的python3+Selenium库来模拟浏览器进行知乎图片的抓取。

赫夫曼树的博客 1139

从零开始爬取知乎热榜:使用Selenium与BeautifulSoup突破反爬机制

本文介绍了如何利用Selenium和BeautifulSoup爬取知乎热榜数据的方法。针对知乎的反爬机制,文章详细讲解了环境配置(安装必要库及ChromeDriver)、页面结构分析、Selenium模拟浏览器操作获取动态内容、BeautifulSoup解析网页数据等技术要点。重点阐述了突破反爬虫的策略,包括随机化User-Agent、模拟鼠标滚动、使用代理池等技巧。最后强调爬虫开发需遵守法律法规和网站条款,避免对网站造成不良影响。该项目为舆情分析和市场调研等应用提供了数据支持。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1794

基于 Selenium 的知乎关键词爬虫.zip

爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

S7-1200模拟量

将两种不同的金属或合金金属焊接起来,构成一个闭合回路,利用温差电动势来测量温度,当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在电动势--热电动势,这就是所谓的塞贝克效应(seebeck effect)。温差越大,热电动势越高。热电偶是有正负极性的,所以需要确保导线连接到正确的极性,否则会造成明显的测量误差。为了使温度补偿达到最佳效果,必须将热电偶模块安装在温度稳定的环境中简述:两种金属,每一种金属随温度变化是不同的,出现温差--由俩金属构成的回路就会有电流经过,因此两端形成热电动势。

王阿妹小天才的博客 2593

DeepSeek-OCR又更新:一起看下OCR1和OCR2

DeepSeek-AI 最近又又开源了,这次是DeepSeek-OCR2,结合之前发布的DeepSeek-OCR ,可以发现DeepSeek走出了一条不同于主流 OCR 方案的技术路线。第一代模型探索了**“视觉作为文本压缩介质”的可行性,打破了传统的序列长度限制;第二代模型则通过“Visual Causal Flow(视觉因果流)”**架构,将因果推理引入视觉编码器,解决了复杂排版下的阅读顺序难题。本文将从架构设计、逻辑结构、训练范式及工程实现四个维度,深度剖析这两代模型的异同与创新。

kakaZhui的博客 623

uniapp中renderjs实战:手把手教你实现SSE即时通讯(附完整代码)

本文通过一个完整的实战案例,详细讲解了如何在uni-app中使用RenderJS实现SSE即时通讯功能。文章剖析了RenderJS作为Vue视图层强力补充的原理,并提供了包含自动重连、状态管理等健壮性设计的完整代码,帮助开发者突破框架限制,高效集成浏览器原生API。

weixin_29005499的博客 190

uniapp监听扫码枪键盘事件|无输入框式监听

一般的扫码枪通过USB或蓝牙连接手机或电脑,充当的是一个外接设备。当扫码后,扫码枪会自动识别内容,然后向连接的电脑或手机发送键盘事件keydown或keyup。

tcy9099的专栏 9751

AutoGenTestCase - AI大模型生成测试用例

AI技术助力高效软件测试:AutoGenTestCase工具介绍 传统手工测试存在效率低、覆盖不全等痛点。AutoGenTestCase工具集成DeepSeek、通义千问等AI大模型,能快速解析需求并自动生成标准化测试用例,将数小时工作缩短至分钟级。该工具部署简单,仅需配置APIKey即可运行,支持多种测试用例类型比例设置,并输出Markdown和Excel格式的测试用例。通过GitHub或网盘下载后,用户可按照教程完成APIKey配置、需求文档上传和用例生成等操作,显著提升测试效率与覆盖完整性。

YIqifeibaQI的博客 349

Codex 100个真实案例 - 用AI自动生成API测试用例(接口测试全覆盖)

API 测试是保障后端质量的关键环节,但手写测试用例既枯燥又容易遗漏。本案例将展示如何用 Codex 从 Swagger/OpenAPI 规范文档自动生成 pytest 测试用例——包括正常流程测试、边界值测试、异常参数测试、性能压力测试,还能自动生成 Mock 数据和精美的 HTML 测试报告。全程自然语言驱动,让 API 测试覆盖率从 0 飙到 90%+!

yueyeguzhuo的专栏 271

基于线性约束最小方差准则(LCMV)的自适应波束形成算法的matlab仿真

波束形成(BeamForming)通过对多路麦克风(常为多路全向麦)信号进行合并,抑制非目标方向信号,增强目标方向信号;进而能够实现对特定方向的聚焦拾音,能够有效提高接收信号的信噪比,也有起到降噪的作用。基本原理是波的干涉:通过调整不同阵列单元信号之间的参数,使得某些角度的信号增强,而另一些角度的信号相互抵消,例如下图中来自±45°的输入信号未被增强,而在0度方向的输入信号同相位叠加后被增强。为了将窄带波束形成扩展至宽带,可以使用频域LCMV波束形成器。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 763

手把手教你学Simulink--基于车联网与智能交通系统的场景实例:基于车联网(V2X)的实时路况信息共享与处理

《基于Simulink的车联网(V2X)实时路况共享系统仿真》摘要:本文详细介绍使用Simulink构建V2X智能交通系统的完整方法。系统包含交通路网建模、V2X通信实现(支持DSRC/C-V2X标准)、多源路况信息融合、动态路径规划等核心模块。通过对比实验,验证V2X可使平均车速提升52%,行程时间缩短34%,显著提升交通效率。文章还探讨了AI预测调度、车辆编队等高级应用,为智慧交通系统开发提供实用参考。所需工具包括Simulink、SimEvents及无线通信工具箱等。

MHD0815的博客 739

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

上一篇: 接口测试框架开发实践:断言模块封装
下一篇: 接口自动化代码不会写?试试RunnerGo
程序员可可
博客等级 码龄2年 3536粉丝 428原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值