0

PHP 内から、特定の href の URL を名前/説明テキストだけで取得するにはどうすればよいですか? たとえば、「サイト マップ」という文字列を検索して、Apple のメイン ページからサイト マップへの URL を取得するにはどうすればよいですか?

したがって、開始時には、クロールしたいサイト (www.apple.com など) と関心のある URL 記述子 (「サイト マップ」など) しかわかりません。ソリューションの正しい出力は次のようになります: http://www.apple.com/sitemap/

これを解決する方法についてのアイデアは大歓迎です。

4

2 に答える 2

0

別の回答に否定的なコメントをした後、私は自分自身の回答を提案したくありませんが、この質問は多くの人にとって関心が低いように見えます.

HTML では、URL は次のようになることがよくあります。

<a href="http://www.apple.com/sitemap/" >http://www.apple.com/sitemap/</a>

したがって、必要なのはhrefurl のタグの属性です。

これを行うにはさまざまな方法があり、それは一種の学術的なものであるため、他の人が回答を投稿していない可能性があります.

ページを解析するには、DOM 解析ライブラリが最適です。これは、多くのオプションをリストした良い答えです。それらのいくつかを研究してください。

個人的には、XPath ベースの DOM 解析ライブラリを使用するのが好きで、標準の php にあらかじめパッケージ化されている DOMDocument ライブラリを頻繁に使用します。

W3Schools には、かなり優れた XPath チュートリアルがあります。

于 2013-08-19T20:22:14.953 に答える
0

多分正規表現で?

$url = 'http://www.apple.de';
$name = 'Site Map';
$content = file_get_contents($url);
if(preg_match('/<\s*a[^>]*href\s*=\s*("([^"]+)"|\'([^\']+)\')[^>]*>.*?'.$name.'.*?<\s*\/\s*a\s*>/i',$content,$matches))
     print_r($matches);
于 2013-08-19T14:55:49.363 に答える