CoderCastrov logo
CoderCastrov
Питон

Парсинг Bing с помощью Python

Парсинг Bing с помощью Python
просмотров
7 мин чтение
#Питон

Мы прочитали достаточно блогов о парсинге результатов поиска Google, но сегодня мы собираемся узнать, как мы можем спарсить Bing. Bing - отличный поисковик, не такой знаменитый, как Google, но он превосходит Google в некоторых областях, таких как поиск изображений. Лично я предпочитаю Yandex или Bing при поиске изображений.

В общем, поисковые системы парсятся для анализа свежих рыночных тенденций, анализа настроений, SEO, отслеживания ключевых слов и т.д. В этом посте мы собираемся спарсить результаты поиска с Bing. Как только мы сможем спарсить первую страницу, мы добавим систему пагинации, чтобы мы могли спарсить все страницы, которые есть у Bing по заданному ключевому слову.

Путем парсинга Bing вы можете проанализировать данные и подготовить более эффективную стратегию SEO для продвижения вашего собственного веб-сайта.

Мы собираемся использовать Python для этого учебника и предполагаем, что вы уже установили Python на своем компьютере.


Парсинг Bing с помощью Python

Мы прочитали достаточно блогов о парсинге результатов поиска Google, но сегодня мы собираемся узнать, как мы можем спарсить Bing. Bing - отличный поисковик, не такой знаменитый, как Google, но он превосходит Google в некоторых областях, таких как поиск изображений. Лично я предпочитаю Yandex или Bing при поиске изображений.

В общем, поисковые системы парсятся для анализа свежих рыночных тенденций, анализа настроений, SEO, отслеживания ключевых слов и т.д. В этом посте мы собираемся спарсить результаты поиска с Bing. Как только мы сможем спарсить первую страницу, мы добавим систему пагинации, чтобы мы могли спарсить все страницы, которые есть у Bing по заданному ключевому слову.

Путем парсинга Bing вы можете проанализировать данные и подготовить более эффективную стратегию SEO для продвижения вашего собственного веб-сайта.

Мы собираемся использовать Python для этого учебника и предполагаем, что вы уже установили Python на своем компьютере.

Почему Python для парсинга Bing?

Python - очень простой язык, который также гибок и легок в понимании, даже если вы начинающий. Сообщество Python очень большое, и это помогает, когда вы сталкиваетесь с какой-либо ошибкой при написании кода.

Многие форумы, такие как StackOverflow, GitHub, и другие, уже имеют ответы на ошибки, с которыми вы можете столкнуться при парсинге результатов поиска в Bing.

Вы можете делать бесчисленное количество вещей с помощью Python, но сейчас мы научимся парсить результаты поиска Bing с его помощью.

Парсинг результатов поиска Bing с помощью Python

Я разделил эту часть на две секции. В первой секции мы будем парсить первую страницу, а затем в следующей секции мы расширим наш код для парсинга всех страниц, добавив номера страниц. В конце у вас будет скрипт, который может парсить полные результаты поиска Bing для любого ключевого слова. Это волнующе, не так ли? Давайте начнем!

Часть I

В начале мы создадим папку и установим все необходимые библиотеки, которые могут понадобиться в ходе этого руководства. Также, нашей целевой URL будет эта страница Bing.

На данный момент мы установим две библиотеки:

>> mkdir bing
>> pip install requests
>> pip install beautifulsoup4

Внутри этой папки вы можете создать файл Python, в котором мы напишем наш код.

import requests
from bs4 import BeautifulSoup

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"})

В нашей переменной soup хранится полное HTML-дерево, через которое мы собираемся извлекать наши интересующие данные. Переменная completeData хранит все элементы, которые мы собираемся парсить. Вы можете найти их, проинспектировав страницу.

Давайте узнаем местоположение каждого из этих элементов и извлечем их.

Парсинг заголовков с Bing

Заголовок хранится в теге a родительского класса b_algo. Данные будут браться из переменной completeData.

o["Title"]=completeData[i].find("a").text

Парсинг URL с Bing

Ссылка хранится в атрибуте href тега a.

o["link"]=completeData[i].find("a").get("href")

Парсинг описания с Bing

Описание хранится в теге div с классом b_caption.

o["Description"]=completeData[i].find("div",{"class":"b_caption"}).text

Давайте объединим все это в цикле и сохраним все данные в массиве 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 первой страницы — https://www.bing.com/search?q=sydney&rdr=1&first=1

URL второй страницы — https://www.bing.com/search?q=sydney&rdr=1&first=11

URL третьей страницы — 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={](https://www.bing.com/search?q=sydney&rdr=1&first=%7B)}".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 используйте Scrapingdog API.

import requests
from bs4 import BeautifulSoupl=[]
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={](https://api.scrapingdog.com/scrape?api_key=YOUR-API-KEY&dynamic=false&url=https%3A%2F%2Fwww.bing.com%2Fsearch%3Fq%3Dsydney%26rdr%3D1%26first%3D%7B)}".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.

Конечно, рекомендуется использовать API парсинга веб-страниц для парсинга любой поисковой системы, а не только Bing. Потому что как только вы будете заблокированы, ваша работа будет прервана, и вы больше не сможете ее восстановить.

Надеюсь, вам понравилось это руководство. Пожалуйста, не стесняйтесь задавать нам любые вопросы, связанные с парсингом, и мы постараемся ответить на все вопросы.

Дополнительные ресурсы

Вот несколько дополнительных ресурсов, которые могут быть полезными во время вашего путешествия по парсингу: