实时爬虫实例讲解

972次阅读
没有评论

实时爬虫实例讲解

Oxylabs的实时爬虫(Real-Time Crawler)是一种执行数据抓取的API(应用程序编程接口),可提供来自任何网站的实时信息。这个网络抓取工具是一个可靠的业务解决方案,可以确保从您的目标网站上安全爬取数据。实时爬虫有助于在收集大规模数据的同时降低成本并节省人力资源。

在本篇入门指南中,您将了解实时爬虫的作用、工作原理以及可用的数据交付方法。文中还会提及在Python编程中实现实时爬虫的相关信息。

实时爬虫能为您带来什么

实时爬虫可以从任意网站收集数据,并使用附加功能提供原始数据。

  • 100%成功率—— 只需为成功交付的结果付费。

  • 由下一代住宅代理提供支持—— 由基于人工智能和机器自主学习的算法提供支持的快速代理。

  • 用于防封禁管理的智能代理轮换器—— 获得专利的Oxylabs代理轮换器可确保更快地获得成功的结果。

  • 来自头部电商平台和搜索引擎的结构化数据—— 以易于阅读的JSON格式接收结构化数据。

  • 高度可定制—— 实时爬虫支持大量请求并允许国家和城市级别的定位。

  • 零维护—— 不用担心网站更改,忘记IP封锁、验证码和代理管理。

您将在后台获取到哪些信息

实时爬虫实例讲解

实时爬虫用户在后台查看他们的使用统计信息

实时爬虫用户后台简单好用,您可以在其中查看数据使用情况和计费信息。您可以轻松地与客服取得联系,并随时回答您的问题。

实时爬虫——它是如何工作的?

实时爬虫方便好用,不需要您提供任何特定的基础设施或资源。

1.向实时爬虫发送请求;

2.实时爬虫从您的目标上收集所需的信息;

3.接收即用型网络数据。

实时爬虫实例讲解

实时爬虫从您的目标网站提供随时可用的数据

数据提取选项

实时爬虫提供两种数据提取选项。使用数据API从搜索引擎和电子商务站点接收JSON格式的结构化数据。选择HTML爬虫API可以对大部分HTML网站进行网络爬取。

使用这两个数据提取选项,您可以在单个查询和批量选项之间进行选择。实时爬虫支持执行单个和多个关键字——每批最多1,000个关键字。

  • 数据API

接收JSON格式的结构化数据。电子商务API专为从电子商务站点获取数据而量身定制。搜索引擎API提供来自头部搜索引擎的结构化实时数据。只需提供您的关键字、目标域名、语言和国家城市即可。该API可以提取任何数据,包括产品页面数据、商品列表页面数据、评论数据和畅销产品列表数据。

  • HTML爬虫API

没有任何IP封锁、验证码或代理池管理但却有大量JavaScript的网站可以使用该API。提供基于位置或特定设备的请求,我们将在服务端处理好所有网站更改、代理轮换和会话控制。

数据传递方式

  • 回调

实时爬虫实例讲解

设置回调服务器并在您的数据准备好收集时收到通知

这是最简单但最可靠的数据传递方法。只需发送一个任务请求,一旦任务完成,我们就会向回调服务器发送通知。您可以在收到通知后的24-48小时内收集您的数据。

回调集成:

import requests from pprint import pprint # Structure payload. payload = { 'source': 'example_search', 'domain': 'com', 'query': 'adidas', 'callback_url': 'https://your.callback.url', 'storage_type': 's3', 'storage_url': 'YOUR_BUCKET_NAME' } # Get response. response = requests.request( 'POST', 'https://data.oxylabs.io/v1/queries', auth=('user', 'pass1'), json=payload, ) # Print prettified response to stdout. pprint(response.json())

为了接收回调通知,需要设置一个服务器:

# This is a simple Sanic web server with a route listening for callbacks on localhost:8080. # It will print job results to stdout. import requests from pprint import pprint from sanic import Sanic, response AUTH_TUPLE = ('user', 'pass1') app = Sanic() # Define /job_listener endpoint that accepts POST requests. @app.route('/job_listener', methods=['POST']) async def job_listener(request): try: res = request.json links = res.get('_links', []) for link in links: if link['rel'] == 'results': # Sanic is async, but requests are synchronous, to fully take # advantage of Sanic, use aiohttp. res_response = requests.request( method='GET', url=link['href'], auth=AUTH_TUPLE, ) pprint(res_response.json()) break except Exception as e: print("Listener exception: {}".format(e)) return response.json(status=200, body={'status': 'ok'}) if __name__ == '__main__': app.run(host='0.0.0.0', port=8080)

  • 即时获取

提交您的请求并通过相同的开放式HTTPS连接实时调取您的数据。

样例:

import requests from pprint import pprint

# Structure payload. payload = { 'source': 'universal', 'url': 'https://www.example.com', 'user_agent_type': 'mobile', 'render': 'html', }

# Get response. response = requests.request( 'POST', 'https://realtime.oxylabs.io/v1/queries', auth=('user', 'pass1'), json=payload, )

# Instead of response with job status and results url, this will return the # JSON response with results. pprint(response.json() )

Example response body that will be returned on open connection: { "results": [ { "content": "<html> CONTENT </html>" "created_at": "2019-10-01 00:00:01", "updated_at": "2019-10-01 00:00:15", "id": null, "page": 1, "url": "https://www.example.com/", "job_id": "12345678900987654321", "status_code": 200 } ] }

  • 超级API

SuperAPI只接受完整格式的URL,而不接受域名和搜索查询等参数。也就是说,您可以在请求标头中发送附加信息,例如位置和语言。

使用我们的入口节点作为代理,使用实时爬虫凭据进行授权,并忽略证书。您的数据将通过相同的开放连接传送给您。

Python编程语言中的超级API代码示例:

import requests from pprint import pprint

# Define proxy dict. Don't forget to put your real user and pass here as well. proxies = { 'http': 'http://user:pass1@realtime.oxylabs.io:60000', }

response = requests.request( 'GET', 'https://www.example.com', auth=('user', 'pass1'), verify=False, # Or accept our certificate. proxies=proxies, )

# Print result page to stdout pprint(response.text)

# Save returned HTML to result.html file with open('result.html', 'w') as f: f.write(response.text)

HTTP

通过One-Liner方法在浏览器中使用实时爬虫。只需向我们提供您的目标来源、搜索请求、域名、您希望接收的结果数量、位置、用户代理类型,并指明您是否希望解析您的数据。

然后,您将收到一个URL,您可以将其粘贴到浏览器中并接收解析结果或HTML结果。

如果您想将自己的搜索引擎URL提交给实时爬虫,这也是一种选择。但是您必须对您提交的搜索引擎URL进行URL编码并使用“source=example.com”参数值。与在浏览器中相比,使用之前描述的其他集成方法(即时获取、回调或SuperAPI)更容易实现这种查询。

集成示例:

https://realtime.oxylabs.io/v1/queries?source=example_search&query=Adidas&domain=com&limit=10&geo_location=Berlin,Germany&user_agent_type=desktop&parse=true&access_token=1234abcd

响应代码

回复

错误信息

描述

204

无内容

您正在尝试检索尚未完成的作业

400

多条错误信息

错误的请求结构,可能是拼写错误的参数或无效值。响应正文将有更具体的错误信息

401

“未提供授权标头”/“无效的授权标头”/“未找到客户端”

缺少授权标头或不正确的登录凭据

403

被禁止

您的帐户无权访问此资源

404

未找到

您正在寻找的任务ID不再可用

429

请求过多

超出速率限制。请联系您的客户经理以提高限额

500

未知错误

服务不可达

524

超时

服务不可达

总结

Oxylabs的实时爬虫是一种网络爬虫工具,可以从任何网站中提取数据。这是一个易于使用的工具,只提供成功的结果。数据抓取API和HTML API负责验证码和代理轮换,让您可以专注于处理随时可用的新数据。

实时爬虫提供四种不同的交付方式,并且易于集成。所有实时爬虫用户都可以访问客户端后台,并可以访问大量文档。如果您有兴趣了解实时爬虫的实际应用,点击下方链接免费试用!

网络爬虫 API | Oxylabs

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-24发表,共计4958字。
新手QQ群:570568346,欢迎进群讨论 Python51学习