Выбор первой ссылки в поиске Google - PullRequest
0 голосов
/ 15 марта 2019

Когда я проверяю веб-сайт (поиск в Google), я могу выбрать желаемый href, выполнив поиск этого //div[@class="r"]/a/@href через поиск.Но при использовании scrapy и доступе по response.xpath('//div[@class="r"]/a/@href') он вернется пустым.Многие другие Xpath, такие как название ссылки, также будут пустыми.Как ни странно, я могу получить что-то, когда использую response.xpath('//cite').get(), что в основном нереально, но не полностью.

Если я сделаю response.body, я смогу увидеть мой желаемый href глубоко в коде, но я не знаю, как получить к нему доступ.Попытка выбрать его с помощью традиционных методов css или xpath, которые работали бы на любом другом веб-сайте, была тщетной.

Ответы [ 2 ]

2 голосов
/ 15 марта 2019

Причина, по которой используемый вами xpath работает в вашем браузере, а не в ответе, заключается в том, что Google отображает страницу по-разному, если JS отключен, что имеет место для scrapy, но не для вашего браузера, поэтому вам необходимоиспользуйте XPath, который будет работать для обоих или только для первого случая.

Этот вариант работает без JS, но не будет работать в браузере (если JS включен):

//div[@id='ires']//h3/a[1]/@href

Это вернет первый URL первого результата.

0 голосов
/ 15 марта 2019

Попробуйте ниже.

response.xpath("//div[@class='r']").xpath("//a/@href").extract()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...