海外网站如何通过代理IP进行采集?

我们在做爬虫的时候,经常会遇到这种情况,爬虫最初运行的时候,数据是可以正常获取的,一切看起来都那么的美好,然而,不一会儿,就可能会出现403 Forbidden , 然后你会打开网站看一眼,可能会看到”您的IP访问频率过高,请稍后重试“。 出现这种情况的时候,通常这种情况,我们会使用代理IP来隐藏自身IP,来实现大量抓取。国内的代理常用的品牌多达几十种,而当我们需要爬取国外的时候,这些个代理是都不能用的,所以我们今天使用的是一款Ipidea的全球代理。

使用起来和国内的相差不大,可以根据需求,选在指定国家,或者全球混播,通过api接口调用,指定提取数量,也可以指定接口返回数据格式,有txt,json,html等,这里就以全球混播、json格式为例,获取代理,单次获取1个,python代码如下:

import requests
url = "http://tiqu.linksocket.com:81/abroad?num=1&type=2&pro=0&city=0&yys=0&port=1&flow=1&ts=0&ys=0&cs=0&lb=1&sb=0&pb=4&mr=0&regions=www&n=0&f=1"
resp = requests.get(url)
# 成功获取到的数据为:{'code': 0, 'data': [{'ip': '47.74.232.57', 'port': 21861}], 'msg': '0', 'success': True}
data = resp.json().get('data')[0]
proxy = {
    "http": "http://%s:%d" % (data.get("ip"), data.get("port")),
    "https": "https://%s:%d" % (data.get("ip"), data.get("port"))
}

在获取ip之前,我们要通过个人中心设置IP白名单,否则是无法获取到数据的。

把你本机公网填入保存即可(官方也提供了接口添加或删除白名单),若不知道公网IP为多少,可以通过百度搜索IP即可。

爬虫demo如下,这里以六度新闻为例:

import requests
url = "http://tiqu.linksocket.com:81/abroad?num=1&type=2&pro=0&city=0&yys=0&port=1&flow=1&ts=0&ys=0&cs=0&lb=1&sb=0&pb=4&mr=0&regions=www&n=0&f=1"

def get_proxy():
    """
    获取代理
    """
    resp = requests.get(url)
    data = resp.json().get('data')[0]
    proxy = {
        "http": "http://%s:%d" % (data.get("ip"), data.get("port")),
        "https": "https://%s:%d" % (data.get("ip"), data.get("port"))
    }
    return proxy

def download_html(url):
    """
    获取url接口数据
    """
    resp = requests.get(url,proxies=get_proxy())
    return resp.json()

def run():
    """
    主程序
    :return:
    """
    url = "https://6do.news/api/tag/114?page=1"
    content = download_html(url)
    # 数据处理略

if __name__ == '__main__':
    run()

数据如图:

前后端分离的接口,对于爬虫来说还是比较友好的,数据提取起来比较方便,这里就不做过多处理,根据需求提取数据即可。

如果在爬虫中挂不上代理,请检查是否添加白名单。

本次海外网站的采集教程到这里就结束了,详细交流欢迎与我联系。

本文章旨在用于交流分享,【未经允许,谢绝转载】

