내가 사용하는 하나의 웹 사이트 표를 스크랩 할 curl
및preg_match
내 URL은 http://hosts-file.net/?s=Browse&f=EMD
내 컬
$url = 'http://hosts-file.net/?s=Browse&f=EMD';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15") );
curl_setopt($ch, CURLOPT_NOBODY, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$body= curl_exec ($ch);
curl_close ($ch);
테이블 하나를 폐기해야합니다.
내 preg_match
기능은 다음과 같습니다.
preg_match_all('/<table class=\"main_normal(.*?)\">(.*?)<\/table>/s',$body,$vv,PREG_SET_ORDER);
하지만 빈 배열 만 반환합니다.
나를 안내 해주세요
DOMDocument 및 DOMXPath의 예 :
$doc = new DOMDocument();
@$doc->loadHTML($body);
$xpath = new DOMXPath($doc);
$links = $xpath->query('/html/body/table/tr/td/table/tr/td/table[@class="main_normal"]/tr/td[2]/a[1]/text()');
foreach($links as $link) {
echo $link->nodeValue."<br/>"; }
네 번째 줄을 상대 경로로 바꿀 수 있지만 효율성이 떨어집니다.
$links = $xpath->query('//table[@class="main_normal"]/tr/td[2]/a[1]/text()');
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다