手把手教你使用Python爬取西刺代理数据(上篇)

发布时间:2023-04-24 10:21:15

世间无限丹青手,一片悲伤画不成。

/1 前言/

细心的朋友应该知道,上次小编发表了一篇关于IP代理的文章。基于Python网络爬虫技术,主要介绍了在IP代理网站上捕获可用IP,Python脚本验证IP地址的及时性。如果爬虫被禁止,可以通过文章中的方法解决。如果你没有时间上车,你可以戳这篇文章:教你用免费代理ip爬数据。

接下来,小编将推出三篇文章,从代理网站介绍和反爬措施介绍、数据捕获和数据可视化操作三个方面进行。我希望它能在各个方面独占一篇文章,帮助你学习。接下来,小编将首先介绍代理网站及其反爬措施。

/2 简介/

西代理网站是一个包含国内代理的网站,实时数量达到数十万,有很多代理IP,有些是免费的,有些是付费的。免费的通常是不可用的,即使当时很容易使用,但也不会持续太久,会很酷。

手把手教你使用Python爬取西刺代理数据(上篇)_反爬虫

/3反爬虫措施//3反爬虫措施/

本文的主要内容是使用 Python 爬虫主要用于网站数据的爬行 requests 下面简要介绍一下反爬虫措施。

经过初步测试,发现该网站反爬虫处理措施较多,测试如下:

  1. 直接使用** requests** 在不设置任何库的情况下 header 在这种情况下,网站不会直接返回数据。
  2. 同一个 ip 连续访问 40 多次,直接密封 ip,起初我的** ip** 就这样被封了。

最后,经过研究,采用以下方法可以有效地解决这两个问题:

  1. 通过抓取正常的网络流量,获得正常的网络流量 http 请求头(header),并在 requests 在请求时设置这些常规 http 请求头的目的是让目标网站认为我们的请求是通过浏览器正常发起的,而不是使用程序自动发起的。这可以解决第一个痛点。
  2. 建立一个代理池,首先从其他网站获得一批初始代理,利用这些代理来爬取网站的代理数量 根据时间,实时添加爬行代理。每次爬行时,随机选择代理池中的代理,同时及时将无效或密封的代理移出代理池。这样,我们就不必担心IP在长时间使用后会被密封。

正常获取 http 请求头,使用抓包工具 Fiddler 抓取正常浏览器访问该网站的数据包,如图所示:

手把手教你使用Python爬取西刺代理数据(上篇)_数据_02

提取数据后,将数据包装成 requests 可以识别库 header 字典, 通过使用正常的数据包,我们不必担心网站使用头部验证。在代码中,专门定义一个函数,只需调用该函数即可获得字典:

手把手教你使用Python爬取西刺代理数据(上篇)_数据_03

然后在 requests 在要求网站时, 设置这个头, 代码如下:

手把手教你使用Python爬取西刺代理数据(上篇)_数据_04

到目前为止,我们已经提前为反爬虫措施做好了准备。下一步,我们将分析网页结构和提取网页数据,以便详细解释下一篇文章。

/4 小结/

本文的主要内容是介绍代理网站的基本介绍,然后介绍代理网站的反爬虫措施。然后使用包装工具 Fiddler 抓取网站的数据包,基于 Python 爬虫库requeststs中的爬虫 ,提前部署请求头,模拟浏览器。下一篇文章将带您分析网页结构和提取网页数据。请期待~~

上一篇 Redis-企业级解决方案
下一篇 volatile的底层原理与实现

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题