海外网站如何通过代理IP进行采集?的更多相关文章

  1. 维护爬虫代理IP池--采集并验证

    任务分析 我们爬的免费代理来自于https://www.kuaidaili.com这个网站.用`requests`将ip地址与端口采集过来,将`IP`与`PORT`组合成`requests`需要的代理 ...

  2. Python爬虫代理IP池

    目录[-] 1.问题 2.代理池设计 3.代码模块 4.安装 5.使用 6.最后 在公司做分布式深网爬虫,搭建了一套稳定的代理池服务,为上千个爬虫提供有效的代理,保证各个爬虫拿到的都是对应网站有效的代 ...

  3. python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性)

    python爬虫之反爬虫(随机user-agent,获取代理ip,检测代理ip可用性) 目录 随机User-Agent 获取代理ip 检测代理ip可用性 随机User-Agent fake_usera ...

  4. 可能是一份没什么用的爬虫代理IP指南

    写在前面 做爬虫的小伙伴一般都绕不过代理IP这个问题. PS:如果还没遇到被封IP的场景,要不就是你量太小人家懒得理你,要不就是人家压根不在乎... 爬虫用户自己是没有能力维护一系列的代理服务器和代理 ...

  5. 免费代理ip爬虫分享

    分享一个某代理网站的免费代理ip的爬虫,直接复制到pycharm运行就可以了. 注意:爬取的代理ip有点坑,因为是免费的所以过期时间很快,可能1分钟后就会失效.并且在scrapy使用这些代理ip还会给 ...

  6. 爬虫-设置代理ip

    1.为什么要设置代理ip 在学习Python爬虫的时候,经常会遇见所要爬取的网站采取了反爬取技术导致爬取失败.高强度.高效率地爬取网页信息常常会给网站服务器带来巨大压力,所以同一个IP反复爬取同一个网 ...

  7. 爬虫(五):代理IP、Cookie

    1. 代理IP 代理IP这个功能呢,在urllib和requests中都存在,但是这个在大的爬虫项目中是非常重要的,所以我拿出来单独讲解. 对于某些网站,如果同一个 IP 短时间内发送大量请求,则可能 ...

  8. Python学习笔记六(免费获取代理IP)

    为获取网上免费代理IP,闲的无聊,整合了一下,免费从三个代理网站获取免费代理IP,目的是在某一代理网站被限制时,仍可从可以访问的其他网站上获取代理IP.亲测可用哦!^_^  仅供大家参考,以下脚本可添 ...

  9. 采集15个代理IP网站,打造免费代理IP池

    采集的站点: 免费代理IP http://ip.yqie.com/ipproxy.htm66免费代理网 http://www.66ip.cn/89免费代理 http://www.89ip.cn/无忧代 ...

随机推荐

  1. openssl进行RSA加解密(C++)

    密钥对根据RSA的加密机制(自行查找RSA工作原理),通常可以私钥加密-公钥解密(多用于签名),公钥加密-私钥解密(多用于数据传输加密),私钥可以生成公钥. 密钥对生成生成私钥,长度为2048,默认格 ...

  2. PHP Curl 请求https 60错误解决办法

      curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); 

  3. Laravel 上手增删改查

    拿到一个框架,除了解框架,还要能实现基本的CURD操作. 添加 1.配置路由,指定添加页面: // routes/web.php 中增加如下: // 添加页面.存放路径 Laravel7/resour ...

  4. [git] github 推送以及冲突的解决,以及一些命令

    推送以及冲突的解决:(我的觉得先看完) (正常情况就是把修改的文件 git add 然后git commit 然后推送就行啦): 下面是一些命令 1.查看分支状态(查看所有:当前检出分支的前面会有星号 ...

  5. 关于宝塔下的项目中的php不能访问的问题

    遇到的问题是访问项目根目录的所有php文件都是报404错,而其他文件则可以,比如txt,最后查资料发现 在宝塔运行网站的时候会在项目的根目录自动生成一个.user.ini文件,这个文件主要是防止对指定 ...

  6. [Qt]执行cmd命令

    要加 /c 参数 QProcess p; p.start("cmd", QStringList()<<"/c"<<"ping ...

  7. C# 9 新特性:代码生成器、编译时反射

    前言 今天 .NET 官方博客宣布 C# 9 Source Generators 第一个预览版发布,这是一个用户已经喊了快 5 年特性,今天终于发布了. 简介 Source Generators 顾名 ...

  8. 虚拟机 VMware Workstation Pro 15.5.0 及永久激活密钥

    虚拟机 VMware Workstation Pro 15.5.0 及永久激活密钥 虚拟机下载地址:https://download3.vmware.com/software/wkst/file/VM ...

  9. java基础问题 (待解决)

    (1)接口与抽象类的区别? (2)Java中的异常有哪几类?分别怎么使用? (3)常用的集合类有哪些?比如List如何排序? (4)ArrayList和LinkedList内部的实现大致是怎样的?他们 ...

  10. Linux发送邮件命令mail,mutt

    邮件常常是Linux下监控报警手段之一.Linux下的mail命令可以方便,快速的完成发送邮件. 1. Linux发邮件2种常见客户端命令 1.1 mail命令(推荐) 语法: 无邮件正文 mail ...