DomCrawler无法解析html页面(当前节点列表为空)

时间:2018-10-02 20:39:26

标签: web-crawler bolt-cms goutte domcrawler

我在螺栓cms上使用domcrawler,试图用表数据解析一些HTML页面。但是我遇到了一个问题:当前节点列表为空。 因此,首先我登录到该网页的帐户:

$crawler = $client->request('GET', $mainURL);
$form = $crawler->selectButton('Войти')->form();
$crawler = $client->submit($form, array('login' => 'some_login', 'password' => 'some_password'));

然后,我得到另一个带有表单的页面,在这里我可以得到另一部分相关数据:

$crawler = $client->request('GET', 'https://www.nlstar.com/ru/office4/business/structure/');
$form = $crawler->selectButton('form-submit')->form();
$crawler = $client->submit($form);

之后,新页面应加载爬虫应使用过滤器表达式解析的数据:

$crawler->filter('#downline tbody tr')->each(function ($node) use ($fieldsIdxs, $accountsRepo, $statsRepo) {

但实际上,它到此结束。 如果我添加一些调试信息,例如:

var_dump($client->getResponse()->getContent());
echo $crawler->html();

在1个请求上,它将显示所有数据,例如(我需要的数据,但我需要在html页面中,而不是字符串中):

string(615980) "{"num_pages":1,"count":776,"page":1,"downline":[{"qualification":"M","fatmoney":false,"start_in_this_month":false,"year":2018,"period":"Октябрь 2018","qualification_idx":

在2个请求上将显示错误:

The exception returned was:
The current node list is empty.
Backtrace:
#0 /path_to_file/MainExtension.php(343):
Symfony\Component\DomCrawler\Crawler->html()

首先,我检查了搜寻器应该解析的页面-该页面正常,所有数据都就位,下线tbody和tr-存在。 其次,我将链接从具有格式https://www.nlstar.com/ru/office4/business/structure/的链接更改为直接链接https://www.nlstar.com/ru/office4/business/structure/?period_ ...-在1个请求上出现相同的错误和相同的数据。

所以我主要不了解发生了什么,以及为什么搜寻器无法用表数据解析页面。谁可以帮助我解决这个问题?

0 个答案:

没有答案