用通配符和php刮

wil*_*ium 6 javascript php jquery parsing screen-scraping

嘿伙计们,我很难想象并想到要刮掉这个页面: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 />
Run Code Online (Sandbox Code Playgroud)

有几种方法我一直在考虑这样做,如果你能帮助我决定最有效的方法,我会很感激.此外,我很欣赏任何有关如何实现这一目标的建议或示例.我知道它不是非常复杂,但我可以使用你的高级黑客的帮助.

  • 使用某种jquery $ .each()循环并以某种方式将它们放入JS数组中,然后转录(可能非常繁重)
  • 使用某种卷曲(对卷曲没有太多经验)
  • 使用一些复杂的查找并替换为正则表达式.

ale*_*lex 3

您将其标记为 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

键盘

如果allow_url_fopen在 中禁用php.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);   
Run Code Online (Sandbox Code Playgroud)