Автор оригинала: Shubham Sayon.
Вступление
В этом руководстве мы рассмотрим многочисленные примеры использования Beautifulsoup Библиотека в Python. Для лучшего понимания давайте следуем несколько рекомендаций/шагов, которые помогут нам упростить вещи и создавать эффективный код. Пожалуйста, посмотрите на рамки/шаги, которые мы собираемся следовать во всех примерах, упомянутых ниже:
- Осмотрите HTML и CSS код за сайте/веб-страница.
- Импортируйте необходимые библиотеки.
- Создать Пользовательский агент (По желанию).
- Отправить
Получить ()
Запрос и извлечь содержимое веб-страницы. - Проверьте Код состояния после получения ответа.
- Создайте красивый объект супа и определите парсер.
- Внедрить вашу логику.
❖ Отказ от ответственности: Эта статья считает, что вы проходили основные концепции Scraping Web. Единственная цель этой статьи состоит в том, чтобы перечислить и продемонстрировать примеры Scraping Web. Упомянутые примеры были созданы только для образовательных целей. Если вы хотите узнать основные концепции перед погружением в примеры, пожалуйста, следуйте руководству по эта ссылка Отказ
Без дальнейшей задержки давайте погрузимся в примеры. Пусть игра начнется!
Пример 1: соскреб на примере веб-страницы
Начнем с простого примера, где мы собираемся извлечь данные из данной таблицы в веб-странице. На веб-странице, из которой мы собираемся извлечь данные, упомянуто ниже:
Код для Scrape, чтобы данные из таблицы в вышеуказанной веб-странице приведены ниже.
# 1. Import the necessary LIBRARIES import requests from bs4 import BeautifulSoup # 2. Create a User Agent (Optional) headers = {"User-Agent": "Mozilla/5.0 (Linux; U; Android 4.2.2; he-il; NEO-X5-116A Build/JDQ39) AppleWebKit/534.30 (" "KHTML, like Gecko) Version/4.0 Safari/534.30"} # 3. Send get() Request and fetch the webpage contents response = requests.get("https://shubhamsayon.github.io/python/demo_html.html", headers=headers) webpage = response.content # 4. Check Status Code (Optional) # print(response.status_code) # 5. Create a Beautiful Soup Object soup = BeautifulSoup(webpage, "html.parser") # 6. Implement the Logic. for tr in soup.find_all('tr'): topic = "TOPIC: " url = "URL: " values = [data for data in tr.find_all('td')] for value in values: print(topic, value.text) topic = url print()
Выход:
TOPIC: __str__ vs __repr__ In Python URL: https://blog.finxter.com/python-__str__-vs-__repr__/ TOPIC: How to Read a File Line-By-Line and Store Into a List? URL: https://blog.finxter.com/how-to-read-a-file-line-by-line-and-store-into-a-list/ TOPIC: How To Convert a String To a List In Python? URL: https://blog.finxter.com/how-to-convert-a-string-to-a-list-in-python/ TOPIC: How To Iterate Through Two Lists In Parallel? URL: https://blog.finxter.com/how-to-iterate-through-two-lists-in-parallel/ TOPIC: Python Scoping Rules â€" A Simple Illustrated Guide URL: https://blog.finxter.com/python-scoping-rules-a-simple-illustrated-guide/ TOPIC: Flatten A List Of Lists In Python URL: https://blog.finxter.com/flatten-a-list-of-lists-in-python/
✨ Видео прохождение вышеуказанного кода:
Пример 2: Скаронные данные с лидеров Finxter
В этом примере показано, как мы можем легко соскрести данные с помощью панели инструментов Finxter, которая перечисляет ELOS/точки. Изображение, приведенное ниже, изображает данные, которые мы собираемся извлечь из https://app.finxter.com Отказ
Код для Scrape, чтобы данные из таблицы в вышеуказанной веб-странице приведены ниже.
# import the required libraries import requests from bs4 import BeautifulSoup # create User-Agent (optional) headers = {"User-Agent": "Mozilla/5.0 (CrKey armv7l 1.5.16041) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/31.0.1650.0 Safari/537.36"} # get() Request response = requests.get("https://app.finxter.com/learn/computer/science/", headers=headers) # Store the webpage contents webpage = response.content # Check Status Code (Optional) print(response.status_code) # Create a BeautifulSoup object out of the webpage content soup = BeautifulSoup(webpage, "html.parser") # The logic for table in soup.find_all('table',class_='w3-table-all',limit=1): for tr in table.find_all('tr'): name = "USERNAME: " elo = "ELO: " rank = "RANK: " for td in tr.find_all('td'): print(name,td.text.strip()) name = elo elo = rank print()
Выход: Пожалуйста, загрузите файл, приведенный ниже, чтобы просмотреть извлеченные данные в результате выполнения вышеуказанного кода.
✨ Видео прохождение выше Кода:
Пример 3: Скрепление бесплатной доски работы Python
Скрепление данных может оказаться чрезвычайно удобным при автоматизации поиска на рабочих веб-сайтах. Пример, приведенный ниже, является полным прохождением того, как вы можете соскребать данные с сайтов рабочих мест. Приведенное ниже изображение изображает веб-сайт, данные которых мы будем соскабливать.
В указанном ниже коде мы постараемся извлечь Название работы , Расположение, и название компании для каждой работы, которая была перечислена. Пожалуйста, не стесняйтесь запустить код в вашей системе и визуализировать вывод.
import requests from bs4 import BeautifulSoup # create User-Agent (optional) headers = {"User-Agent": "Mozilla/5.0 (CrKey armv7l 1.5.16041) AppleWebKit/537.36 (KHTML, like Gecko) " "Chrome/31.0.1650.0 Safari/537.36"} # get() Request response = requests.get("http://pythonjobs.github.io/", headers=headers) # Store the webpage contents webpage = response.content # Check Status Code (Optional) # print(response.status_code) # Create a BeautifulSoup object out of the webpage content soup = BeautifulSoup(webpage, "html.parser") # The logic for job in soup.find_all('section', class_='job_list'): title = [a for a in job.find_all('h1')] for n, tag in enumerate(job.find_all('div', class_='job')): company_element = [x for x in tag.find_all('span', class_='info')] print("Job Title: ", title[n].text.strip()) print("Location: ", company_element[0].text.strip()) print("Company: ", company_element[3].text.strip()) print()
Выход:
Job Title: Software Engineer (Data Operations) Location: Sydney, Australia / Remote Company: Autumn Compass Job Title: Developer / Engineer Location: Maryland / DC Metro Area Company: National Institutes of Health contracting company. Job Title: Senior Backend Developer (Python/Django) Location: Vienna, Austria Company: Bambus.io
✨ Видео прохождение выше Кода:
Пример 4: Скаронные данные из онлайн-магазина книги
Веб-соскоб имеет широкомасштабное использование, когда речь идет о извлечении информации о продуктах из магазинных веб-сайтов. В этом примере мы увидим, как мы можем извлечь данные о книгах/продуктах от Alibris.com Отказ
Изображение, приведенное ниже, изображает веб-страницу, от которого мы собираемся царапать данные.
Приведенный ниже код демонстрирует, как извлечь:
- Имя каждой книги,
- Имя автора,
- Цена каждой книги.
# import the required libraries import requests from bs4 import BeautifulSoup # create User-Agent (optional) headers = {"User-Agent": "Mozilla/5.0 (Linux; U; Android 4.2.2; he-il; NEO-X5-116A Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30"} # get() Request response = requests.get( "https://www.alibris.com/search/books/subject/Fiction", headers=headers) # Store the webpage contents webpage = response.content # Check Status Code (Optional) # print(response.status_code) # Create a BeautifulSoup object out of the webpage content soup = BeautifulSoup(webpage, "html.parser") # The logic for parent in soup.find_all('ul',{'class':'primaryList'}): for n,tag in enumerate(parent.find_all('li')): title = [x for x in tag.find_all('p', class_='bookTitle')] author = [x for x in tag.find_all('p', class_='author')] price = [x for x in tag.find_all('a', class_='buy')] for item in title: print("Book: ",item.text.strip()) for item in author: author = item.text.split("\n") print("AUTHOR: ",author[2]) for item in price: if 'eBook' in item.text.strip(): print("eBook PRICE: ", item.text.strip()) else: print("PRICE: ", item.text.strip()) print()
Выход: Пожалуйста, загрузите файл, приведенный ниже, чтобы просмотреть извлеченные данные в результате выполнения вышеуказанного кода.
✨ Видео прохождение выше Кода:
Пример 5: Скаркость с использованием относительных ссылок
До сих пор мы видели примеры, где мы выскабливаем данные прямо из веб-страницы. Теперь мы узнаем, как мы можем извлечь данные с веб-сайтов, которые имеют гиперссылки. В этом примере мы будем извлечь данные из https://codingbat.com/ Отказ Давайте попробуем извлечь все вопросы, перечисленные под Python Категория в codingbat.com Отказ
Приведенная ниже демонстрация изображает пример данных, которые мы собираемся извлечь с сайта.
Решение:
# 1. Import the necessary LIBRARIES import requests from bs4 import BeautifulSoup # 2. Create a User Agent (Optional) headers = {"User-Agent": "Mozilla/5.0 (Linux; U; Android 4.2.2; he-il; NEO-X5-116A Build/JDQ39) AppleWebKit/534.30 (" "KHTML, like Gecko) Version/4.0 Safari/534.30"} # 3. Send get() Request and fetch the webpage contents response = requests.get('http://codingbat.com/python', headers=headers) webpage = response.content # 4. Check Status Code (Optional) # print(response.status_code) # 5. Create a Beautiful Soup Object soup = BeautifulSoup(webpage, "html.parser") # The Logic url = 'https://codingbat.com' div = soup.find_all('div', class_='summ') links = [url + div.a['href'] for div in div] for link in links: #print(link) second_page = requests.get(link, headers={ "User-Agent": "Mozilla/5.0 (Linux; U; Android 4.2.2; he-il; NEO-X5-116A Build/JDQ39) AppleWebKit/534.30 (" "KHTML, like Gecko) Version/4.0 Safari/534.30"}) sub_soup = BeautifulSoup(second_page.content, 'html.parser') div = sub_soup.find('div', class_='tabc') question = [url + td.a['href'] for td in div.table.find_all('td')] for link in question: third_page = requests.get(link) third_soup = BeautifulSoup(third_page.content, 'html.parser') indent = third_soup.find('div', attrs={'class': 'indent'}) problem = indent.table.div.string siblings_of_statement = indent.table.div.next_siblings demo = [sibling for sibling in siblings_of_statement if sibling.string is not None] print(problem) for example in demo: print(example) print("\n")
Выход: Пожалуйста, загрузите файл, приведенный ниже, чтобы просмотреть извлеченные данные в результате выполнения вышеуказанного кода.
Вывод
Я надеюсь, что вам понравились примеры, обсуждаемые в статье. Пожалуйста, Подписаться и Оставайтесь настроиться Для получения дополнительных статей и содержимого видео в будущем!
Куда пойти отсюда?
Достаточно теории, давайте познакомимся!
Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?
Практические проекты – это то, как вы обостряете вашу пилу в кодировке!
Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?
Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.
Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.
Присоединяйтесь к свободному вебинару сейчас!
Я профессиональный Python Blogger и Content Creator. Я опубликовал многочисленные статьи и создал курсы в течение определенного периода времени. В настоящее время я работаю полный рабочий день, и у меня есть опыт в областях, таких как Python, AWS, DevOps и Networking.
Вы можете связаться со мной @: