现在的电商网站、社交平台、金融平台等大型网站都会有网页爬虫的风控及检测机制,除了常见的 HTTP Headers之外,大部分的网站还加入了 AI 反爬虫的功能,一旦被检测到就会触发人机验证机制,严重的甚至会直接封 IP 地址。IP 地址被封后就不得不使用代理 IP 来继续爬取。
想要降低网页爬虫被检测到的方法之一,就是随机轮换不同的代理IP和请求头,最近看到 ScraperAPI提供了这样的解決方案,使用上也非常的简单,而且有 1000 次API 调用额度可以免费使用,所以这篇文章就來分享一下ScraperAPI的使用方式。
- ScraperAPI是什么?
- 利用 ScraperAPI 运行 Python 网页爬虫
一、ScraperAPI是什么?
ScraperAPI 可以理解为嵌入了代理IP的增强版反爬接口,开发人员只需要发送一次请求即可取得目标网页 HTML 源码。ScraperAPI 会自动轮换代理IP、HTTP 请求头、处理人机验证等,大大降低我们的爬虫被检测到的概率。
要使用ScraperAPI,就要先到它们的网站进行注册,点击“START TRIAL”进行注册,注册登录后就能看到 API KEY,以及各种主流开发语言的代码示例:
二、利用 ScraperAPI 运行 Python 网页爬虫
注册并成功登录后,在首页就能看到 API Key,注意这里的 API Key 不要泄露,否则其他人也能用你们的流量。默认就有一个 Python 网页爬虫示例代码:
import requests
payload = { 'api_key': 'Your API key here.', 'url': 'https://httpbin.org/' }
r = requests.get('https://api.scraperapi.com/', params=payload)
print(r.text)
运行以上代码,就能看到已经把 httpbin.org 这个网站首页的 HTML 代码打印了出来,这表示已经使用 ScraperAPI 成功爬取了这个网页。
为了验证 ScraperAPI 是否使用了代理IP,我们先在浏览器上打开代理IP在线检测工具,查看一下我们当前的 IP。然后把上面的代码 payload 中的 url 的值改成我们代理IP在线检测工具的地址,再运行一下代码。
import requests
payload = { 'api_key': 'Your API key here.', 'url': 'https://spiderbuf.cn/tools/proxy-ip-checker' }
r = requests.get('https://api.scraperapi.com/', params=payload)
print(r.text)
等到 HTML 代码打印出来的时候,对比一下浏览器就会发现打印出来的IP 跟在浏览器上看到的不一样,说明 ScraperAPI 已经自动添加了代理IP,并且使用的是高度匿名的代理IP。
值得注意的是,ScraperAPI 只是帮你的网页爬虫解决了获取 HTML 源码的环节,提取数据还需要你自己写代码来实现。
三、小结
ScraperAPI 提供了一个简单的 API 接口,让我们在开发 Python 网页爬虫的时候可以轻松地使用动态代理IP避免被反爬虫检测的风险。对于想要从大型网站上爬取网页数据的人来说是一个非常容易上手的工具。