php多线程抓取多个网页(几天人会_multi系列函数实现此功能(图))

优采云 发布时间: 2021-09-12 22:11

  php多线程抓取多个网页(几天人会_multi系列函数实现此功能(图))

  这几天一直在做一个多搜索引擎关键词排名查询工具,用来及时方便的了解关键词在各大搜索引擎的排名情况。爬360搜索的时候发现360搜索每个页面只支持显示10个搜索结果。如果要得到100条搜索结果数据,就得搜索10次,极大地影响了用户体验。没有人会搜索关键字排名。并愿意等待时间打开网页 10 次。这时候就想到了用多线程来做并发爬取。正好curl_multi系列php curl函数可以实现这个功能。

  一、curl_multi 系列函数介绍:1.curl_multi_init:

  用于初始化一个“curl_multi”句柄,然后将“curl_init”函数生成的多个“curl”句柄传递给“curl_multi”句柄;这个函数不需要参数。

  2. curl_multi_add_handle:

  “curl_multi_add_handle”函数用于将“curl_init”生成的“curl”句柄添加到上面“curl_multi_init”函数生成的“curl_multi”句柄上。 “curl_multi_add_handle”函数的第一个参数是“curl_multi”句柄,第二个参数是“curl”句柄。

  3. curl_multi_exec:

  "curl_multi_exec" 用于发起 curl_multi 请求。 “curl_multi_add_handle”函数的第一个参数是“curl_multi”的句柄,第二个参数是一个“引用参数”,记录了未处理的请求数。当第二个参数的值变为0时,表示所有请求都已处理完毕(所有请求返回成功或超时时间已过)。

  4. curl_multi_info_read:

  “curl_multi_info_read”函数用于读取curl_multi句柄中是否有curl返回信息。如果有,则返回第一个“curl 返回值(数组形式)”,否则返回“false”。循环调用这个函数,直到它返回“false”; “curl_multi_info_read”的参数是“curl_mulit”的句柄。

  5. curl_multi_getcontent:

  当所有的curl句柄都处理完后,我们可以使用“curl_multi_getcontent”函数读取“curl”返回的内容。 “curl_multi_getcontent”的参数是“curl”句柄。

  6. curl_multi_remove_handle:

  阅读内容后,使用“curl_multi_remove_handle”函数从“curl_mulit”句柄中删除所有“curl”句柄。 “curl_multi_remove_handle”函数的第一个参数是“curl_multi”句柄,第二个参数是“curl”句柄。

  7. curl_multi_close:

  “curl_multi_close”函数用于关闭“curl_mulit”句柄并释放占用的资源。 “curl_multi_close”的参数是“curl_mulit”的句柄。

  二、curl_multi 使用流程:

  1、“curl_multi_init”初始化“curl_multi”句柄;

  2、循环创建并添加“curl”句柄,并使用“curl_multi_add_handle”函数将其添加到“curl_multi”句柄中;

  3、 使用“curl_multi_exec”发起请求,等待所有请求处理完毕;

  4、 使用“curl_multi_info_read”函数读取返回值;

  5、 使用“curl_multi_getcontent”函数读取返回的内容;

  6、 使用“curl_multi_remove_handle”函数去除curl句柄;

  7、 使用“curl_multi_close”关闭 curl_multi 句柄。

  三、以下是我使用curl_multi多线程并发抓取360搜索结果的代码片段:#多线程并发抓取函数mfetch:

<p>

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线