Я пытаюсь следовать некоторому коду в главе 11 «Автоматизация скучных вещей с помощью Python».Однако одна из программ lucky.py, похоже, не работает для меня.Предполагается, что программа получит страницу поиска Google по определенной теме с помощью модуля запросов, а затем откроет первые 5 результатов поиска в разных вкладках.Когда я смотрю на Devtools в Chrome для страницы поиска, мне становится совершенно ясно, что каждая ссылка на результат поиска (тег <a>
) находится внутри элемента div с классом «r».Однако, когда я запрашиваю страницу, отправляю загруженный HTML в файл .txt и просматриваю его, я обнаруживаю, что коды для ссылки на результат поиска совершенно разные.Почему они разные?Разве не цель devtools в том, чтобы быстро проверить HTML-код определенного элемента на веб-странице, не просматривая весь исходный код?
Раньше я пытался soup.select('.r a')
работатьпотому что каждая страница поиска имела ссылки на результаты поиска в div с классом 'r'.Это не сработало.Возвращенный список всегда был пустым.Поэтому для устранения неполадок я отправил запрошенную страницу в файл и нашел, где были ссылки.Все ссылки в текстовом файле приводят к ошибке 404.Я не знаю, что происходит.
Код Devtools:
<div class="r">
<a href="https://www.crummy.com/software/BeautifulSoup/bs4/doc/" ping="/urlsa=t&source=web&rct=j&url=https://www.crummy.com/software/BeautifulSoup/bs4/doc/&ved=2ahUKEwjj1vTx3NXiAhVPinAKHersDyoQFjAAegQIAhAB"><h3 class="LC20lb">Beautiful Soup Documentation — Beautiful Soup 4.4.0 documentation</h3><br><div class="TbwUpd"><cite class="iUh30">https://www.crummy.com/software/BeautifulSoup/bs4/doc/</cite>
Теперь я нашел ссылку на запрашиваемой странице:
<div class="jfp3ef">
<a href="/urlq=https://www.crummy.com/software/BeautifulSoup/bs4/doc/&sa=U&ved=2ahUKEwjMjPST2tXiAhU463MBHWjMA0UQFjAAegQIChAB&usg=AOvVaw05aFh5uUJ_Z2oREgu8fzfA">
Этокод, который я использовал для получения страницы:
res = requests.get('https://www.google.com/search?q=' + ' '.join(['beautiful', 'soup'])
bs = open('soup.txt', 'wb')
for chunk in res.iter_content(100000):
bs.write(chunk)