使用明亮的数据进行复杂的网络抓取
请求REST或GraphQL api提供的结构化数据很容易。从任何网页上搜集任意数据更像是一件苦差事,但它为我们提供了更多的机会。光明数据提供的服务使抓取更容易、可靠和实用。
我们与明亮的数据.感谢您对合作伙伴的支持,是他们让SitePoint成为可能。必威西盟体育网页登录
抓取数据是web开发人员的超级力量,它让你超越了普通web用户的能力。你是想找到最便宜的航班,最优惠的酒店房间,还是最后剩下的下一代游戏机?凡人用户必须定期手动搜索,他们需要很大的运气才能买到便宜货。但是网络抓取允许你自动化这个过程。机器人可以每隔几秒钟抓取一次数据,在超过阈值时提醒你,甚至以你的名义自动购买产品。
下面是一个简单的例子bash
命令使用旋度获取SitePoint博客索引页返回的HTML内容。必威西盟体育网页登录必威滚它通过管道传递结果Grep返回最新文章的链接:
旋度“https://www.必威西盟体育网页登录site必威滚point.com/blog/”|\grep- o' <文章[^ >]* > < a href = " [\ s * ^“*”
程序可以每天运行类似的过程,与以前的结果进行比较,并在SitePoint发布新文章时提醒您。必威西盟体育网页登录
在您跳入并尝试从所有喜爱的网站抓取内容之前,请尝试使用旋度
通过谷歌搜索或亚马逊链接。您可能会收到一个HTTP 503服务不可用,并带有一个简短的HTML错误响应。网站通常会设置障碍物来防止刮擦,例如:
- 检查用户代理、cookie和其他HTTP报头,以确保请求来自用户的浏览器,而不是机器人
- 使用javascript支持的Ajax请求生成内容,这样HTML就没有什么信息了
- 要求用户在显示内容之前与页面进行交互——比如向下滚动
- 要求用户在显示内容前登录,比如大多数社交媒体网站
方法可以修复大多数问题无头的浏览器-一个真正的浏览器安装,您可以使用驱动程序来模拟用户交互,例如打开一个选项卡,加载一个页面,向下滚动,单击一个按钮,等等。
您的代码将变得更加复杂,但这并不是问题的结束。一些网站:
- 仅在某些连接上可用,例如移动网络
- 通过检查请求者的IP地址(例如,bbc.co.uk对英国游客开放,但将把来自其他国家的游客重新定向到bbc.com内容和广告较少)
- 阻止来自同一IP地址的重复请求
- 使用验证码或类似的技术来识别机器人
- 使用以下服务Cloudflare,这可以防止在一个网站上检测到的机器人渗透到另一个网站
您现在需要为适当的国家和网络提供代理服务器,理想情况下还需要一个IP地址池以逃避检测。我们离简单还有很长的路要走旋度
结合一两个正则表达式。
幸运的是,明亮的数据为这些技术问题提供了解决方案,并承诺“将网站转换为结构化数据”。Bright Data通过强大的网络连接提供可靠的抓取选项,您可以在几分钟内配置。
无代码Bright Data数据集
Bright Data数据集是最简单的方法开始,如果你需要数据从:
- 电子商务平台,如沃尔玛和各种亚马逊网站(
com
,.de
,。
,。fr
,,
,在
或.co.uk
) - 包括Instagram、LinkedIn、Twitter和抖音在内的社交媒体平台
- 商务网站包括LinkedIn、Crunchbase、Stack Overflow、Indeed和Glassdoor
- 例如谷歌映射业务
- 其他网站,如IMDB
数据集的典型用途是:
- 竞争对手定价的监控
- 跟踪最畅销的产品
- 投资机会
- 竞争情报
- 分析客户反馈
- 保护你的品牌
在大多数情况下,您将希望将数据导入到数据库或电子表格中以执行自己的分析。
数据集是根据复杂性、分析和记录数量来定价的。像亚马逊这样的网站提供数百万种产品,因此获取所有的记录是昂贵的。然而,您不太可能需要所有东西。您可以使用自定义子集过滤数据集以返回感兴趣的记录。下面的示例使用字符串搜索SitePoint图书标题必威西盟体育网页登录新手到忍者
.这样返回的记录要少得多,所以只需要几分钱就可以使用。
您可以通过电子邮件,webhook, Amazon S3,谷歌云存储,Microsoft Azure存储和SFTP一次性或定时接收结果数据。
自定义数据集和Web Scraper IDE
可以从任何网站上抓取自定义数据收集器-一个JavaScript程序,用于控制Bright Data网络上的网络浏览器。
下面的演示演示了如何在Twitter上搜索#必威西盟体育网页登录 sitepoint
标签并返回JSON格式的推文和元数据列表。这个收集器将使用一个API调用来启动,因此您首先需要访问您的帐户设置并创建一个新的API令牌。
光明数据将向您发送确认号码的电子邮件。将它输入到面板中,您将看到您的令牌(36个字符的十六进制GUID)。复制它,并确保你已经安全地存储它:你不会再看到它,如果你丢失它,将需要生成一个新的令牌。
前往收藏家面板在数据采集平台菜单,选择模板。我们在这个例子中使用Twitter,但你可以选择任何你需要的,或者从头创建一个自定义收集器:
这导致了Web Scraper IDE在这里您可以查看和编辑收集器JavaScript代码。Bright Data提供API命令,例如:
国家(代码)
在某一特定国家使用某种设备emulate_device(设备)
来模拟特定的手机或平板电脑导航(url)
在无头浏览器中打开一个URLwait_network_idle ()
等待未完成的请求完成wait_page_idle ()
等待,直到没有进一步的DOM请求点击(选择)
单击特定的元素类型(选择器、文本)
在输入字段中输入文本scroll_to(选择)
滚动到一个元素,使其可见solve_captcha ()
来解决任何显示的验证码parse ()
解析页面数据收集()
向数据集添加数据
帮助面板是可用的,不过如果您编写过无头浏览器或编写过集成测试,那么这些代码应该很熟悉。
在本例中,Twitter模板代码不需要进一步编辑。
滚动到底部并单击输入面板删除示例标签并定义自己的标签(例如#必威西盟体育网页登录 SitePoint
).现在点击预览按钮查看代码在浏览器中的执行情况。完全加载Twitter需要一到两分钟的时间,然后向下滚动页面以呈现选择的结果。
的输出面板在执行完成后显示捕获和格式化的结果。您可以下载数据,并检查运行日志、浏览器控制台、网络请求和错误。
回到收藏家面板使用菜单或顶部的后退箭头。显示您的新收集器。
单击集成到您的系统按下并选择以下选项:
- 的实时(单请求)采集频率
- JSON就格式而言
- API下载作为交付
点击更新保存集成设置并返回到Collectors面板。
现在,单击收集器旁边的三点菜单并进行选择通过API初始化.
通过API启动面板显示了两个旋度
请求命令。
第一个命令执行Twitter标签收集器。它需要上面创建的API令牌。把它加在授权:持票人
头。例如:
旋度\- h“授权:持有人12345678-9abc-def0-1234-56789abcdef0”\- h“application / json内容类型:\- d“{“标签- #”:“#SitePo必威西盟体育网页登录int”}”\“https://api.brightdata.com/dca/trigger_immediate?collector=abc123”
它返回一个带有作业的JSON响应response_id
:
{“response_id”:“c3910b166f387775934ceb4e8lbh6cc”,“how_to_use”:“https://brightdata.com/api/data-collector # real_time_collection”}
你必须通过这项工作response_id
到秒旋度
命令(以及授权头中的API令牌):
旋度\- h“授权:持有人12345678-9abc-def0-1234-56789abcdef0”\“https://api.brightdata.com/dca/get_result?response_id=c3910b166f387775934ceb4e8lbh6cc”
API返回一个等待消息,而收集器正在执行:
{“等待”:真正的,“消息”:“请求正在处理中”}
当收集器完成执行时,它最终将返回一个包含tweet数据的JSON结果。您可以根据需要将这些信息导入到您自己的系统中:
[{“职位”:“https://twitter.com/UserOne/status/111111111111”,“日期”:“2022 - 10 - 17 t19:09:00.000z”,“作者”:“UserOne”,“后的身体”:“推一项内容”,“喜欢”:0,“评论”:0,“股票”:0,“输入”:{“标签- #”:“#必威西盟体育网页登录 SitePoint”}},{“职位”:“https://twitter.com/UserTwo/status/2222222222222”,“日期”:“2022 - 10 - 08 - t13:28:16.000z”,“作者”:“UserTwo”,“后的身体”:“推二内容”,“喜欢”:0,“评论”:0,“股票”:0,“输入”:{“标签- #”:“#必威西盟体育网页登录 SitePoint”}},...]
结果也可以从Bright Data面板中获得。
光明数据代理
如果你的需求不仅仅是抓取网站,你可以利用光明数据的代理网络。用例示例:
- 你有一款Android应用,想在印度的移动网络上测试
- 你有一个服务器应用程序,它需要下载数据,就好像它是服务器真实位置以外的一个或多个国家的用户一样
有一系列可用的代理,包括:
- 住宅代理:在住宅中安装的真实设备上旋转的一组ip
- ISP代理:高速数据中心静态和旋转高速住宅ip
- 数据中心代理静态和旋转数据中心ip
- 移动代理:在真实移动3G / 4G / 5G设备上轮换ip
- Web解锁代理:使用住宅网络的自动解锁系统,其中包括CAPTCHA解决
- SERP API代理:从搜索引擎结果中收集数据的选项
每个选项都提供自动重试、请求限制、IP旋转、IP阻塞、带宽减少、日志记录、成功度量和代理绕过等选项。根据网络的不同,价格从每GB 0.60美元到40美元不等。
最简单的入门方法是使用浏览器扩展铬或火狐.您可以配置扩展使用任何特定的代理网络,所以它是测试网站在特定位置的理想选择。
对于更高级的使用,需要代理管理器.这是一个安装在你的设备上的代理,作为你的应用程序和Bright Data网络之间的中间人。在对您进行身份验证并连接到真正的代理之前,它使用命令行选项动态控制配置。
版本可用于Linux, macOS, Windows,码头工人,而作为Node.js npm包.源代码如下可以在Github上找到.示例脚本在明亮的数据网站说明如何使用代理在shell脚本(旋度
)、Node.js、Java、c#、Visual Basic、PHP、Python、Ruby、Perl等。
代理的使用可能会变得复杂,所以Bright Data建议你联系你的客户经理,讨论一下需求。
结论
多年来,随着网站试图阻止机器人、黑客和内容窃贼,收集数据变得越来越困难。位置、设备和特定于网络的内容所增加的复杂性使任务更具挑战性。
明亮的数据提供了一种低成本的解决刮痧的方法。您可以立即获得有用的数据,并随着需求的发展采用其他服务。光明数据网络可靠、灵活、高效,因此您只需为成功提取的数据付费。