Веб-парсингс использованием Beautifulsoup и API scrapingdog

В этой заметке мы рассмотрим динамические веб-сайты, использующие библиотеки JavaScript, такие как React.js, Vue.js, Angular.js и т. д., для чего необходимо приложить дополнительные усилия. Это простой, но длительный процесс, если вы собираетесь установить все библиотеки, такие как Selenium, Puppeteer, и браузеры без заголовков, такие как Phantom.js. Однако у нас есть инструмент, который может сам справиться со всей этой нагрузкой. Это Web Scraping Tool, который предлагает API и инструменты для веб-парсинга.<\/p>\r\n\r\n

Почему именно этот инструмент? Этот инструмент поможет нам парсировать динамические веб-сайты, используя миллионы вращающихся прокси, чтобы нас не заблокировали. Он также обеспечивает очистку капчи. Для соскабливания динамических веб-сайтов используется chrome без заголовков.<\/p>\r\n\r\n

Что нам понадобится?<\/h2>\r\n\r\n

Веб-парсинг состоит из двух простых частей<\/p>\r\n\r\n

    \r\n\t
  • Получение данных путем выполнения HTTP-запроса<\/li>\r\n\t
  • Извлечение важных данных путем разбора HTML DOM.<\/li>\r\n<\/ul>\r\n\r\n

    Мы будем использовать Python и ScrapingDog API:<\/p>\r\n\r\n

      \r\n\t
    • Beautiful Soup - это библиотека Python для извлечения данных из HTML и XML файлов.<\/li>\r\n\t
    • Requests позволяет очень просто отправлять HTTP-запросы.<\/li>\r\n<\/ul>\r\n\r\n

      Настройка<\/h2>\r\n\r\n

      Наша установка довольно проста. Просто создайте папку и установите в нее Beautiful Soup и requests. Для создания папки и установки библиотек введите приведенные ниже команды. Я предполагаю, что у вас уже установлен Python 3.x.<\/p>\r\n\r\n

      \r\n

      mkdir scraper
      \r\npip install beautifulsoup4
      \r\npip install requests<\/p>\r\n<\/blockquote>\r\n\r\n

      Теперь создайте файл в этой папке с любым именем. Я использую scraping.py.<\/p>\r\n\r\n

      Для начала необходимо зарегистрироваться на сайте этого инструмента для сбора информации. Он предоставит вам 1000 БЕСПЛАТНЫХ кредитов. Затем просто импортируйте Beautiful Soup & requests в свой файл.<\/p>\r\n\r\n

      \r\n

      from bs4 import BeautifulSoup
      \r\nimport requests<\/p>\r\n<\/blockquote>\r\n\r\n

      \"\"<\/p>\r\n\r\n

      Парсим динамическое содержимое<\/h2>\r\n\r\n

      Теперь мы знакомы со Scrapingdog и с тем, как он работает. Но для справки следует прочитать документацию по этому API. Это даст вам четкое представление о том, как работает данный API. Теперь мы поработаем с amazon для поиска заголовков книг по python.<\/p>\r\n\r\n

      Теперь у нас есть 16 книг на этой странице. Мы извлечем HTML из API Scrapingdog, а затем с помощью Beautifulsoup сгенерируем JSON-ответ. Теперь в одной строке мы сможем спарситьAmazon. Для запроса API я буду использовать requests.<\/p>\r\n\r\n

      \r\n

      r = requests.get("https:\/\/api.scrapingdog.com\/scrape?api_key=<your-api-key>&url=https:\/\/www.amazon.com\/s?k=python+books&ref=nb_sb_noss_2&dynamic=true").text<\/p>\r\n<\/blockquote>\r\n\r\n

      В результате будет получен HTML-код целевого URL.<\/p>\r\n\r\n

      Теперь необходимо использовать BeautifulSoup для разбора HTML.<\/p>\r\n\r\n

      \r\n

      soup = BeautifulSoup(r, 'html.parser')<\/p>\r\n<\/blockquote>\r\n\r\n

      Каждый заголовок имеет атрибут "class" с именем "a-size-mini a-spacing-none a-color-base s-line-clamp-2" и тег "h2". Вы можете посмотреть на это на рисунке ниже.<\/p>\r\n\r\n

      Сначала найдем все эти теги с помощью переменной soup.<\/p>\r\n\r\n

      \r\n

      allbooks = soup.find_all("h2", {"class": "a-size-mini a-spacing-none a-color-base s-line-clamp-2"})<\/p>\r\n<\/blockquote>\r\n\r\n

      Затем мы запустим цикл для получения всех названий каждой книги на этой странице, используя длину переменной "allbooks".<\/p>\r\n\r\n

      \r\n

      l ={}
      \r\nu = list()
      \r\nfor i in range(0, len(allbooks)):
      \r\n    l["title"]= allbooks[i].text.replace("\\n", "")
      \r\n    u.append(l)
      \r\n    l ={}
      \r\nprint({"Названия":u})<\/p>\r\n<\/blockquote>\r\n\r\n

      Список "u" содержит все названия, и нам остается только распечатать его. Теперь после печати списка "u" из цикла for мы получаем ответ в формате JSON. Он выглядит следующим образом.<\/p>\r\n\r\n

      Выходные данные -<\/p>\r\n\r\n

      \r\n

      {
      \r\n “Titles”: [
      \r\n { “title”: “Python for Beginners: 2 Books in 1: Python Programming for Beginners, Python Workbook”},
      \r\n { “title”: “Python Tricks: A Buffet of Awesome Python Features” },
      \r\n { “title”: “Python Crash Course, 2nd Edition: A Hands-On, Project-Based Introduction to Programming” },
      \r\n { “title”: “Learning Python: Powerful Object-Oriented Programming” },
      \r\n { “title”: “Python: 4 Books in 1: Ultimate Beginner’s Guide, 7 Days Crash Course, Advanced Guide, and Data Science, Learn Computer Programming and Machine Learning with Step-by-Step Exercises” },
      \r\n { “title”: “Intro to Python for Computer Science and Data Science: Learning to Program with AI, Big Data and The Cloud” },
      \r\n { “title”: “Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython” },
      \r\n { “title”: “Automate the Boring Stuff with Python: Practical Programming for Total Beginners” },
      \r\n { “title”: “Python: 2 Books in 1: The Crash Course for Beginners to Learn Python Programming, Data Science and Machine Learning + Practical Exercises Included. (Artificial Intelligence, Numpy, Pandas)” },
      \r\n { “title”: “Python for Beginners: 2 Books in 1: The Perfect Beginner’s Guide to Learning How to Program with Python with a Crash Course + Workbook” },
      \r\n { “title”: “Python: 2 Books in 1: The Crash Course for Beginners to Learn Python Programming, Data Science and Machine Learning + Practical Exercises Included. (Artificial Intelligence, Numpy, Pandas)” },
      \r\n { “title”: “The Warrior-Poet’s Guide to Python and Blender 2.80” },
      \r\n { “title”: “Python: 3 Manuscripts in 1 book: — Python Programming For Beginners — Python Programming For Intermediates — Python Programming for Advanced” },
      \r\n { “title”: “Python: 2 Books in 1: Basic Programming & Machine Learning — The Comprehensive Guide to Learn and Apply Python Programming Language Using Best Practices and Advanced Features.” },
      \r\n { “title”: “Learn Python 3 the Hard Way: A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code (Zed Shaw’s Hard Way Series)” },
      \r\n { “title”: “Python Tricks: A Buffet of Awesome Python Features” },
      \r\n { “title”: “Python Pocket Reference: Python In Your Pocket (Pocket Reference (O’Reilly))” },
      \r\n { “title”: “Python Cookbook: Recipes for Mastering Python 3” },
      \r\n { “title”: “Python (2nd Edition): Learn Python in One Day and Learn It Well. Python for Beginners with Hands-on Project. (Learn Coding Fast with Hands-On Project Book 1)” },
      \r\n { “title”: “Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems” },
      \r\n { “title”: “Hands-On Deep Learning Architectures with Python: Create deep neural networks to solve computational problems using TensorFlow and Keras” },
      \r\n { “title”: “Machine Learning: 4 Books in 1: Basic Concepts + Artificial Intelligence + Python Programming + Python Machine Learning. A Comprehensive Guide to Build Intelligent Systems Using Python Libraries” }
      \r\n ]
      \r\n}<\/p>\r\n<\/blockquote>\r\n