Мы прочитали достаточно блогов на тему парсинг результатов поиска Google, но сегодня мы узнаем, как мы можем парсить bing. Bing — отличная поисковая система, не такая хорошая, как Google, но она превосходит Google в некоторых областях, таких как поиск изображений. Я лично предпочитаю Яндекс или Bing при поиске изображений.
Как правило, поисковые системы очищаются для анализа свежих рыночных тенденций, анализа настроений, SEO, отслеживания ключевых слов и т. д. В этом посте мы собираемся извлечь результаты поиска из Bing. Как только нам удастся очистить первую страницу, мы добавим к ней систему разбиения на страницы, чтобы мы могли очищать все страницы, которые есть в Bing, по ключевому слову.
Используя Bing, вы можете проанализировать данные и подготовить лучшую SEO-стратегию для ранжирования вашего собственного веб-сайта.
Мы собираемся использовать Python для этого урока, и я предполагаю, что вы уже установили Python на свой компьютер.
Почему Python для парсинга Bing?
Будучи очень простым языком, он также гибкий и простой для понимания, даже если вы новичок. Сообщество Python слишком велико, и это помогает, когда вы сталкиваетесь с какой-либо ошибкой при кодировании.
На многих форумах, таких как StackOverflow, GitHub и т. д., уже есть ответы на ошибки, с которыми вы можете столкнуться при написании кода при очистке результатов поиска Google.
Вы можете делать бесчисленное множество вещей с помощью Python, но сейчас мы изучим с его помощью веб-скрапинг результатов поиска bing.
Очистка результатов поиска Bing с помощью Python
Я разделил эту часть на две части. В первом разделе мы собираемся очистить первую страницу, а затем в следующем разделе мы масштабируем наш код, чтобы очищать все страницы, добавляя номера страниц. В конце у вас будет скрипт, который может очищать полные результаты поиска Bing по любому ключевому слову. Это захватывающе, правда? Давай начнем!
я часть
Для начала мы создадим папку и установим все библиотеки, которые могут нам понадобиться в ходе этого урока. Кроме того, нашим целевым URL будет эта страница Bing.
Сейчас мы установим две библиотеки
- Запросы помогут нам установить HTTP-соединение с Bing.
- BeautifulSoup поможет нам создать HTML-дерево для плавного извлечения данных.
>> mkdir bing >> pip install requests >> pip install beautifulsoup4
Внутри этой папки вы можете создать файл python, в котором мы будем писать наш код.
- Заголовок
- Связь
- Описание
- Позиция
import requests from bs4 import BeautifulSoup l=[] o={} target_url="https://www.bing.com/search?q=sydney&rdr=1" headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"} resp=requests.get(target_url,headers=headers)
Здесь мы импортировали только что установленные библиотеки, а затем сделали HTTP-запрос GET к целевому URL-адресу. Теперь мы собираемся использовать BS4 для создания дерева для извлечения данных. Это также можно сделать через Xpath, но пока мы используем BS4.
soup = BeautifulSoup(resp.text, 'html.parser') completeData = soup.find_all("li",{"class":"b_algo"})
В нашей переменной супа хранится полное HTML-дерево, через которое мы собираемся извлечь интересующие нас данные. В переменной completeData хранятся все элементы, которые мы собираемся очистить. Вы можете найти его, осмотрев.
Давайте выясним расположение каждого из этих элементов и извлечем их.
Удаление заголовка из Bing
Заголовок хранится под тегом родительского класса b_algo. Переменная completeData будет использоваться в качестве источника данных.
o["Title"]=completeData[i].find("a").text
Скрапинг URL-адресов из Bing
Ссылка хранится в атрибуте href тега.
o["link"]=completeData[i].find("a").get("href")
Скрапинг описания из Bing
Описание хранится в теге div с классом b_caption.
o["Description"]=completeData[i].find("div",{"class":"b_caption"}).text
Объединим все это в цикл for и сохраним все данные в массиве l.
for i in range(0, len(completeData)): o["Title"]=completeData[i].find("a").text o["link"]=completeData[i].find("a").get("href") o["Description"]=completeData[i].find("div",{"class":"b_caption"}).text o["Position"]=i+1 l.append(o) o={} print(l)
Нам удалось очистить первую страницу. Теперь давайте сосредоточимся на масштабировании этого кода, чтобы мы могли очищать все страницы по любому заданному ключевому слову.
II часть
Когда вы нажмете на вторую страницу, вы увидите изменение URL-адреса. URL меняется и к нему автоматически добавляется новый параметр запроса.
URL страницы I — https://www.bing.com/search?q=sydney&rdr=1&first=1
URL страницы II — https://www.bing.com/search?q=sydney&rdr=1&first=11
URL страницы III — https://www.bing.com/search?q=sydney&rdr=1&first=21
Это означает, что значение «первого параметра» увеличивается на 10 всякий раз, когда вы меняете страницу. Это наблюдение поможет нам изменить шаблон URL в цикле.
Мы будем использовать цикл for, который будет увеличивать значение на 10 при каждом запуске.
for i in range(0,100,10): target_url="https://www.bing.com/search?q=sydney&rdr=1&first={}".format(i+1) print(target_url) resp=requests.get(target_url,headers=headers) soup = BeautifulSoup(resp.text, 'html.parser') completeData = soup.find_all("li",{"class":"b_algo"}) for i in range(0, len(completeData)): o["Title"]=completeData[i].find("a").text o["link"]=completeData[i].find("a").get("href") o["Description"]=completeData[i].find("div",{"class":"b_caption"}).text o["Position"]=i+1 l.append(o) o={} print(l)
Здесь мы меняем значение target_url, изменяя значение первого параметра, как мы говорили ранее. Это будет предоставлять нам новый URL-адрес каждый раз, когда запускается цикл, и для этого руководства мы ограничиваем общее количество страниц только десятью.
Точно так же вы можете получить данные по любому ключевому слову, просто изменив URL-адрес.
Полный код
Полный код второго раздела будет примерно таким.
import requests from bs4 import BeautifulSoup l=[] o={} headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"} for i in range(0,100,10): target_url="https://www.bing.com/search?q=sydney&rdr=1&first={}".format(i+1) print(target_url) resp=requests.get(target_url,headers=headers) soup = BeautifulSoup(resp.text, 'html.parser') completeData = soup.find_all("li",{"class":"b_algo"}) for i in range(0, len(completeData)): o["Title"]=completeData[i].find("a").text o["link"]=completeData[i].find("a").get("href") o["Description"]=completeData[i].find("div",{"class":"b_caption"}).text o["Position"]=i+1 l.append(o) o={} print(l)
Скрапинг Bing с помощью Scrapingdog
Bing — это поисковая система с очень сложной системой обнаружения IP-адресов и ботов. Если вы хотите очистить Bing в масштабе, то очистить его, как мы сделали выше, не получится. Вам понадобятся ротационные прокси, заголовки и т. д. Scrapingdog поможет вам собирать данные из Bing без блокировки. Вы можете оставить головную боль прокси и безголовых браузеров на Scrapingdog.
Давайте разберемся, как вы можете очистить Bing с помощью Scrapingdog с помощью бесплатного пакета. В бесплатном пакете вы получаете 1000 бесплатных вызовов API.
После регистрации вы получите ключ API на панели инструментов. Вы можете использовать тот же код выше, но вместо target_url используйте API Scrapingdog.
import requests from bs4 import BeautifulSoup l=[] o={} headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36"} for i in range(0,100,10): target_url="https://api.scrapingdog.com/scrape?api_key=YOUR-API-KEY&dynamic=false&url=https://www.bing.com/search?q=sydney%26rdr=1%26first={}".format(i+1) print(target_url) resp=requests.get(target_url,headers=headers) soup = BeautifulSoup(resp.text, 'html.parser') completeData = soup.find_all("li",{"class":"b_algo"}) for i in range(0, len(completeData)): o["Title"]=completeData[i].find("a").text o["link"]=completeData[i].find("a").get("href") o["Description"]=completeData[i].find("div",{"class":"b_caption"}).text o["Position"]=i+1 l.append(o) o={} print(l)
В приведенном выше коде просто замените «YOUR-API-KEY» своим собственным ключом. Это создаст бесшовный конвейер данных, который поможет вам создавать такие инструменты, как
- Трекер рангов
- Анализ обратных ссылок
- Прогноз новостей
- Прогноз рынка
- Обнаружение изображения
Заключение
В этом уроке вы научились очищать поисковую систему Bing. Вы можете внести некоторые изменения, например, подсчитать количество страниц, которые он обслуживает по предоставленному ключевому слову, а затем соответствующим образом настроить цикл for. Вы даже можете настроить этот код для извлечения изображений из Bing.
Конечно, вам рекомендуется использовать Web Scraping API для очистки любой поисковой системы, а не только Bing. Потому что, как только вы заблокируете, ваш конвейер будет заблокирован, и вы никогда не сможете его восстановить.
Надеюсь, вам понравится этот урок. Пожалуйста, не стесняйтесь задавать нам любые вопросы, связанные со скрейпингом, мы ответим на максимально возможное количество вопросов.
Дополнительные ресурсы
Вот несколько дополнительных ресурсов, которые могут оказаться полезными во время изучения веб-страниц: