抓取谷歌';s所有基于特定条件的搜索结果

本文关键字:特定条件 搜索结果 谷歌 抓取 | 更新日期: 2023-09-27 18:28:12

我正在开发我的映射器,我需要获得newegg.com 的完整地图

我可以尝试直接报废NE(这违反了NE的政策),但他们有很多产品无法通过NE直接搜索获得,只能通过谷歌搜索获得;我也需要这些链接。

以下是返回16mil结果的搜索字符串:https://www.google.com/search?as_q=&as_epq=.com%2FProduct%2FProduct.aspx%3FItem%3D&as_oq=&as_eq=&as_nlo=&as_nhi=&lr=&cr=&as_qdr=all&as_sitesearch=newegg.com&as_occt=url&安全=关闭&tbs=&as_filetype=&as_rights=

我希望我的scraper浏览所有结果,并记录所有这些结果的超链接。我可以从谷歌搜索结果中删除所有链接,但谷歌对每个查询有100页的限制-1000个结果,谷歌对这种方法不满意。:)

我对此并不熟悉;你能给我指个正确的方向吗?是否有任何工具/方法可以帮助我实现目标?

抓取谷歌';s所有基于特定条件的搜索结果

我对此并不熟悉;你能给我指个正确的方向吗?是否有任何工具/方法可以帮助我实现目标?

谷歌采取了很多措施来阻止你抓取他们的页面,我并不是说仅仅要求你遵守他们的robots.txt;C、 甚至不是他们推出的"简化"版本(但这是一个单独的问题)。

如果你想被看到,那么你必须让谷歌抓取你的页面然而,如果你想爬谷歌,那么你必须跳过一些主要的障碍!也就是说,你必须获得一堆代理,这样你就可以通过利率限制和他们在任何时候对你的"活动"产生怀疑时发布的302s以上的captcha页面

尽管对谷歌的T&C、 我不建议你违反它但是,如果绝对需要获取数据,那么您可以获得一个大的代理列表,将它们加载到队列中,并在每次想要获取页面时从队列中提取一个代理。如果代理有效,则将其放回队列中;否则,请丢弃代理。甚至可能为每个失败的代理提供一个计数器,如果超过一定数量的失败,则将其丢弃。

我没有尝试过,但你可以使用谷歌自定义搜索API。当然,每天搜索100次后,它就开始花钱了。我猜他们一定在经营一家企业;p

可能有点晚了,但我认为值得一提的是,你可以专业地获得谷歌的可靠性,而不会给它带来问题。

事实上,据我所知,它并没有对谷歌构成任何威胁
如果你没有经验,这很令人困惑,但我不知道有哪一起案件具有法律后果,我一直在关注这个话题。

也许几年前,微软为了给必应提供动力而刮去谷歌,这是最大的刮去案例之一。谷歌能够通过放置真实世界中不存在的虚假结果来证明这一点,Bing突然接受了这些结果
谷歌点名羞辱了他们,这就是我记忆中发生的一切。

使用API很少是一种真正的用途,即使是少量的结果也要花费大量的金钱,而且免费数量也很小(在禁令前每小时40次查找)
另一个缺点是API不能反映真实的搜索结果,在你的情况下,这可能不是一个问题,但在大多数情况下,人们希望获得真正的排名位置。

现在,如果你不接受谷歌的TOS或忽略它(他们在创业时刮伤你时并不关心你的TOS),你可以走另一条路
模拟真实用户并直接从SERP获取数据。

这里的线索是,每个IP地址每小时发送大约10个请求(可以增加到20个)(是的,你使用了多个IP)。在过去的几年里,这个数字已经被证明不会给谷歌带来任何问题
使用缓存、数据库、ip轮换管理,以避免频繁使用它
IP地址需要是干净的,非共享的,如果可能的话,没有滥用历史
最初建议的代理列表会使主题复杂化,因为你会收到不稳定、不可靠的IP,这些IP的绝对使用、共享和历史记录都有问题。

上有一个开源PHP项目http://scraping.compunect.com它包含了你需要启动的所有功能,我把它用于我的工作,现在已经运行了几年,没有遇到任何问题。这是一个已完成的项目,主要是作为项目的可自定义基础构建的,但也可以独立运行。

此外,PHP也是一个不错的选择,我最初持怀疑态度,但我在两年内一直将PHP(5)作为后台进程运行,没有中断过一次
对于这样一个项目来说,性能很好,所以我愿意试一试
否则,PHP代码就像C/JAVA。。你可以看到事情是如何完成的,并在自己的项目中重复它们。