1

尝试编写一个脚本,从 txt 中获取一行(行是 url),转到 url,搜索并获取特定数据。抓取数据有效,但我需要多次这样做。这是查找和获取代码段,它工作正常。

    include(dom.txt);
    $html = file_get_html('url here');
    foreach($html->find('a.live') as $e)
    echo (''.$e->innertext.'<br />');

这是我到目前为止所做的,但我收到一个错误“警告:file_get_contents(Array)”

    <?php
    include ("dom.php");
    $file = fopen("urls.txt", "r");
    $i = 0;
    while (!feof($file)) {
    $line[] = fgets($file);
    }
    fclose($file);
    foreach ($line as $x){
    $html = file_get_html("$line");
    foreach($html->find('a.live') as $e)
    echo (''.$e->innertext.'<br />');
    }
    ?>

有人可以帮忙吗?:(

编辑更改 $html = file_get_html("$line"); $html = file_get_html("$x"); 但仍然出现错误

编辑 2 脚本有效,但我认为它会覆盖结果并且只显示最后一个结果

4

3 回答 3

2

您将数组传递给仅接受字符串$line的函数。file_get_html

您确实将 foreach 循环设置为遍历数组。改为使用file_get_html($x)

于 2013-05-12T09:47:39.667 回答
1

这一行:

$html = file_get_html("$line");

应该是:

$html = file_get_html("$x");

正如mastergalen 指出的那样,没有理由将$x引号括起来。它不会为您带来任何好处,只会为口译员增加更多工作。

还值得注意的是,fgets将在返回值中包含一个换行符,您可能需要在处理它之前从 url 中修剪它。

于 2013-05-12T09:47:28.643 回答
-1

您可以使用file()将文件路径作为参数并返回行数组的函数。

 <?php
 $aLines = file('/path/to/file');

 foreach( ( is_array( $aLines) ? $aLines : array() ) as $sLine )
 {
      // do what you have to do
      $html = file_get_html($sLine);
      foreach($html->find('a.live') as $e)
           echo (''.$e->innertext.'<br />');
 }
 ?>
于 2013-05-12T09:48:50.930 回答