
爬虫抓取
文章平均质量分 84
网络抓取相关知识分享
程序员的开发手册
公众号:程序员的开发手册
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
绕过 CDN 缓存:爬虫开发中的 Host 头部配置与 SSL 验证技巧
爬虫抓取是很多网站自动化测试、数据分析、信息采集等工作的基础,而有些网站为了提升访问速度和稳定性,通常会通过 CDN(内容分发网络)来进行内容的缓存和分发。CDN 能够根据用户的地理位置和请求方式,将数据从离用户最近的节点返回,从而提高加载速度和响应时间。然而,CDN 也带来了一个问题:在某些情况下,我们可能需要绕过 CDN,直接访问网站的源站。这个时候,设置Host头部就变得尤为关键。在本篇文章中,我们将通过一个简单的示例,展示如何通过设置Host和禁用 SSL 验证来实现这一需求。原创 2025-03-11 07:41:35 · 1531 阅读 · 0 评论 -
异常重试装饰器进阶:在重试前增加回调方法,轻松切换代理
在上一篇《日常避坑指南:重试装饰器的正确使用方式》中,我们详细讲解了如何使用简单的重试装饰器来处理常见的异常。虽然这种装饰器能自动捕捉异常并进行重试,但它并没有提供执行额外操作的灵活性。比如,如果你在做爬虫开发,可能需要在每次重试前更换代理,或者清理某些状态,这种情况下,简单的重试逻辑就显得不够用了。为了解决这个问题,我们可以在重试装饰器中增加一个“重试前回调函数”。通过这个回调函数,我们可以在每次重试之前执行自定义的操作,例如切换代理、清除缓存等。接下来,我们就来看看具体的实现。原创 2025-02-26 19:35:49 · 1091 阅读 · 0 评论 -
新手教学系列——用curl_cffi实现文件上传:同步与异步全解析
curl_cffi是一个基于 cURL 和 CFFI 的高性能 HTTP 库,结合了底层的 cURL 功能和 Python 的便捷接口。相比requestscurl_cffi在性能、并发能力和灵活性方面有显著优势。通过本文,你已经掌握了如何利用curl_cffi实现高效的文件上传。无论是简单的单文件上传,还是复杂的多文件异步场景,它都能助你一臂之力。希望你能在项目中尝试这些技巧,为你的代码性能带来质的提升。原创 2024-11-08 12:08:59 · 1446 阅读 · 0 评论 -
新手教学系列——利用短效代理快速搭建代理池
短效代理通常是指使用时间较短的代理,通常它们在几分钟或几十分钟内失效。相比之下,长效代理可以持续数小时甚至数天。短效代理在抓取大规模、高并发数据时非常有用,特别是当你需要频繁更换IP以绕过反爬机制时。为了高效管理和使用这些短效代理,我们通常会将它们存储到数据库中,并通过一定的策略来动态分配和更新代理池中的代理。举个例子,在构建一个高并发抓取系统时,如果代理池中的代理不足,系统需要自动补充新的代理,同时要确保每个代理都合理分配和使用。这样一来,不仅能够提高抓取任务的成功率,还能避免代理IP的浪费。原创 2024-10-23 10:58:37 · 697 阅读 · 0 评论 -
新手教学系列——爬虫异步并发注意事项
爬虫的并发设计并非“一把钥匙开一把锁”,而是需要根据实际场景选择合适的技术方案。多进程、多线程和协程各有千秋,但对于网络爬虫这种典型的 IO 密集型任务,协程无疑是最优选择。结合aiohttp的异步特性,能够在保证高并发的同时,最大化利用系统资源。希望通过本文的介绍,能帮助你在爬虫开发中做出更好的技术决策。原创 2024-10-03 10:26:21 · 1315 阅读 · 0 评论 -
新手教学系列——curl_cffi异步session使用注意事项二:解决Too Many Open Files问题
在高并发环境下,发送大量的网络请求会导致系统资源的迅速消耗。尤其是在Linux系统中,每个进程能够打开的文件描述符数量是有限的,通常是1024个。当超出这个限制时,就会出现“Too many open files”的错误。这种错误不仅会导致应用崩溃,还会影响用户体验,造成请求失败。因此,了解并解决这一问题对开发者来说至关重要。通过对异步session的有效管理,我们能够避免“Too many open files”的问题,从而提升程序的稳定性和性能。本文分享的改进方案和实用建议旨在帮助开发者更好地使用。原创 2024-09-30 15:31:15 · 1409 阅读 · 0 评论 -
新手教学系列——MacOS 10.13.6下如何使用curl_cffi模拟Chrome请求
curl_cffi是一个基于C语言的libcurl库的Python封装,其特别之处在于它底层依赖了。是一个针对绕过反爬虫机制的工具,通过模仿真实浏览器请求,可以最大程度地避免被服务器检测到。与我们熟悉的requests或aiohttp库相比,curl_cffi不仅支持同步和异步的请求,还能精确地模拟浏览器(尤其是Chrome)的行为,这使它在绕过复杂的防爬虫系统时有明显优势。通过本文的介绍,你应该能够在MacOS 10.13.6下顺利安装并使用curl_cffi。尽管安装过程涉及手动编译。原创 2024-09-29 14:35:20 · 1552 阅读 · 0 评论 -
新手教学系列——彻底解决 Windows 下 execjs 执行报 GBK 编码错误
在 Windows 环境下使用 Python 的execjs执行 JavaScript 时,GBK 编码错误是一个常见的问题。通过深入分析其根本原因,我们可以得出两个有效的解决方案:避免返回中文字符,或在subprocess调用中显式指定 UTF-8 编码。希望这篇文章能帮助新手开发者顺利解决编码问题,提升编程效率。原创 2024-09-12 11:05:30 · 1171 阅读 · 0 评论 -
日常避坑指南:重试装饰器的正确使用方式
在使用重试机制时,务必要根据具体的场景来设计和应用重试逻辑。特别是在处理复杂数据结构时,如,一定要确保每次重试时重新初始化这些对象,以避免难以排查的异常问题。通过灵活使用重试装饰器,可以让你的代码在面对网络波动等不确定性时更加健壮。关注【程序员的开发手册】让您少走十年弯路。原创 2024-08-30 12:22:11 · 683 阅读 · 0 评论 -
新手教学系列——如何实现基于asyncio的高效率 Worker(按需获取任务、防止阻塞与崩溃)
简单来说,Worker 是一个专门用于处理任务的程序或线程。特别是在高并发场景下,worker 需要能够快速地获取新任务、处理任务,并且在出现异常时能够优雅地恢复,避免整个系统崩溃。通过asyncio和aioredis,我们可以实现一个高效且稳定的 worker 系统,能够处理大量并发任务,同时确保系统不会因为任务阻塞或崩溃而导致服务中断。这对于需要处理大量异步任务的场景,如爬虫、数据处理等,非常实用。希望这篇文章能帮助你更好地理解如何使用 Python 的异步编程来构建高效的并发系统。关注【原创 2024-08-30 12:01:54 · 1205 阅读 · 0 评论 -
日常避坑指南:如何正确使用 aiohttp 上传文件,避免文件被提前关闭
通过这次经验教训,我们学到了在异步请求中处理文件上传时,需要特别注意文件对象的生命周期管理。尤其是在使用aiohttp等异步库时,确保文件在请求完成之前不被提前关闭至关重要。正确处理文件的打开与关闭,不仅可以避免潜在的异常,还能确保程序运行更加稳定。在技术开发的道路上,细节往往决定了成败。希望这篇文章能帮助你在日常开发中少踩坑,提高代码质量与开发效率。关注【程序员的开发手册】,为你提供更多实用的开发技巧,帮你在编程之路上少走弯路!原创 2024-08-28 11:43:11 · 1482 阅读 · 0 评论 -
解决 aiohttp 独有的 “Got more than 8190 bytes (11984) when reading Header value is too long“ 错误
aiohttp 的 "Got more than 8190 bytes when reading Header value is too long" 错误通常是由于请求头过大引起的。虽然可以尝试通过修改 HeadersParser 来解决,但在 macOS 上这种方法可能无效。最终,通过在 ClientSession 中直接修改参数,可以更有效地解决这个问题。这种方法简单直接,适用于大多数场景。希望通过这篇文章,你能更好地理解和解决 aiohttp 中遇到的头信息过大的问题。原创 2024-06-27 10:59:02 · 1243 阅读 · 0 评论 -
关键参数testab的生成过程及jsvmp算法学习
通过以上步骤,我们可以实现对关键参数testab的生成,并通过合理的防封禁策略确保接口请求的安全性。每个步骤的代码和逻辑都经过仔细测试,确保无bug且能正常运行。通过这些措施,我们可以在实际项目中有效地使用jsvmp算法生成关键参数并进行接口请求。以上内容仅供学习参考,需要代码的关注私信。代码禁止用作商业或非法用途,否则后果自负!!!!!!!代码禁止用作商业或非法用途,否则后果自负!!!!!!!代码禁止用作商业或非法用途,否则后果自负!!!!!!!如有违规侵权,请联系我删除!!!!!!!原创 2024-06-18 12:06:28 · 1503 阅读 · 0 评论 -
Playwright--通过storage来加载和保存Cookies
在使用Playwright时,通过storage来加载和保存Cookies是一种更高级的方法。这种方法不仅可以保存Cookies,还可以保存本地存储(LocalStorage)等浏览器上下文数据,确保会话的完整性。本文将详细介绍如何通过storage加载和保存Cookies。原创 2024-06-14 07:01:06 · 2673 阅读 · 0 评论 -
JS 算法学习之请求中的 testab 参数
在浏览器中调试和跟踪 JavaScript 代码是前端开发的常见需求。对于一些动态生成的代码,传统的方法是通过模拟环境来执行这些代码,例如使用 vm2 模块。但是,这种方法可能过于繁琐,特别是在我们只需要快速测试和学习的场景中。本文将介绍一种更为实用的方式,通过 WebSocket 让代码在真实环境中运行,并获取其计算结果。此外,在浏览器端,我们通过 WebSocket 发送动态生成的代码片段。这种方法可以确保代码在真实的 JavaScript 环境中执行,从而避免了模拟环境可能带来的兼容性问题。原创 2024-06-13 07:34:37 · 743 阅读 · 0 评论 -
爬虫系列-Playwright加代理,你真的会用了吗?
也许你会好奇为什么会有这种需求,举个例子:有一个页面,其中某个特定请求需要使用代理,同时对于上传、下载图片这种流量大户不能用代理,在处理这种问题时全局代理和context代理就显得有点捉襟见肘了,因为页面中所有请求都会经过代理,假如你的代理服务器带宽是按量收费~~呵呵...;无论是启动浏览器时设置代理、在上下文中设置代理,还是为某个请求单独设置代理,都可以满足不同的需求。通过创建带有代理配置的浏览器上下文来实现。使用上下文设置代理:在创建浏览器上下文时设置代理,这样可以在同一浏览器实例中使用不同的代理。原创 2024-06-09 09:25:20 · 2519 阅读 · 0 评论