Symfony GuzzleHttp Crawler не может найти все элементы на странице - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь получить данные со страницы продукта Amazon. Но поиск цены всегда приводит к The current node list is empty.. Другие элементы, такие как заголовок, присутствуют в результате.

            $jar = new CookieJar();
            $url = "https://www.amazon.com/Simple-Mobile-Prepaid-Midnight-Carrier/dp/B07XSQT4Q3";
            $client = new Client([
                'cookies' => $jar,
                'headers' => [
                    'Host' => 'www.amazon.com',
                    'User-Agent' => 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.90 Safari/537.3',
                    'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
                    'Accept-Language' => 'en-US,en;q=0.5',
                    'Accept-Encoding' => 'gzip, deflate, br',
                    'Connection' => 'keep-alive',
                    'Upgrade-Insecure-Requests' => '1',
                    'Cache-Control' => 'max-age=0',
                    'TE' => 'Trailers',
                ],
            ]);

$response = $client->request('GET', $url);
$crawler = new Crawler($response->getBody()->getContents());
$title = $crawler->filter('#productTitle')->text('Product Title couldn\'t be extracted', true);
$price = $crawler->filter('#priceblock_ourprice')->text('Product Price couldn\'t be extracted', true);

При попытке выполнить этот запрос с почтальоном, цена присутствует.

1 Ответ

0 голосов
/ 07 мая 2020

Проблема заключалась в том, что цена не всегда присутствовала на странице, зависит от вашего местоположения, после обновления до Symfony 4.4 проблема была решена и она начала возвращать Product Price couldn\'t be extracted вместо сбоя.

...