亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 php-spider,是否有一個標準的 Xpath 可以發現大多數網站上的 URI?

使用 php-spider,是否有一個標準的 Xpath 可以發現大多數網站上的 URI?

PHP
慕婉清6462132 2022-12-23 13:18:30
我正在使用名為php-spider的精彩腳本,目的是從一些網站上抓取標題、描述、H1、H2、H3 和 H4。作為配置腳本的一部分,有必要設置一個“XpathExpressionDiscoverer”來指示腳本如何在每個頁面上找到額外的超鏈接以進行抓取。我假設這是指標準的 Xpath 查詢語言。我的目標是找到一個通常適用于大多數網站的 XpathExpressionDiscoverer(而不是要求我為每個站點自定義它)。這是我嘗試過的:我注意到作者提供的示例使用非常具體的 XpathExpressionDiscoverer 來抓取給定的示例站點:// The URI we want to start crawling with$seed = 'http://dmoztools.net/Computers/Internet/';// We add an URI discoverer. Without it, the spider wouldn't get past the seed resource.$spider->getDiscovererSet()->set(new XPathExpressionDiscoverer("//*[@id='cat-list-content-2']/div/a"));由于我的目標只是發現頁面上的任何超鏈接,因此我嘗試將 XPath 擴展為更通用的內容(“//a”),如下所示:// We add an URI discoverer. Without it, the spider wouldn't get past the seed resource.$spider->getDiscovererSet()->set(new XPathExpressionDiscoverer("//a"));雖然這個新的 Xpath 成功地抓取了示例站點 (dmoztools.net),但它似乎不適用于我嘗試的其他示例(如下)。它只是抓取種子頁面,但無法發現或抓取頁面上的其他 URI(即使它們具有應與 Xpath 匹配的 A HREF 標記)。示例 A:https ://www.petco.com/shop/en/petcostore/category/fish示例 B:https ://www.thetruthaboutcars.com/你碰巧看到我要去哪里錯了嗎?謝謝!
查看完整描述

1 回答

?
慕后森

TA貢獻1802條經驗 獲得超5個贊

示例代碼包含這一行:

$spider->getDiscovererSet()->addFilter(new AllowedSchemeFilter(array('http')));

那應該是:

$spider->getDiscovererSet()->addFilter(new AllowedSchemeFilter(array('http', 'https')));

請注意添加https作為允許的模式。沒有它,只http允許帶有架構的 URL,并且您作為示例給出的網站是https.

順便說一句,當我對此進行測試時,我發現了一個錯誤,其中沒有路徑和尾部斜杠的 URL 有時會導致失敗。我在 0.4.4 版中添加了針對該錯誤的修復程序。請升級。


查看完整回答
反對 回復 2022-12-23
  • 1 回答
  • 0 關注
  • 92 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號