爬虫在windows下返回数据是CR LF,但在linux下不行

问题描述 投票:0回答:1

我正在尝试使用 symfony 爬虫链接从网站上的标签获取数据。

foreach ($tables as $table) {
    $response = $this->client->get($url, [
            'http_errors' => false,
    ]);

    $body = $response->getBody()->getContents();
    $crawler = new crawler($body);
    $version = $crawler->filter('tr > td');

    $i = 1;
    while (true) {
        if (something) {
            break;
        }
        $tableVersions[$table] = preg_split('/\r\n|\r|\n/', $version->eq($i + 1)->text());
        $i++;
    }
}
return $tableVersions;

在 Windows 中这是可行的,preg_split 很好地分割了我想要分割的单词并将它们分别放入一个数组中。
当我在 Windows 中打印出

$version->eq($i + 1)->text()
时,它看起来像这样:

word1
word2
word3

在Linux中,它只是将所有没有任何分隔符的字符串放入数组的第一个元素中,如下所示。

word1word2word3

这是完全相同的代码。 所以我猜测在 Windows 中爬虫会返回新的换行符,而在 Linux 中则不会?那么我应该如何获取 html 页面上所有标签的良好数组,然后过滤它们?

php symfony web-crawler newline domcrawler
1个回答
0
投票

像text()一样,innerText()默认也会修剪空白字符, 但您可以通过传递 FALSE 作为参数来获取未更改的文本 $text = $crawler->filtrXPath('//body/p')->innerText(false);

https://symfony.com/doc/current/components/dom_crawler.html

© www.soinside.com 2019 - 2024. All rights reserved.