做类似百度搜索的这种
因为百度没有开放 API
所以得自己用 PHP 来爬取结果
每次爬取 50 页的内容,然后输出给客户
大概流程是:
1:用户输入关键字
2:通过关键字爬取百度 50 页的结果
3:输出指定结果给用户
不知道有什么好的方法,能解决速度的问题
1
XianZaiZhuCe 2016-01-16 19:45:33 +08:00 via iPhone 1
百度试试 php 抓取
|
2
function007 2016-01-16 20:10:13 +08:00 1
stream_socket_client
|
3
JiShuTui 2016-01-16 20:15:27 +08:00
百度前两年为了防止 360 等抓取结果,做了很多防抓取措施
|
4
viko16 2016-01-16 20:19:18 +08:00
请百度一下怎么爬取百度, 2333
|
5
wizardforcel 2016-01-16 20:45:01 +08:00
有啊。以前写基于贴吧的工具的时候,我都是反编译客户端找接口。客户端接口返回的都是 json ,而且不像网页经常改,爽到爆。
|
6
gzlock 2016-01-16 21:26:52 +08:00
@wizardforcel 我会先抓包,抓包失败才去反编译。。。
|
7
wizardforcel 2016-01-16 21:59:59 +08:00 via Android
而且为何在百度这棵歪脖树上吊死,换个提供 api 的搜索引擎不就得了。再说百度的结果质量也不是很好。
|
8
lmfx89 2016-01-16 22:07:34 +08:00
回答题目: php 可以批量访问的,可以 google curl_multi_exec 或者 php curl_multi 都可以。
|
9
jugelizi 2016-01-16 22:11:52 +08:00
一种是前台 js 发个 50 请求
还有用多线程扩展来爬 |
10
wd0g OP |
11
wd0g OP 有可能是我主文写的有问题,我的问题是如何解决 PHP 同时访问 50 个网页速度慢的问题
|
12
chaegumi 2016-01-17 07:37:47 +08:00 1
|
13
wizardforcel 2016-01-17 10:27:36 +08:00 via Android
@gzlock oauth 有个校验用的 sign ,抓包破不出来 key 。
|
14
em70 2016-01-17 10:54:29 +08:00 via iPhone 1
这个问题就好比说如何 1 秒下载 1G 的文件一样,下载慢是因为带宽不行啊,而且单线程每次握手都还需要时间,解决办法是每次只获取一页的,翻页再获取下一页的内容
|
16
wd0g OP @function007 @gzlock @lmfx89 @jugelizi @chaegumi @wizardforcel @em70
换了一个思路,我现在是按固定时间频率去访问用户设置的关键字,用户搜索时不是实时查询 |