PHP 多线程采集
- function curl_multi($urls) {
- if (!is_array($urls) or count($urls) == 0) {
- return false;
- }
- $num=count($urls);
- $curl = $curl2 = $text = array();
- $handle = curl_multi_init();
- function createCh($url) {
- $ch = curl_init();
- curl_setopt ($ch, CURLOPT_URL, $url);
- curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko');//设置头部
- curl_setopt ($ch, CURLOPT_REFERER, $url); //设置来源
- curl_setopt ($ch, CURLOPT_ENCODING, "gzip"); // 编码压缩
- curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);//是否采集301、302之后的页面
- curl_setopt ($ch, CURLOPT_MAXREDIRS, 5);//查找次数,防止查找太深
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // 对认证证书来源的检查
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // 从证书中检查SSL加密算法是否存在
- curl_setopt ($ch, CURLOPT_TIMEOUT, 20);
- curl_setopt ($ch, CURLOPT_HEADER, 0);//输出头部
- return $ch;
- }
- foreach($urls as $k=>$v){
- $url=$urls[$k];
- $curl[$k] = createCh($url);
- curl_multi_add_handle ($handle,$curl[$k]);
- }
- $active = null;
- do {
- $mrc = curl_multi_exec($handle, $active);
- } while ($mrc == CURLM_CALL_MULTI_PERFORM);
- while ($active && $mrc == CURLM_OK) {
- if (curl_multi_select($handle) != -1) {
- usleep(100);
- }
- do {
- $mrc = curl_multi_exec($handle, $active);
- } while ($mrc == CURLM_CALL_MULTI_PERFORM);
- }
- foreach ($curl as $k => $v) {
- if (curl_error($curl[$k]) == "") {
- $text[$k] = (string) curl_multi_getcontent($curl[$k]);
- }
- curl_multi_remove_handle($handle, $curl[$k]);
- curl_close($curl[$k]);
- }
- curl_multi_close($handle);
- return $text;
- }
- $urls=array('http://www.baidu.com',
- 'http://www.baidu.com',
- 'http://www.baidu.com',
- 'http://www.baidu.com',
- 'http://www.baidu.com',
- 'http://www.baidu.com',
- 'http://www.baidu.com',
- 'http://www.baidu.com'
- );
- $res=curl_multi($urls);
- print_r($res);
PHP 多线程采集的更多相关文章
- Python多线程采集百度相关搜索关键词
百度相关搜索关键词抓取,读取txt关键词,导出txt关键词 #百度相关搜索关键词抓取,读取txt关键词,导出txt关键词 # -*- coding=utf-8 -*- import request ...
- python3 多线程 采集 xpath
#!/usr/bin/python # -*- coding: UTF-8 -*- '''Thread3 多线程测试采集''' import threading,time,queue,Mongo_ut ...
- python多线程采集
import requests import json import threading Default_Header = { #具体请求头自己去弄 } _session=requests.sessi ...
- PHP使用CURL_MULTI实现多线程采集
$connomains = array( "http://www.baidu.com/", "http://www.hao123.com/", "ht ...
- python多线程采集图片
cmd中运行 >python untitled2.py 图片的网站 import requests import threading from bs4 import BeautifulSo ...
- PHP cURL应用实现模拟登录与采集使用方法详解
对于做过数据采集的人来说,cURL一定不会陌生.虽然在PHP中有file_get_contents函数可以获取远程链接的数据,但是它的可控制性太差了,对于各种复杂情况的采集情景,file_get_co ...
- 多线程实际运用<第七篇>
1.单线程采集100个页面 class Program { static int i = 6991275; static void Main(string[] args) { Stopwatch sw ...
- PHP cURL实现模拟登录与采集使用方法详解教程
来源:http://www.zjmainstay.cn/php-curl 本文将通过案例,整合浏览器工具与PHP程序,教你如何让数据 唾手可得 . 对于做过数据采集的人来说,cURL一定不会陌生.虽然 ...
- 转载 多线程实际运用<第七篇>
多线程实际运用<第七篇> 1.单线程采集100个页面 class Program { static int i = 6991275; static void Main(string[] a ...
随机推荐
- HDU-4055:Number String
链接:HDU-4055:Number String 题意:给你一个字符串s,s[i] = 'D'表示排列中a[i] > a[i+1],s[i] = 'I'表示排列中a[i] < a[i+1 ...
- 7个Node.js的Web框架
NodeJS也就是Node,是众所周知的使用javascript构建Web应用框架,它启动一个服务器非常简单,如下: var http = require('http'); http.createSe ...
- Pycharm 2018.2.1-2018.1
请支持正版,谢谢! 下载激活包 激活包地址 解压后会得到两个包: JetbrainsCrack-2.10-release-enc.jar JetbrainsCrack-3.1-release-enc. ...
- I understand that you would like to know about the Amazon Giveaway
Dear Seller, Greetings from Amazon Seller Support. From your mail, I understand that you would like ...
- 用 Python 编写的 Python 解释器
Allison是Dropbox的工程师,在那里她维护着世界上最大的由Python客户组成的网络.在Dropbox之前,她是Recurse Center的引导师, … 她在北美的PyCon做过关于Pyt ...
- mysql中latin1编码中文转utf8
在mysql中,对应的表字段编码通常默认为lartin1编码,在本地客户端显示的时候看着是乱码,但是通过mysql -u -p -h命令登录后,select查询到数据是正常的,通过jdbc或者php等 ...
- 如何理解IPD+CMMI+Scrum一体化研发管理解决方案之IPD篇
如何快速响应市场的变化,如何推出更有竞争力的产品,如何在竞争中脱颖而出,是国内研发企业普遍面临的核心问题,为了解决这些问题,越来越多的企业开始重视创新与研发管理,加强研发过程的规范化,集成产品开发(I ...
- Scrum立会报告+燃尽图(十月十日总第一次):选题
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2190 Scrum立会master:付佳 一.小组介绍 组长:付佳 组员: ...
- 1019psp
1.本周psp: 2.本周进度条: 3.累计进度图(折线图): 4.psp饼状图:
- c# 捕获一般获取不到的异常
1.主函数入口加异常事件,代码例如: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void M ...