文章采集api( 爬虫海外网站获取ip之前,请检查是否添加白名单?)
优采云 发布时间: 2022-02-21 19:03文章采集api(
爬虫海外网站获取ip之前,请检查是否添加白名单?)
海外网站如何使用代理IP采集?
我们在做爬虫的时候,经常会遇到这种情况。爬虫第一次运行时,可以正常获取数据,一切看起来都是那么美好。但是过一会可能会出现403 Forbidden,然后你会打开网站查看一下,你可能会看到“你的IP访问频率太高,请稍后再试”。遇到这种情况,通常这种情况下,我们会使用代理IP隐藏自己的IP,实现大量爬取。国内代理常用的产品有几十种,而我们需要在海外爬的时候网站这些代理都用不上,所以我们今天用的是Ipidea全球代理。
用法与国内相差不大。可以根据需要选择在指定国家或全球播放,通过api接口调用,指定提取次数,也可以指定接口返回数据格式,如txt、json、html、等等,这里以全局混合和json格式为例,获取一个代理,一次一个,python代码如下:
import requestsurl = "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®ions=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。
爬虫演示如下。以下是六度新闻的示例:
import requestsurl = "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®ions=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 proxydef 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()
数据如图:
前后端分离的界面对爬虫比较友好,提取数据也比较方便。这里不需要做太多处理,可以根据需要提取数据。
如果代理不能挂在爬虫中,请检查是否添加白名单。
本次海外网站的采集教程到此结束,详细交流请联系我。
本文章仅供交流分享,【未经许可,请拒绝转载】