Содержание: вступление, импорт, то, что будет скранировано, процесс, код, ссылки, outro.
вступление
Этот блог POST – это продолжение серии Scraping сети Google. Здесь вы увидите, как соскрести Google Top Stories из результатов органического поиска, используя Python с BeautifulSoup
, Запросы
библиотеки. Будет показано альтернативное решение API.
Импорт
from bs4 import BeautifulSoup import requests, lxml from serpapi import GoogleSearch
Что будет соскреблено
Процесс
Выбор контейнер , Опубликованная дата , Название CSS
селекторы.
Выбор ссылка CSS
селектор.
Код
from bs4 import BeautifulSoup import requests, lxml headers = { 'User-agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.19582" } params = { 'q': 'john cena', 'hl': 'en', 'gl': 'us', } html = requests.get('https://www.google.com/search?q=', headers=headers, params=params).text soup = BeautifulSoup(html, 'lxml') for result in soup.select('.yLWA8b'): title = result.select_one('.nDgy9d').text.replace('\n', '') link = result.select_one('.WlydOe')['href'] published_date = result.select_one('.ecEXdc span').text print(f'{title}\n{link}\n{published_date}\n') ---------------- ''' Nikki Bella's Reported Response to John Cena's New Attitude on Having Kids Is All Class https://www.yahoo.com/entertainment/nikki-bellas-reported-response-john-194941780.html 2 days ago When will John Cena win his seventeenth World Championship? https://www.sportskeeda.com/wwe/when-will-john-cena-win-seventeenth-world-championship 16 hours ago Is Vin Diesel Really The Same Height As John Cena? | Screen Rant https://screenrant.com/f9-john-cena-vin-diesel-height-comparison-same-different/ 20 hours ago '''
Использование API Google Top Stories API
Serpapi – это платный API с бесплатной пробной версией 5000 поисков.
В этом примере API Google Top Stories предоставляет еще несколько результатов по отношению к коду выше. Кроме того, если вы не заинтересованы в поддержании анализа, выяснив, почему дела не ведут себя так, как должны, или обход блоков от Google, решение API – это путь.
from serpapi import GoogleSearch import os, json params = { "api_key": os.environ["API_KEY"], # pycharm environment "engine": "google", "q": "john cena", "gl": "us", "hl": "en" } search = GoogleSearch(params) results = search.get_dict() for result in results['top_stories']: print(json.dumps(result, indent=2, ensure_ascii=False)) ------------- ''' { "title": "Nikki Bella's Reported Response to John Cena's New Attitude on Having Kids Is All Class", "link": "https://www.yahoo.com/entertainment/nikki-bellas-reported-response-john-194941780.html", "source": "Yahoo", "date": "2 days ago", "thumbnail": "https://serpapi.com/searches/60e30aaf1071f423feda11f5/images/b544986d11640bd39c43fea8c2bbc111dec815b3d8089f08.jpeg" } { "title": "When will John Cena win his seventeenth World Championship?", "link": "https://www.sportskeeda.com/wwe/when-will-john-cena-win-seventeenth-world-championship", "source": "Sportskeeda", "date": "17 hours ago", "thumbnail": "https://serpapi.com/searches/60e30aaf1071f423feda11f5/images/b544986d11640bd38557cb4783461be1ca3dfe7ff6bcb2a0.jpeg" } ... '''
Ссылки
Код в онлайн -IDE • Google Top Stories API
Опередить
Если у вас есть какие-либо вопросы или что-то не работает правильно, или вы хотите написать что-то еще, не стесняйтесь бросить комментарий в разделе комментариев или через Twitter на @serp_api Анкет
Ваш, Dimitry и остальная часть команды Serpapi.
Оригинал: “https://dev.to/dimitryzub/scrape-google-top-stories-using-python-3j4”