我正在尝试使用 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 页面上所有标签的良好数组,然后过滤它们?
像text()一样,innerText()默认也会修剪空白字符, 但您可以通过传递 FALSE 作为参数来获取未更改的文本 $text = $crawler->filtrXPath('//body/p')->innerText(false);