使用明亮的数据进行复杂的网络抓取

    克雷格的盾牌
    分享

    请求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令牌。

    创建API令牌

    光明数据将向您发送确认号码的电子邮件。将它输入到面板中,您将看到您的令牌(36个字符的十六进制GUID)。复制它,并确保你已经安全地存储它:你不会再看到它,如果你丢失它,将需要生成一个新的令牌。

    前往收藏家面板数据采集平台菜单,选择模板。我们在这个例子中使用Twitter,但你可以选择任何你需要的,或者从头创建一个自定义收集器:

    光明数据采集器

    这导致了Web Scraper IDE在这里您可以查看和编辑收集器JavaScript代码。Bright Data提供API命令,例如:

    • 国家(代码)在某一特定国家使用某种设备
    • emulate_device(设备)来模拟特定的手机或平板电脑
    • 导航(url)在无头浏览器中打开一个URL
    • wait_network_idle ()等待未完成的请求完成
    • wait_page_idle ()等待,直到没有进一步的DOM请求
    • 点击(选择)单击特定的元素
    • 类型(选择器、文本)在输入字段中输入文本
    • scroll_to(选择)滚动到一个元素,使其可见
    • solve_captcha ()来解决任何显示的验证码
    • parse ()解析页面数据
    • 收集()向数据集添加数据

    帮助面板是可用的,不过如果您编写过无头浏览器或编写过集成测试,那么这些代码应该很熟悉。

    在本例中,Twitter模板代码不需要进一步编辑。

    Bright Data代码编辑器

    滚动到底部并单击输入面板删除示例标签并定义自己的标签(例如#必威西盟体育网页登录 SitePoint).现在点击预览按钮查看代码在浏览器中的执行情况。完全加载Twitter需要一到两分钟的时间,然后向下滚动页面以呈现选择的结果。

    Bright数据收集器预览

    输出面板在执行完成后显示捕获和格式化的结果。您可以下载数据,并检查运行日志、浏览器控制台、网络请求和错误。

    数据输出

    回到收藏家面板使用菜单或顶部的后退箭头。显示您的新收集器。

    光明数据集成

    单击集成到您的系统按下并选择以下选项:

    • 实时(单请求)采集频率
    • JSON就格式而言
    • API下载作为交付

    Bright Data JSON API设置

    点击更新保存集成设置并返回到Collectors面板。

    现在,单击收集器旁边的三点菜单并进行选择通过API初始化

    Bright Data API启动

    通过API启动面板显示了两个旋度请求命令。

    Bright Data卷曲示例

    第一个命令执行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代理扩展

    对于更高级的使用,需要代理管理器.这是一个安装在你的设备上的代理,作为你的应用程序和Bright Data网络之间的中间人。在对您进行身份验证并连接到真正的代理之前,它使用命令行选项动态控制配置。

    版本可用于Linux, macOS, Windows,码头工人,而作为Node.js npm包.源代码如下可以在Github上找到示例脚本在明亮的数据网站说明如何使用代理在shell脚本(旋度)、Node.js、Java、c#、Visual Basic、PHP、Python、Ruby、Perl等。

    代理的使用可能会变得复杂,所以Bright Data建议你联系你的客户经理,讨论一下需求。

    结论

    多年来,随着网站试图阻止机器人、黑客和内容窃贼,收集数据变得越来越困难。位置、设备和特定于网络的内容所增加的复杂性使任务更具挑战性。

    明亮的数据提供了一种低成本的解决刮痧的方法。您可以立即获得有用的数据,并随着需求的发展采用其他服务。光明数据网络可靠、灵活、高效,因此您只需为成功提取的数据付费。

    Baidu