使用通配符和php进行抓取

Scrape with wildcards and php

本文关键字:抓取 php 通配符      更新时间:2023-09-26

我很难想象和构思刮掉这个页面:http://www.morewords.com/ends-with/aw为单词本身。给定一个URL,我想获取内容,然后生成一个php数组,其中包含列出的所有单词,在源代码中看起来像

<a href="/word/word1/">word1</a><br />
<a href="/word/word2/">word2</a><br />
<a href="/word/word3/">word3</a><br />
<a href="/word/word4/">word4</a><br />
我一直在考虑用几种方法来做这件事,如果你能帮我决定最有效的方法,我将不胜感激。此外,我很感激任何关于如何实现这一目标的建议或例子。我知道这不是非常复杂,但我可以利用你们这些高级黑客的帮助。
  • 使用某种jquery $.each()来循环并以某种方式将它们放入JS数组,然后转录(可能很费力)
  • 使用一些卷曲(没有太多的卷曲经验)
  • 使用一些复杂的查找和替换正则表达式。

您将其标记为PHP,因此这里是PHP解决方案:)

$dom = new DOMDocument;
$dom->loadHTMLFile('http://www.morewords.com/ends-with/aw');
$anchors = $dom->getElementsByTagName('a');
$words = array();
foreach($anchors as $anchor) {
    if ($anchor->hasAttribute('href') AND preg_match('~/word/'w+/~', $anchor->getAttribute('href'))) {
        $words[] = $anchor->nodeValue;
    }
}

CodePad .

如果allow_url_fopenphp.ini中被禁用,您可以使用cURL获取HTML。

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://www.morewords.com/ends-with/aw'); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$html = curl_exec($curl);    
curl_close($curl);