> 백엔드 개발 > PHP 튜토리얼 > Python 다중 스레드 PHP 다중 스레드 웹 페이지 크롤링 구현 코드

Python 다중 스레드 PHP 다중 스레드 웹 페이지 크롤링 구현 코드

WBOY
풀어 주다: 2016-07-29 08:43:19
원래의
1129명이 탐색했습니다.

PHP 언어 자체가 멀티스레딩을 지원하지 않는다는 점으로 인해 크롤러 프로그램 개발의 효율성은 높지 않습니다. 이때 여러 항목에 대한 동시 멀티스레딩 액세스를 달성할 수 있는 Curl Multi Functions를 사용해야 하는 경우가 많습니다. URL 주소. Curl Multi Function은 매우 강력하므로 Curl Multi Functions를 사용하여 동시 멀티스레드 파일 다운로드를 작성할 수 있습니까? 물론 가능합니다. 내 코드는 다음과 같습니다.
코드 1: 얻은 코드를 파일에 직접 작성

코드 복사 코드는 다음과 같습니다.


$urls = array(
'http ://www.sina.com.cn/',
'http://www.sohu.com/',
'http://www.163.com/'
) / / 요구사항 가져온 페이지 URL 설정
$save_to='/test.txt'; // 가져온 코드를 파일에 작성합니다.
$st = fopen($save_to,"a")
$mh = curl_multi_init();
foreach($urls as $i => $url) {
$conn[$i] = curl_init($url)
curl_setopt($conn[$i], CURLOPT_USERAGENT , "Mozilla/4.0(호환; MSIE 7.0; Windows NT 6.0)");
curl_setopt($conn[$i], CURLOPT_HEADER ,0)
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT, 60 );
curl_setopt($conn[$i], CURLOPT_FILE,$st); // 크롤링된 코드를 파일에 기록하도록 설정
curl_multi_add_handle($mh,$conn[$i]); >} // 초기화
do {
curl_multi_exec($mh,$active)
} while ($active) // 실행
foreach ($urls as $i => $url ) {
curl_multi_remove_handle($mh,$conn[$i]);
curl_close($conn[$i])
} // 청소 종료
curl_multi_close($mh); >fclose($st);
?>


코드 2: 얻은 코드를 먼저 변수에 넣은 후 파일에 씁니다



코드 복사 코드는 다음과 같습니다.

$urls = array(
'http://www.sina. com.cn/',
'http://www.sohu.com/',
'http://www.163.com/'
)
$save_to='/ test.txt' ; // 캡처된 코드를 파일에 작성합니다.
$st = fopen($save_to,"a")
$mh = cur_multi_init()
foreach($urls는 $i; => ; $url) {
$conn[$i] = curl_init($url);
curl_setopt($conn[$i], CURLOPT_USERAGENT, "Mozilla/4.0(호환; MSIE 7.0; Windows NT 6.0) )" );
curl_setopt($conn[$i], CURLOPT_HEADER,0);
curl_setopt($conn[$i], CURLOPT_CONNECTTIMEOUT,60); true); // 크롤링 코드를 작성하지 않도록 설정 브라우저에 연결하되 문자열
curl_multi_add_handle ($mh,$conn[$i])
}
do {
cur_multi_exec($mh,$active)
} while ($active);
foreach ($urls as $i => $url) {
$data = cur_multi_getcontent($conn[$i] ) // 크롤링된 코드 문자열 가져오기
fwrite($st,$data); // 문자열을 파일에 씁니다. 물론, 데이터베이스에 저장하는 등 파일에 쓰지 않는 것도 가능합니다
} // 데이터 변수를 얻어 파일에 씁니다
foreach ($urls as $i => $url ) {
curl_multi_remove_handle($mh,$conn[$i])
curl_close($conn[$i])
}
curl_multi_close($mh); st);
?> ;
위 내용은 Python 멀티스레딩 콘텐츠를 포함하여 Python 멀티스레드 PHP 멀티스레드 웹페이지 크롤링 구현 코드를 소개한 내용이 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