PHP 如何进行访问很多网页的操作?

2016-01-16 19:44:05 +08:00
 wd0g

做类似百度搜索的这种
因为百度没有开放 API
所以得自己用 PHP 来爬取结果
每次爬取 50 页的内容,然后输出给客户
大概流程是:
1:用户输入关键字
2:通过关键字爬取百度 50 页的结果
3:输出指定结果给用户

不知道有什么好的方法,能解决速度的问题

3151 次点击
所在节点    PHP
17 条回复
XianZaiZhuCe
2016-01-16 19:45:33 +08:00
百度试试 php 抓取
function007
2016-01-16 20:10:13 +08:00
stream_socket_client
JiShuTui
2016-01-16 20:15:27 +08:00
百度前两年为了防止 360 等抓取结果,做了很多防抓取措施
viko16
2016-01-16 20:19:18 +08:00
请百度一下怎么爬取百度, 2333
wizardforcel
2016-01-16 20:45:01 +08:00
有啊。以前写基于贴吧的工具的时候,我都是反编译客户端找接口。客户端接口返回的都是 json ,而且不像网页经常改,爽到爆。
gzlock
2016-01-16 21:26:52 +08:00
@wizardforcel 我会先抓包,抓包失败才去反编译。。。
wizardforcel
2016-01-16 21:59:59 +08:00
而且为何在百度这棵歪脖树上吊死,换个提供 api 的搜索引擎不就得了。再说百度的结果质量也不是很好。
lmfx89
2016-01-16 22:07:34 +08:00
回答题目: php 可以批量访问的,可以 google curl_multi_exec 或者 php curl_multi 都可以。
jugelizi
2016-01-16 22:11:52 +08:00
一种是前台 js 发个 50 请求
还有用多线程扩展来爬
wd0g
2016-01-17 02:50:26 +08:00
@JiShuTui
@viko16
@wizardforcel
额,我只是拿百度打个比方,不是真正的爬取百度,哈哈哈
wd0g
2016-01-17 02:53:34 +08:00
有可能是我主文写的有问题,我的问题是如何解决 PHP 同时访问 50 个网页速度慢的问题
chaegumi
2016-01-17 07:37:47 +08:00
wizardforcel
2016-01-17 10:27:36 +08:00
@gzlock oauth 有个校验用的 sign ,抓包破不出来 key 。
em70
2016-01-17 10:54:29 +08:00
这个问题就好比说如何 1 秒下载 1G 的文件一样,下载慢是因为带宽不行啊,而且单线程每次握手都还需要时间,解决办法是每次只获取一页的,翻页再获取下一页的内容
wd0g
2016-01-17 14:46:47 +08:00
@em70 确实,领教了!
wd0g
2016-01-24 05:22:53 +08:00
@function007 @gzlock @lmfx89 @jugelizi @chaegumi @wizardforcel @em70
换了一个思路,我现在是按固定时间频率去访问用户设置的关键字,用户搜索时不是实时查询
em70
2016-01-24 10:44:35 +08:00
@wd0g 这个叫反向索引,百度谷歌也是这样做的,不会每次搜索去庞大的库里找,大部分关键字百度每月只更新 2 次,热门关键词频率会高一些

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/251234

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX