PHPのWebスクラップングをうまくしようとしています。いくつかのテストをして、あるサイトから別のサイトにその情報をスクラップしたりエコーしたりしましたが、元のリンクをソースコードに含めることができません。これは理想的です。私が持っているものでこれを達成する方法についてのどんな考えも、これまでに見ていますか? (私は非常にpht btwに新しいです)。xpathテキストに含まれる任意のhrefリンクを含むPHP
これはPHPのコードです:
// news
$doc = new DOMDocument;
// We don't want to bother with white spaces
$doc->preserveWhiteSpace = false;
// Most HTML Developers are chimps and produce invalid markup...
$doc->strictErrorChecking = false;
$doc->recover = true;
$doc->loadHTMLFile('https://www.usatoday.com/');
$xpath = new DOMXPath($doc);
$query = "//ul[@class='hfwmm-list hfwmm-4uphp-list hfwmm-light-list']";
$entries = $xpath->query($query);
foreach ($entries as $entry) {
echo trim($entry->textContent); // use `trim` to eliminate spaces
}
そのコードがこれを吐き出している:NBA CAVSはアーヴィングの40のエンターテインこの時計の後ろに記録破りのゲーム4に勝つ:「ブラックパンサー」のトレーラーが恐ろしい王ニュース警察を最大限に引き出します:ロンドン橋のテロリストはもっと血を流すように計画されています..........
私は本当にやりたいことは、実際には働いているリンク元のコードで。これが、この情報のソースコードは次のように見えたものです:正気のために
<div class="partner-heroflip-ad partner-placement ui-flip-panel size-xxs"><a
href="#" class="partner-close"></a></div></div><p class="hfwmm-tertiary-
list-title hfwmm-light-tertiary-list-title">TOP STORIES</p><ul class="hfwmm-
list hfwmm-4uphp-list hfwmm-light-list"
data-track-prefix="flex4uphphero"><li class="hfwmm-item hfwmm-secondary-item
hfwmm-item-2 sports-theme-bg hfwmm-first-secondary-item hfwmm-4uphp-
secondary-item"
data-asset-position="1"
data-asset-id="102694848"
><a class="js-asset-link hfwmm-list-link hfwmm-light-list-link hfwmm-image-
link hfwmm-secondary-link
href="/story/sports/nba/2017/06/10/kyrie-irving-lebron-james-cavs-win-game-
4/102694848/"
data-track-display-type="thumb"
data-ht="flex4uphpherostack1"
data-asset-id="102694848"
><span class="hfwmm-image-gradient hfwmm-secondary-image-gradient"></span>
<span class="js-asset-section theme-bg-ssts-label hfwmm-ssts-label-top-left
hfwmm-ssts-label-secondary sports-theme-bg">NBA</span><img
src="https://www.gannett-cdn.com/-
mm-/cd17823b265aa373c83094fc75525710f645ec90/c=0-178-4072-
81338209183-USP-NBA-FINALS-GOLDEN-STATE-WARRIORS-AT-CLEVELAND-91573076.JPG"
class="hfwmm-image hfwmm-secondary-image js-asset-image placeholder-hide"
alt="Kyrie Irving reacts after making a basket against the"
data-id="102695338"
data-crop="16_9"
width="239"
height="135" /><span class="hfwmm-secondary-hed-wrap hfwmm-secondary-text-
hed-wrap"><span class="hfwmm-text-hed-icon js-asset-disposable"></span><span
title="Cavs win record-breaking Game 4 behind Irving's 40"
class="js-asset-headline hfwmm-list-hed hfwmm-secondary-hed placeholder-
hide">
Cavs win record-breaking Game 4 behind Irving's 40
hfwmm-item-3 life-theme-bg hfwmm-4uphp-secondary-item"
data-asset-position="2"
、上記のhrefはhrefのある= "/物語/スポーツ/ NBA/2017/6月10日/キリエアーヴィング - レブロン・james- cavs-win-game- 4/102694848/"
このテストシナリオでこれがどのように達成されるかについてのご意見は、大変参考になります。どうもありがとうございました。 -wilson
を使用し、そのためのおかげでそんなに!スーパーヘルプ!それらをリンクとして表示します。私はあなたが変更する方法を知っているかと思いますが、かなり理想的ではない2つの事柄。リンクは実際には正しい参照には向いていませんが、実際にはどこにも実際には行きません。 2つ目のことは、実際にリンクの隣に表示される画像が現実的ではないことです。しかしもう一度ありがとう。 – Masteryogurt
@Masteryogurtこのタグには、hrefだけが必要な場合は、あらゆる種類の余分なものが含まれています。そして、XPathを '$ query =" // ul [@ class = 'hfwmm-list hfwmm-4uphp-list hfwmm-light-list '] // a/@ href ";'そしてあなたのループは 'echo trim($ entry-> value)'を使用します" \ n ";' –
ナイジェルは、最初に提供したコードは、リンクが機能します。問題は自分のサーバーがそのWebサイトのルート参照を表示していないことです。言い換えれば、リンクは私を_____ /物語/ 12538に連れて行っています。同様に壊れたリンクとして表示されます。私のサーバーがrootとしてusatoday.comになっていたら、そのリンクが機能します。私は別のルートサーバーを持っている場合、そのリンクを動作させるにはどうすればいいですか?それの前にusatoday.comを注入するようなカスタム方法?興味深い状況。 – Masteryogurt