亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

php框架

php框架

一個(gè)簡(jiǎn)單的開(kāi)源PHP爬蟲(chóng)框架『Phpfetcher』

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 482 次瀏覽 ? 2020-05-27 08:02 ? 來(lái)自相關(guān)話(huà)題

  報dom為空
  
  fanfank 文章作者
  完整的代碼貼下來(lái)我看一下,或者在微博私信我,我幫你看一下
  
  aa
  //下面兩行促使這個(gè)項目被下載出來(lái)后本文件能直接運行
  $demo_include_path = dirname(__FILE__) . ‘/../’;
  set_include_path(get_include_path() . PATH_SEPARATOR . $demo_include_path);
  require_once(‘phpfetcher.php’);
  class mycrawler extends Phpfetcher_Crawler_Default {
  public function handlePage($page) {
  var_dump($page);
  //打印處當前頁(yè)面的第1個(gè)h1標題內榮(下標從0開(kāi)始)
  $strFirstH1 = trim($page->sel(‘//title’, 0)->plaintext);
  if (!empty($strFirstH1)) {
  echo $page->sel(‘//title’, 0)->plaintext;
  echo “\n”;
  }
  }
  }
  $crawler = new mycrawler();
  $arrJobs = array(
  //任務(wù)的名子隨意起,這里把名子叫qqnews
  //the key is the name of a job, here names it qqnews
  ‘qqnews’ => array(
  ‘start_page’ => ‘#8217;, //起始網(wǎng)頁(yè)
  ‘link_rules’ => array(
  /*
  * 所有在這里列舉的正則規則,只要能匹配到超鏈接,那么那條爬蟲(chóng)才會(huì )爬到那條超鏈接
  * Regex rules are listed here, the crawler will follow any hyperlinks once the regex matches
  */
  //’#news\.qq\.com/a/\d+/\d+\.htm$#’,
  ),
  //爬蟲(chóng)從開(kāi)始頁(yè)面算起,最多爬取的深度,設置為2表示爬取深度為1
  //Crawler’s max following depth, 1 stands for only crawl the start page
  ‘max_depth’ => 1,
  ) ,
  );
  $crawler->setFetchJobs($arrJobs)->run(); //這一行的療效和下邊兩行的療效一樣
  其他的沒(méi)變
  
  aa
  public function read() {
  $this->_strContent = curl_exec($this->_curlHandle);
  是_strContent取到了false造成的 這個(gè)是啥緣由呢Page default.php
  
  fanfank 文章作者
  我這兒返回的是403 forbidden,查了一下曉得緣由了,因為user_agent的問(wèn)題csdn把爬蟲(chóng)給禁了。你可以這樣更改:找到文件Phpfetcher/Page/Default.php,然后搜『user_agent』,把上面改掉,我改成『firefox』就可以了,當然你可以可以改得更真實(shí)一點(diǎn),例如哪些『Mozilla/5.0 AppleWebKit』之類(lèi)的
  有些網(wǎng)站會(huì )依照UA來(lái)屏蔽懇求,可能是因為個(gè)別UA有惡意功擊的特點(diǎn),或者一些爬蟲(chóng)之類(lèi)的開(kāi)源爬蟲(chóng)框架,之前百度有一段時(shí)間屏蔽360瀏覽器就是通過(guò)360瀏覽器里一些特定的UA來(lái)做到的,當然后來(lái)360瀏覽器把UA給更改嗯,就須要依照其它特點(diǎn)屏蔽了。
  所以你這兒先改一下user_agent吧。
  
  aa
  多謝哈
  試著(zhù)改成Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0 也不行呢
  試了這兒的也不行 恐怕還是curl的問(wèn)題
  
  fanfank 文章作者
  我這兒執行都是正常的,結果也能下來(lái)。還是通過(guò)微博私信說(shuō)吧,這里說(shuō)得刷屏了
  
  aa
  圍脖id是?
  
  fanfank 文章作者
  另外是,你貼的代碼上面,標點(diǎn)符號不對啊,你的start_page對應那一行的標點(diǎn),怎么是英文的單冒號?后面的單冒號似乎也不是個(gè)單冒號吧?要全部用英語(yǔ)的單冒號才行。
  
  aa
  符號是對的哈 都是英語(yǔ)的 沒(méi)句型錯誤
  
  joke
  為什么匹配的內容都一樣?
  代碼:
  sel(‘//span[@id=”text110″]’, 0)->plaintext);
  if (!empty($strFirstH1)) {
  echo “”;
  echo $page->sel(‘//span[@id=”text110″]’, 0)->plaintext;
  echo “”;
  echo “\n”;
  }
  }
  }
  $crawler = new mycrawler();
  $arrJobs = array(
  ‘joke’ => array(
  ‘start_page’ => ‘#8217;,
  ‘link_rules’ => array(
  ‘#/\woke\wtml/\w+/20151021\d+\.htm$#’,
  ),
  ‘max_depth’ => 2,
  ) ,
  );
  $crawler->setFetchJobs($arrJobs)->run();
  
  fanfank 文章作者
  你的代碼沒(méi)貼全,而且匹配的內容都一樣我沒(méi)很理解是哪些意思,這個(gè)問(wèn)題有點(diǎn)長(cháng),你直接在微博私信我,我幫你看一下
  
  fanfank 文章作者
  已經(jīng)修補了。之前的問(wèn)題是爬蟲(chóng)不認識站內鏈接,例如有的超鏈接是『/entry』這樣的,而不是『』?,F在最新的Phpfetcher早已就能辨識站內鏈接,可以試一下
  
  joke
  謝謝 ,搞定了
  
  modejun
  樓主您好,問(wèn)問(wèn)假如我曉得了一個(gè)網(wǎng)站開(kāi)源爬蟲(chóng)框架,但是要遞交post參數,這個(gè)要如何弄呢,朋友提供一下思路
  
  fanfank 文章作者
  提交post參數,那覺(jué)得場(chǎng)景很特殊的,因為這個(gè)就不是單純地按照鏈接爬取網(wǎng)頁(yè)內容了,而且假如真的提供這個(gè)功能,針對什么樣的鏈接什么樣的參數,怎么遞交,然后返回的內容是如何處理這種,目前我覺(jué)得似乎不太適宜爬蟲(chóng)做?;蛘吣阍谖⒉┧叫盼?,告訴我你的使用場(chǎng)景是哪些,我瞧瞧是不是考慮找時(shí)間加進(jìn)去
  
  modejun
  場(chǎng)景就是有一翻頁(yè)時(shí)用ajax post遞交的page參數,如果是get就太easy。還有順便問(wèn)問(wèn),如果翻頁(yè)我明天試了要解決的話(huà)就是調節深度,但是似乎最大是20,還有就是更改正則循環(huán)調用setFetchJobs這個(gè)方式,總是覺(jué)得不是這么完美,有哪些好的思路解決翻頁(yè)這個(gè)問(wèn)題嗎,現在公司在定方案我想多了解把這個(gè)框架的優(yōu)勢發(fā)揮下來(lái),感謝了。
  
  fanfank 文章作者
  如果像你說(shuō)的是個(gè)post懇求,那么它返回的應當不是一個(gè)HTML格式的文檔,通常都是json格式的,然后由當前頁(yè)面將異步返回的內容加載顯示下來(lái)。
  你們的post懇求應當是有類(lèi)似pn,rn等參數,如果大家僅僅是想領(lǐng)到post懇求的所有內容,可以直接寫(xiě)一個(gè)for循環(huán),然后使用php的curl來(lái)直接發(fā)送post懇求獲取每一個(gè)頁(yè)面內容,可以不使用爬蟲(chóng),因為這個(gè)爬蟲(chóng)基本原理是針對GET懇求返回的HTML頁(yè)面的,然后手動(dòng)抽取HTML的標簽
  最大深度可以更改類(lèi)『Phpfetcher_Crawler_Default』中的『MAX_DEPTH』變量,把20改成-1就沒(méi)有限制了,不過(guò)建議還是設一個(gè)上限比較好
  可以不需要循環(huán)更改正則呀,設置正則規則的可以是一個(gè)鏈表,把上面的所有你認為合適的正則都列上就可以,除非說(shuō)你的正則表達式還得依據頁(yè)面的某個(gè)參數或則內容不同而更改,那這個(gè)情況還是相對特殊了一點(diǎn)···
  翻頁(yè)的解決,如果是GET就用爬蟲(chóng),如果是POST,那么直接for循環(huán)之后調用curl會(huì )更好。
  
 ??;;;
  好像不錯
  
 ??;;;
  能不能寫(xiě)個(gè)DOM選擇器和技巧的文檔,最好支持css選擇DOM標簽,有子節點(diǎn),父節點(diǎn),兄弟節點(diǎn)選擇才好
  
  fanfank 文章作者
  在這個(gè)項目的github頁(yè)面:,中文說(shuō)明的第2節上面,有介紹dom選擇器的文檔
  
  jeremy
  博主。。為什么https的頁(yè)面沒(méi)辦法懇求呢? 查看全部

  報dom為空
  
  fanfank 文章作者
  完整的代碼貼下來(lái)我看一下,或者在微博私信我,我幫你看一下
  
  aa
  //下面兩行促使這個(gè)項目被下載出來(lái)后本文件能直接運行
  $demo_include_path = dirname(__FILE__) . ‘/../’;
  set_include_path(get_include_path() . PATH_SEPARATOR . $demo_include_path);
  require_once(‘phpfetcher.php’);
  class mycrawler extends Phpfetcher_Crawler_Default {
  public function handlePage($page) {
  var_dump($page);
  //打印處當前頁(yè)面的第1個(gè)h1標題內榮(下標從0開(kāi)始)
  $strFirstH1 = trim($page->sel(‘//title’, 0)->plaintext);
  if (!empty($strFirstH1)) {
  echo $page->sel(‘//title’, 0)->plaintext;
  echo “\n”;
  }
  }
  }
  $crawler = new mycrawler();
  $arrJobs = array(
  //任務(wù)的名子隨意起,這里把名子叫qqnews
  //the key is the name of a job, here names it qqnews
  ‘qqnews’ => array(
  ‘start_page’ => ‘#8217;, //起始網(wǎng)頁(yè)
  ‘link_rules’ => array(
  /*
  * 所有在這里列舉的正則規則,只要能匹配到超鏈接,那么那條爬蟲(chóng)才會(huì )爬到那條超鏈接
  * Regex rules are listed here, the crawler will follow any hyperlinks once the regex matches
  */
  //’#news\.qq\.com/a/\d+/\d+\.htm$#’,
  ),
  //爬蟲(chóng)從開(kāi)始頁(yè)面算起,最多爬取的深度,設置為2表示爬取深度為1
  //Crawler’s max following depth, 1 stands for only crawl the start page
  ‘max_depth’ => 1,
  ) ,
  );
  $crawler->setFetchJobs($arrJobs)->run(); //這一行的療效和下邊兩行的療效一樣
  其他的沒(méi)變
  
  aa
  public function read() {
  $this->_strContent = curl_exec($this->_curlHandle);
  是_strContent取到了false造成的 這個(gè)是啥緣由呢Page default.php
  
  fanfank 文章作者
  我這兒返回的是403 forbidden,查了一下曉得緣由了,因為user_agent的問(wèn)題csdn把爬蟲(chóng)給禁了。你可以這樣更改:找到文件Phpfetcher/Page/Default.php,然后搜『user_agent』,把上面改掉,我改成『firefox』就可以了,當然你可以可以改得更真實(shí)一點(diǎn),例如哪些『Mozilla/5.0 AppleWebKit』之類(lèi)的
  有些網(wǎng)站會(huì )依照UA來(lái)屏蔽懇求,可能是因為個(gè)別UA有惡意功擊的特點(diǎn),或者一些爬蟲(chóng)之類(lèi)的開(kāi)源爬蟲(chóng)框架,之前百度有一段時(shí)間屏蔽360瀏覽器就是通過(guò)360瀏覽器里一些特定的UA來(lái)做到的,當然后來(lái)360瀏覽器把UA給更改嗯,就須要依照其它特點(diǎn)屏蔽了。
  所以你這兒先改一下user_agent吧。
  
  aa
  多謝哈
  試著(zhù)改成Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0 也不行呢
  試了這兒的也不行 恐怕還是curl的問(wèn)題
  
  fanfank 文章作者
  我這兒執行都是正常的,結果也能下來(lái)。還是通過(guò)微博私信說(shuō)吧,這里說(shuō)得刷屏了
  
  aa
  圍脖id是?
  
  fanfank 文章作者
  另外是,你貼的代碼上面,標點(diǎn)符號不對啊,你的start_page對應那一行的標點(diǎn),怎么是英文的單冒號?后面的單冒號似乎也不是個(gè)單冒號吧?要全部用英語(yǔ)的單冒號才行。
  
  aa
  符號是對的哈 都是英語(yǔ)的 沒(méi)句型錯誤
  
  joke
  為什么匹配的內容都一樣?
  代碼:
  sel(‘//span[@id=”text110″]’, 0)->plaintext);
  if (!empty($strFirstH1)) {
  echo “”;
  echo $page->sel(‘//span[@id=”text110″]’, 0)->plaintext;
  echo “”;
  echo “\n”;
  }
  }
  }
  $crawler = new mycrawler();
  $arrJobs = array(
  ‘joke’ => array(
  ‘start_page’ => ‘#8217;,
  ‘link_rules’ => array(
  ‘#/\woke\wtml/\w+/20151021\d+\.htm$#’,
  ),
  ‘max_depth’ => 2,
  ) ,
  );
  $crawler->setFetchJobs($arrJobs)->run();
  
  fanfank 文章作者
  你的代碼沒(méi)貼全,而且匹配的內容都一樣我沒(méi)很理解是哪些意思,這個(gè)問(wèn)題有點(diǎn)長(cháng),你直接在微博私信我,我幫你看一下
  
  fanfank 文章作者
  已經(jīng)修補了。之前的問(wèn)題是爬蟲(chóng)不認識站內鏈接,例如有的超鏈接是『/entry』這樣的,而不是『』?,F在最新的Phpfetcher早已就能辨識站內鏈接,可以試一下
  
  joke
  謝謝 ,搞定了
  
  modejun
  樓主您好,問(wèn)問(wèn)假如我曉得了一個(gè)網(wǎng)站開(kāi)源爬蟲(chóng)框架,但是要遞交post參數,這個(gè)要如何弄呢,朋友提供一下思路
  
  fanfank 文章作者
  提交post參數,那覺(jué)得場(chǎng)景很特殊的,因為這個(gè)就不是單純地按照鏈接爬取網(wǎng)頁(yè)內容了,而且假如真的提供這個(gè)功能,針對什么樣的鏈接什么樣的參數,怎么遞交,然后返回的內容是如何處理這種,目前我覺(jué)得似乎不太適宜爬蟲(chóng)做?;蛘吣阍谖⒉┧叫盼?,告訴我你的使用場(chǎng)景是哪些,我瞧瞧是不是考慮找時(shí)間加進(jìn)去
  
  modejun
  場(chǎng)景就是有一翻頁(yè)時(shí)用ajax post遞交的page參數,如果是get就太easy。還有順便問(wèn)問(wèn),如果翻頁(yè)我明天試了要解決的話(huà)就是調節深度,但是似乎最大是20,還有就是更改正則循環(huán)調用setFetchJobs這個(gè)方式,總是覺(jué)得不是這么完美,有哪些好的思路解決翻頁(yè)這個(gè)問(wèn)題嗎,現在公司在定方案我想多了解把這個(gè)框架的優(yōu)勢發(fā)揮下來(lái),感謝了。
  
  fanfank 文章作者
  如果像你說(shuō)的是個(gè)post懇求,那么它返回的應當不是一個(gè)HTML格式的文檔,通常都是json格式的,然后由當前頁(yè)面將異步返回的內容加載顯示下來(lái)。
  你們的post懇求應當是有類(lèi)似pn,rn等參數,如果大家僅僅是想領(lǐng)到post懇求的所有內容,可以直接寫(xiě)一個(gè)for循環(huán),然后使用php的curl來(lái)直接發(fā)送post懇求獲取每一個(gè)頁(yè)面內容,可以不使用爬蟲(chóng),因為這個(gè)爬蟲(chóng)基本原理是針對GET懇求返回的HTML頁(yè)面的,然后手動(dòng)抽取HTML的標簽
  最大深度可以更改類(lèi)『Phpfetcher_Crawler_Default』中的『MAX_DEPTH』變量,把20改成-1就沒(méi)有限制了,不過(guò)建議還是設一個(gè)上限比較好
  可以不需要循環(huán)更改正則呀,設置正則規則的可以是一個(gè)鏈表,把上面的所有你認為合適的正則都列上就可以,除非說(shuō)你的正則表達式還得依據頁(yè)面的某個(gè)參數或則內容不同而更改,那這個(gè)情況還是相對特殊了一點(diǎn)···
  翻頁(yè)的解決,如果是GET就用爬蟲(chóng),如果是POST,那么直接for循環(huán)之后調用curl會(huì )更好。
  
 ??;;;
  好像不錯
  
 ??;;;
  能不能寫(xiě)個(gè)DOM選擇器和技巧的文檔,最好支持css選擇DOM標簽,有子節點(diǎn),父節點(diǎn),兄弟節點(diǎn)選擇才好
  
  fanfank 文章作者
  在這個(gè)項目的github頁(yè)面:,中文說(shuō)明的第2節上面,有介紹dom選擇器的文檔
  
  jeremy
  博主。。為什么https的頁(yè)面沒(méi)辦法懇求呢?

phpspider: 《我用爬蟲(chóng)三天時(shí)間“偷了”知乎一百萬(wàn)用戶(hù)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 461 次瀏覽 ? 2020-05-20 08:01 ? 來(lái)自相關(guān)話(huà)題

  《我用爬蟲(chóng)三天時(shí)間“偷了”知乎一百萬(wàn)用戶(hù),只為證明PHP是世界上最好的語(yǔ)言 》所使用的程序
  phpspider是一個(gè)爬蟲(chóng)開(kāi)發(fā)框架。使用本框架爬蟲(chóng)技術(shù)用什么語(yǔ)言,你不用了解爬蟲(chóng)的底層技術(shù)實(shí)現,爬蟲(chóng)被網(wǎng)站屏蔽、有些網(wǎng)站需要登入或驗證碼識別才會(huì )爬取等問(wèn)題。簡(jiǎn)單幾行PHP代碼,就可以創(chuàng )建自己的爬蟲(chóng),利用框架封裝的多進(jìn)程Worker解釋器,代碼更簡(jiǎn)練,執行效率更高速率更快。
  demo目錄下有一些特定網(wǎng)站的爬取規則,只要你安裝了PHP環(huán)境,代碼就可以在命令行下直接跑。 對爬蟲(chóng)感興趣的開(kāi)發(fā)者可以加QQ群一起討論:147824717。
  下面以糗事百科為例, 來(lái)看一下我們的爬蟲(chóng)長(cháng)哪些樣子:
  $configs = array(
 'name' => '糗事百科',
 'domains' => array(
 'qiushibaike.com',
 'www.qiushibaike.com'
 ),
 'scan_urls' => array(
 'http://www.qiushibaike.com/'
 ),
 'content_url_regexes' => array(
 "http://www.qiushibaike.com/article/\d+"
 ),
 'list_url_regexes' => array(
 "http://www.qiushibaike.com/8hr/page/\d+\?s=\d+"
 ),
 'fields' => array(
 array(
 // 抽取內容頁(yè)的文章內容
 'name' => "article_content",
 'selector' => "//*[@id='single-next-link']",
 'required' => true
 ),
 array(
 // 抽取內容頁(yè)的文章作者
 'name' => "article_author",
 'selector' => "//div[contains(@class,'author')]//h2",
 'required' => true
 ),
 ),
);
$spider = new phpspider($configs);
$spider->start();
  爬蟲(chóng)的整體框架就是這樣, 首先定義了一個(gè)$configs鏈表, 里面設置了待爬網(wǎng)站的一些信息, 然后通過(guò)調用$spider = new phpspider($configs);和$spider->start();來(lái)配置并啟動(dòng)爬蟲(chóng).
  
  更多詳盡內容爬蟲(chóng)技術(shù)用什么語(yǔ)言,移步到:
  開(kāi)發(fā)文檔 查看全部

  《我用爬蟲(chóng)三天時(shí)間“偷了”知乎一百萬(wàn)用戶(hù),只為證明PHP是世界上最好的語(yǔ)言 》所使用的程序
  phpspider是一個(gè)爬蟲(chóng)開(kāi)發(fā)框架。使用本框架爬蟲(chóng)技術(shù)用什么語(yǔ)言,你不用了解爬蟲(chóng)的底層技術(shù)實(shí)現,爬蟲(chóng)被網(wǎng)站屏蔽、有些網(wǎng)站需要登入或驗證碼識別才會(huì )爬取等問(wèn)題。簡(jiǎn)單幾行PHP代碼,就可以創(chuàng )建自己的爬蟲(chóng),利用框架封裝的多進(jìn)程Worker解釋器,代碼更簡(jiǎn)練,執行效率更高速率更快。
  demo目錄下有一些特定網(wǎng)站的爬取規則,只要你安裝了PHP環(huán)境,代碼就可以在命令行下直接跑。 對爬蟲(chóng)感興趣的開(kāi)發(fā)者可以加QQ群一起討論:147824717。
  下面以糗事百科為例, 來(lái)看一下我們的爬蟲(chóng)長(cháng)哪些樣子:
  $configs = array(
 'name' => '糗事百科',
 'domains' => array(
 'qiushibaike.com',
 'www.qiushibaike.com'
 ),
 'scan_urls' => array(
 'http://www.qiushibaike.com/'
 ),
 'content_url_regexes' => array(
 "http://www.qiushibaike.com/article/\d+"
 ),
 'list_url_regexes' => array(
 "http://www.qiushibaike.com/8hr/page/\d+\?s=\d+"
 ),
 'fields' => array(
 array(
 // 抽取內容頁(yè)的文章內容
 'name' => "article_content",
 'selector' => "//*[@id='single-next-link']",
 'required' => true
 ),
 array(
 // 抽取內容頁(yè)的文章作者
 'name' => "article_author",
 'selector' => "//div[contains(@class,'author')]//h2",
 'required' => true
 ),
 ),
);
$spider = new phpspider($configs);
$spider->start();
  爬蟲(chóng)的整體框架就是這樣, 首先定義了一個(gè)$configs鏈表, 里面設置了待爬網(wǎng)站的一些信息, 然后通過(guò)調用$spider = new phpspider($configs);和$spider->start();來(lái)配置并啟動(dòng)爬蟲(chóng).
  
  更多詳盡內容爬蟲(chóng)技術(shù)用什么語(yǔ)言,移步到:
  開(kāi)發(fā)文檔

一個(gè)簡(jiǎn)單的開(kāi)源PHP爬蟲(chóng)框架『Phpfetcher』

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 482 次瀏覽 ? 2020-05-27 08:02 ? 來(lái)自相關(guān)話(huà)題

  報dom為空
  
  fanfank 文章作者
  完整的代碼貼下來(lái)我看一下,或者在微博私信我,我幫你看一下
  
  aa
  //下面兩行促使這個(gè)項目被下載出來(lái)后本文件能直接運行
  $demo_include_path = dirname(__FILE__) . ‘/../’;
  set_include_path(get_include_path() . PATH_SEPARATOR . $demo_include_path);
  require_once(‘phpfetcher.php’);
  class mycrawler extends Phpfetcher_Crawler_Default {
  public function handlePage($page) {
  var_dump($page);
  //打印處當前頁(yè)面的第1個(gè)h1標題內榮(下標從0開(kāi)始)
  $strFirstH1 = trim($page->sel(‘//title’, 0)->plaintext);
  if (!empty($strFirstH1)) {
  echo $page->sel(‘//title’, 0)->plaintext;
  echo “\n”;
  }
  }
  }
  $crawler = new mycrawler();
  $arrJobs = array(
  //任務(wù)的名子隨意起,這里把名子叫qqnews
  //the key is the name of a job, here names it qqnews
  ‘qqnews’ => array(
  ‘start_page’ => ‘#8217;, //起始網(wǎng)頁(yè)
  ‘link_rules’ => array(
  /*
  * 所有在這里列舉的正則規則,只要能匹配到超鏈接,那么那條爬蟲(chóng)才會(huì )爬到那條超鏈接
  * Regex rules are listed here, the crawler will follow any hyperlinks once the regex matches
  */
  //’#news\.qq\.com/a/\d+/\d+\.htm$#’,
  ),
  //爬蟲(chóng)從開(kāi)始頁(yè)面算起,最多爬取的深度,設置為2表示爬取深度為1
  //Crawler’s max following depth, 1 stands for only crawl the start page
  ‘max_depth’ => 1,
  ) ,
  );
  $crawler->setFetchJobs($arrJobs)->run(); //這一行的療效和下邊兩行的療效一樣
  其他的沒(méi)變
  
  aa
  public function read() {
  $this->_strContent = curl_exec($this->_curlHandle);
  是_strContent取到了false造成的 這個(gè)是啥緣由呢Page default.php
  
  fanfank 文章作者
  我這兒返回的是403 forbidden,查了一下曉得緣由了,因為user_agent的問(wèn)題csdn把爬蟲(chóng)給禁了。你可以這樣更改:找到文件Phpfetcher/Page/Default.php,然后搜『user_agent』,把上面改掉,我改成『firefox』就可以了,當然你可以可以改得更真實(shí)一點(diǎn),例如哪些『Mozilla/5.0 AppleWebKit』之類(lèi)的
  有些網(wǎng)站會(huì )依照UA來(lái)屏蔽懇求,可能是因為個(gè)別UA有惡意功擊的特點(diǎn),或者一些爬蟲(chóng)之類(lèi)的開(kāi)源爬蟲(chóng)框架,之前百度有一段時(shí)間屏蔽360瀏覽器就是通過(guò)360瀏覽器里一些特定的UA來(lái)做到的,當然后來(lái)360瀏覽器把UA給更改嗯,就須要依照其它特點(diǎn)屏蔽了。
  所以你這兒先改一下user_agent吧。
  
  aa
  多謝哈
  試著(zhù)改成Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0 也不行呢
  試了這兒的也不行 恐怕還是curl的問(wèn)題
  
  fanfank 文章作者
  我這兒執行都是正常的,結果也能下來(lái)。還是通過(guò)微博私信說(shuō)吧,這里說(shuō)得刷屏了
  
  aa
  圍脖id是?
  
  fanfank 文章作者
  另外是,你貼的代碼上面,標點(diǎn)符號不對啊,你的start_page對應那一行的標點(diǎn),怎么是英文的單冒號?后面的單冒號似乎也不是個(gè)單冒號吧?要全部用英語(yǔ)的單冒號才行。
  
  aa
  符號是對的哈 都是英語(yǔ)的 沒(méi)句型錯誤
  
  joke
  為什么匹配的內容都一樣?
  代碼:
  sel(‘//span[@id=”text110″]’, 0)->plaintext);
  if (!empty($strFirstH1)) {
  echo “”;
  echo $page->sel(‘//span[@id=”text110″]’, 0)->plaintext;
  echo “”;
  echo “\n”;
  }
  }
  }
  $crawler = new mycrawler();
  $arrJobs = array(
  ‘joke’ => array(
  ‘start_page’ => ‘#8217;,
  ‘link_rules’ => array(
  ‘#/\woke\wtml/\w+/20151021\d+\.htm$#’,
  ),
  ‘max_depth’ => 2,
  ) ,
  );
  $crawler->setFetchJobs($arrJobs)->run();
  
  fanfank 文章作者
  你的代碼沒(méi)貼全,而且匹配的內容都一樣我沒(méi)很理解是哪些意思,這個(gè)問(wèn)題有點(diǎn)長(cháng),你直接在微博私信我,我幫你看一下
  
  fanfank 文章作者
  已經(jīng)修補了。之前的問(wèn)題是爬蟲(chóng)不認識站內鏈接,例如有的超鏈接是『/entry』這樣的,而不是『』?,F在最新的Phpfetcher早已就能辨識站內鏈接,可以試一下
  
  joke
  謝謝 ,搞定了
  
  modejun
  樓主您好,問(wèn)問(wèn)假如我曉得了一個(gè)網(wǎng)站開(kāi)源爬蟲(chóng)框架,但是要遞交post參數,這個(gè)要如何弄呢,朋友提供一下思路
  
  fanfank 文章作者
  提交post參數,那覺(jué)得場(chǎng)景很特殊的,因為這個(gè)就不是單純地按照鏈接爬取網(wǎng)頁(yè)內容了,而且假如真的提供這個(gè)功能,針對什么樣的鏈接什么樣的參數,怎么遞交,然后返回的內容是如何處理這種,目前我覺(jué)得似乎不太適宜爬蟲(chóng)做?;蛘吣阍谖⒉┧叫盼?,告訴我你的使用場(chǎng)景是哪些,我瞧瞧是不是考慮找時(shí)間加進(jìn)去
  
  modejun
  場(chǎng)景就是有一翻頁(yè)時(shí)用ajax post遞交的page參數,如果是get就太easy。還有順便問(wèn)問(wèn),如果翻頁(yè)我明天試了要解決的話(huà)就是調節深度,但是似乎最大是20,還有就是更改正則循環(huán)調用setFetchJobs這個(gè)方式,總是覺(jué)得不是這么完美,有哪些好的思路解決翻頁(yè)這個(gè)問(wèn)題嗎,現在公司在定方案我想多了解把這個(gè)框架的優(yōu)勢發(fā)揮下來(lái),感謝了。
  
  fanfank 文章作者
  如果像你說(shuō)的是個(gè)post懇求,那么它返回的應當不是一個(gè)HTML格式的文檔,通常都是json格式的,然后由當前頁(yè)面將異步返回的內容加載顯示下來(lái)。
  你們的post懇求應當是有類(lèi)似pn,rn等參數,如果大家僅僅是想領(lǐng)到post懇求的所有內容,可以直接寫(xiě)一個(gè)for循環(huán),然后使用php的curl來(lái)直接發(fā)送post懇求獲取每一個(gè)頁(yè)面內容,可以不使用爬蟲(chóng),因為這個(gè)爬蟲(chóng)基本原理是針對GET懇求返回的HTML頁(yè)面的,然后手動(dòng)抽取HTML的標簽
  最大深度可以更改類(lèi)『Phpfetcher_Crawler_Default』中的『MAX_DEPTH』變量,把20改成-1就沒(méi)有限制了,不過(guò)建議還是設一個(gè)上限比較好
  可以不需要循環(huán)更改正則呀,設置正則規則的可以是一個(gè)鏈表,把上面的所有你認為合適的正則都列上就可以,除非說(shuō)你的正則表達式還得依據頁(yè)面的某個(gè)參數或則內容不同而更改,那這個(gè)情況還是相對特殊了一點(diǎn)···
  翻頁(yè)的解決,如果是GET就用爬蟲(chóng),如果是POST,那么直接for循環(huán)之后調用curl會(huì )更好。
  
 ??;;;
  好像不錯
  
 ??;;;
  能不能寫(xiě)個(gè)DOM選擇器和技巧的文檔,最好支持css選擇DOM標簽,有子節點(diǎn),父節點(diǎn),兄弟節點(diǎn)選擇才好
  
  fanfank 文章作者
  在這個(gè)項目的github頁(yè)面:,中文說(shuō)明的第2節上面,有介紹dom選擇器的文檔
  
  jeremy
  博主。。為什么https的頁(yè)面沒(méi)辦法懇求呢? 查看全部

  報dom為空
  
  fanfank 文章作者
  完整的代碼貼下來(lái)我看一下,或者在微博私信我,我幫你看一下
  
  aa
  //下面兩行促使這個(gè)項目被下載出來(lái)后本文件能直接運行
  $demo_include_path = dirname(__FILE__) . ‘/../’;
  set_include_path(get_include_path() . PATH_SEPARATOR . $demo_include_path);
  require_once(‘phpfetcher.php’);
  class mycrawler extends Phpfetcher_Crawler_Default {
  public function handlePage($page) {
  var_dump($page);
  //打印處當前頁(yè)面的第1個(gè)h1標題內榮(下標從0開(kāi)始)
  $strFirstH1 = trim($page->sel(‘//title’, 0)->plaintext);
  if (!empty($strFirstH1)) {
  echo $page->sel(‘//title’, 0)->plaintext;
  echo “\n”;
  }
  }
  }
  $crawler = new mycrawler();
  $arrJobs = array(
  //任務(wù)的名子隨意起,這里把名子叫qqnews
  //the key is the name of a job, here names it qqnews
  ‘qqnews’ => array(
  ‘start_page’ => ‘#8217;, //起始網(wǎng)頁(yè)
  ‘link_rules’ => array(
  /*
  * 所有在這里列舉的正則規則,只要能匹配到超鏈接,那么那條爬蟲(chóng)才會(huì )爬到那條超鏈接
  * Regex rules are listed here, the crawler will follow any hyperlinks once the regex matches
  */
  //’#news\.qq\.com/a/\d+/\d+\.htm$#’,
  ),
  //爬蟲(chóng)從開(kāi)始頁(yè)面算起,最多爬取的深度,設置為2表示爬取深度為1
  //Crawler’s max following depth, 1 stands for only crawl the start page
  ‘max_depth’ => 1,
  ) ,
  );
  $crawler->setFetchJobs($arrJobs)->run(); //這一行的療效和下邊兩行的療效一樣
  其他的沒(méi)變
  
  aa
  public function read() {
  $this->_strContent = curl_exec($this->_curlHandle);
  是_strContent取到了false造成的 這個(gè)是啥緣由呢Page default.php
  
  fanfank 文章作者
  我這兒返回的是403 forbidden,查了一下曉得緣由了,因為user_agent的問(wèn)題csdn把爬蟲(chóng)給禁了。你可以這樣更改:找到文件Phpfetcher/Page/Default.php,然后搜『user_agent』,把上面改掉,我改成『firefox』就可以了,當然你可以可以改得更真實(shí)一點(diǎn),例如哪些『Mozilla/5.0 AppleWebKit』之類(lèi)的
  有些網(wǎng)站會(huì )依照UA來(lái)屏蔽懇求,可能是因為個(gè)別UA有惡意功擊的特點(diǎn),或者一些爬蟲(chóng)之類(lèi)的開(kāi)源爬蟲(chóng)框架,之前百度有一段時(shí)間屏蔽360瀏覽器就是通過(guò)360瀏覽器里一些特定的UA來(lái)做到的,當然后來(lái)360瀏覽器把UA給更改嗯,就須要依照其它特點(diǎn)屏蔽了。
  所以你這兒先改一下user_agent吧。
  
  aa
  多謝哈
  試著(zhù)改成Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0 也不行呢
  試了這兒的也不行 恐怕還是curl的問(wèn)題
  
  fanfank 文章作者
  我這兒執行都是正常的,結果也能下來(lái)。還是通過(guò)微博私信說(shuō)吧,這里說(shuō)得刷屏了
  
  aa
  圍脖id是?
  
  fanfank 文章作者
  另外是,你貼的代碼上面,標點(diǎn)符號不對啊,你的start_page對應那一行的標點(diǎn),怎么是英文的單冒號?后面的單冒號似乎也不是個(gè)單冒號吧?要全部用英語(yǔ)的單冒號才行。
  
  aa
  符號是對的哈 都是英語(yǔ)的 沒(méi)句型錯誤
  
  joke
  為什么匹配的內容都一樣?
  代碼:
  sel(‘//span[@id=”text110″]’, 0)->plaintext);
  if (!empty($strFirstH1)) {
  echo “”;
  echo $page->sel(‘//span[@id=”text110″]’, 0)->plaintext;
  echo “”;
  echo “\n”;
  }
  }
  }
  $crawler = new mycrawler();
  $arrJobs = array(
  ‘joke’ => array(
  ‘start_page’ => ‘#8217;,
  ‘link_rules’ => array(
  ‘#/\woke\wtml/\w+/20151021\d+\.htm$#’,
  ),
  ‘max_depth’ => 2,
  ) ,
  );
  $crawler->setFetchJobs($arrJobs)->run();
  
  fanfank 文章作者
  你的代碼沒(méi)貼全,而且匹配的內容都一樣我沒(méi)很理解是哪些意思,這個(gè)問(wèn)題有點(diǎn)長(cháng),你直接在微博私信我,我幫你看一下
  
  fanfank 文章作者
  已經(jīng)修補了。之前的問(wèn)題是爬蟲(chóng)不認識站內鏈接,例如有的超鏈接是『/entry』這樣的,而不是『』?,F在最新的Phpfetcher早已就能辨識站內鏈接,可以試一下
  
  joke
  謝謝 ,搞定了
  
  modejun
  樓主您好,問(wèn)問(wèn)假如我曉得了一個(gè)網(wǎng)站開(kāi)源爬蟲(chóng)框架,但是要遞交post參數,這個(gè)要如何弄呢,朋友提供一下思路
  
  fanfank 文章作者
  提交post參數,那覺(jué)得場(chǎng)景很特殊的,因為這個(gè)就不是單純地按照鏈接爬取網(wǎng)頁(yè)內容了,而且假如真的提供這個(gè)功能,針對什么樣的鏈接什么樣的參數,怎么遞交,然后返回的內容是如何處理這種,目前我覺(jué)得似乎不太適宜爬蟲(chóng)做?;蛘吣阍谖⒉┧叫盼?,告訴我你的使用場(chǎng)景是哪些,我瞧瞧是不是考慮找時(shí)間加進(jìn)去
  
  modejun
  場(chǎng)景就是有一翻頁(yè)時(shí)用ajax post遞交的page參數,如果是get就太easy。還有順便問(wèn)問(wèn),如果翻頁(yè)我明天試了要解決的話(huà)就是調節深度,但是似乎最大是20,還有就是更改正則循環(huán)調用setFetchJobs這個(gè)方式,總是覺(jué)得不是這么完美,有哪些好的思路解決翻頁(yè)這個(gè)問(wèn)題嗎,現在公司在定方案我想多了解把這個(gè)框架的優(yōu)勢發(fā)揮下來(lái),感謝了。
  
  fanfank 文章作者
  如果像你說(shuō)的是個(gè)post懇求,那么它返回的應當不是一個(gè)HTML格式的文檔,通常都是json格式的,然后由當前頁(yè)面將異步返回的內容加載顯示下來(lái)。
  你們的post懇求應當是有類(lèi)似pn,rn等參數,如果大家僅僅是想領(lǐng)到post懇求的所有內容,可以直接寫(xiě)一個(gè)for循環(huán),然后使用php的curl來(lái)直接發(fā)送post懇求獲取每一個(gè)頁(yè)面內容,可以不使用爬蟲(chóng),因為這個(gè)爬蟲(chóng)基本原理是針對GET懇求返回的HTML頁(yè)面的,然后手動(dòng)抽取HTML的標簽
  最大深度可以更改類(lèi)『Phpfetcher_Crawler_Default』中的『MAX_DEPTH』變量,把20改成-1就沒(méi)有限制了,不過(guò)建議還是設一個(gè)上限比較好
  可以不需要循環(huán)更改正則呀,設置正則規則的可以是一個(gè)鏈表,把上面的所有你認為合適的正則都列上就可以,除非說(shuō)你的正則表達式還得依據頁(yè)面的某個(gè)參數或則內容不同而更改,那這個(gè)情況還是相對特殊了一點(diǎn)···
  翻頁(yè)的解決,如果是GET就用爬蟲(chóng),如果是POST,那么直接for循環(huán)之后調用curl會(huì )更好。
  
 ??;;;
  好像不錯
  
 ??;;;
  能不能寫(xiě)個(gè)DOM選擇器和技巧的文檔,最好支持css選擇DOM標簽,有子節點(diǎn),父節點(diǎn),兄弟節點(diǎn)選擇才好
  
  fanfank 文章作者
  在這個(gè)項目的github頁(yè)面:,中文說(shuō)明的第2節上面,有介紹dom選擇器的文檔
  
  jeremy
  博主。。為什么https的頁(yè)面沒(méi)辦法懇求呢?

phpspider: 《我用爬蟲(chóng)三天時(shí)間“偷了”知乎一百萬(wàn)用戶(hù)

采集交流 ? 優(yōu)采云 發(fā)表了文章 ? 0 個(gè)評論 ? 461 次瀏覽 ? 2020-05-20 08:01 ? 來(lái)自相關(guān)話(huà)題

  《我用爬蟲(chóng)三天時(shí)間“偷了”知乎一百萬(wàn)用戶(hù),只為證明PHP是世界上最好的語(yǔ)言 》所使用的程序
  phpspider是一個(gè)爬蟲(chóng)開(kāi)發(fā)框架。使用本框架爬蟲(chóng)技術(shù)用什么語(yǔ)言,你不用了解爬蟲(chóng)的底層技術(shù)實(shí)現,爬蟲(chóng)被網(wǎng)站屏蔽、有些網(wǎng)站需要登入或驗證碼識別才會(huì )爬取等問(wèn)題。簡(jiǎn)單幾行PHP代碼,就可以創(chuàng )建自己的爬蟲(chóng),利用框架封裝的多進(jìn)程Worker解釋器,代碼更簡(jiǎn)練,執行效率更高速率更快。
  demo目錄下有一些特定網(wǎng)站的爬取規則,只要你安裝了PHP環(huán)境,代碼就可以在命令行下直接跑。 對爬蟲(chóng)感興趣的開(kāi)發(fā)者可以加QQ群一起討論:147824717。
  下面以糗事百科為例, 來(lái)看一下我們的爬蟲(chóng)長(cháng)哪些樣子:
  $configs = array(
 'name' => '糗事百科',
 'domains' => array(
 'qiushibaike.com',
 'www.qiushibaike.com'
 ),
 'scan_urls' => array(
 'http://www.qiushibaike.com/'
 ),
 'content_url_regexes' => array(
 "http://www.qiushibaike.com/article/\d+"
 ),
 'list_url_regexes' => array(
 "http://www.qiushibaike.com/8hr/page/\d+\?s=\d+"
 ),
 'fields' => array(
 array(
 // 抽取內容頁(yè)的文章內容
 'name' => "article_content",
 'selector' => "//*[@id='single-next-link']",
 'required' => true
 ),
 array(
 // 抽取內容頁(yè)的文章作者
 'name' => "article_author",
 'selector' => "//div[contains(@class,'author')]//h2",
 'required' => true
 ),
 ),
);
$spider = new phpspider($configs);
$spider->start();
  爬蟲(chóng)的整體框架就是這樣, 首先定義了一個(gè)$configs鏈表, 里面設置了待爬網(wǎng)站的一些信息, 然后通過(guò)調用$spider = new phpspider($configs);和$spider->start();來(lái)配置并啟動(dòng)爬蟲(chóng).
  
  更多詳盡內容爬蟲(chóng)技術(shù)用什么語(yǔ)言,移步到:
  開(kāi)發(fā)文檔 查看全部

  《我用爬蟲(chóng)三天時(shí)間“偷了”知乎一百萬(wàn)用戶(hù),只為證明PHP是世界上最好的語(yǔ)言 》所使用的程序
  phpspider是一個(gè)爬蟲(chóng)開(kāi)發(fā)框架。使用本框架爬蟲(chóng)技術(shù)用什么語(yǔ)言,你不用了解爬蟲(chóng)的底層技術(shù)實(shí)現,爬蟲(chóng)被網(wǎng)站屏蔽、有些網(wǎng)站需要登入或驗證碼識別才會(huì )爬取等問(wèn)題。簡(jiǎn)單幾行PHP代碼,就可以創(chuàng )建自己的爬蟲(chóng),利用框架封裝的多進(jìn)程Worker解釋器,代碼更簡(jiǎn)練,執行效率更高速率更快。
  demo目錄下有一些特定網(wǎng)站的爬取規則,只要你安裝了PHP環(huán)境,代碼就可以在命令行下直接跑。 對爬蟲(chóng)感興趣的開(kāi)發(fā)者可以加QQ群一起討論:147824717。
  下面以糗事百科為例, 來(lái)看一下我們的爬蟲(chóng)長(cháng)哪些樣子:
  $configs = array(
 'name' => '糗事百科',
 'domains' => array(
 'qiushibaike.com',
 'www.qiushibaike.com'
 ),
 'scan_urls' => array(
 'http://www.qiushibaike.com/'
 ),
 'content_url_regexes' => array(
 "http://www.qiushibaike.com/article/\d+"
 ),
 'list_url_regexes' => array(
 "http://www.qiushibaike.com/8hr/page/\d+\?s=\d+"
 ),
 'fields' => array(
 array(
 // 抽取內容頁(yè)的文章內容
 'name' => "article_content",
 'selector' => "//*[@id='single-next-link']",
 'required' => true
 ),
 array(
 // 抽取內容頁(yè)的文章作者
 'name' => "article_author",
 'selector' => "//div[contains(@class,'author')]//h2",
 'required' => true
 ),
 ),
);
$spider = new phpspider($configs);
$spider->start();
  爬蟲(chóng)的整體框架就是這樣, 首先定義了一個(gè)$configs鏈表, 里面設置了待爬網(wǎng)站的一些信息, 然后通過(guò)調用$spider = new phpspider($configs);和$spider->start();來(lái)配置并啟動(dòng)爬蟲(chóng).
  
  更多詳盡內容爬蟲(chóng)技術(shù)用什么語(yǔ)言,移步到:
  開(kāi)發(fā)文檔

官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久