Introduction to WebScraping Workshop - Semcomp 24 Beta

Overview

O que é WebScraping?

Extrair informações da internet de forma automatizada. Existem diversas maneiras de fazer isso, nesse tutorial vamos ver algumas delas, por meio de bibliotecas de python.

Porque é útil?

  • Automatizar processos
  • Gerar Leads
  • Acompanhar produtos
  • Fazer projetos!!!

É legal?

Bom, é legal, mas nem sempre é legal. Em geral, criar web scrapers é muito divertido, mas nem sempre é uma coisa legalizada. Por isso é importante ficar atento aos termos de uso dos sites. O linkedin, por exemplo, não permite que sejam utilizados scrapers em nenhuma situação.

Quais as ferramentas utilizadas nesse tutorial?

Todos os códigos são feitos em Python 3. Além disso, são utilizadas algumas bibliotecas, as principais são:

Outras bibliotecas são utilizadas de apoio, e para instalar tudo, basta utilizar o arquivo requirements.txt presente nesse repositório por meio do comando:

pip3 install -r requirements.txt

O projeto

O projeto tem uma ideia bem direta: descobrir quais palavras os artistas mais utilizam em suas músicas. Para isso vamos scrapar o site letras.mus, buscando todas as músicas de um dado artista.

Versão 1

Nessa versão do projeto, pegamos as letras do letras.mus e contamos a palavras.

Versão 2

A segunda versão do projeto envolve pegar os artistas mais relevantes do lastfm e, para cada um desses artistas, fazer a contagem das palavras. Nessa versão usamos requests-html para renderizar a página.

Versão 3

Na terceira versão do projeto, fazemos o mesmo que na versão 2, porém dessa vez é feita a requisição direto em um endpoint com a biblioteca requests.

Versão 4

A última versão do projeto envolve buscar a quantidade de ouvintes mensais dos artistas no spotify. Para isso usamos selenium.

Sobre as ferramentas

Requests

  • Biblioteca para fazer requisições web.
  • Pode ser utilizada para get, post, delete...
  • Precisa de outra biblioteca para fazer parsing do html.

Lxml

  • Biblioteca para fazer parsing do html.
  • Útil pois permite busca por xpath de forma nativa.
  • Minha queridinha s2

BeautifulSoup

  • Biblioteca para fazer parsing do html.
  • Tem muita documentação e perguntas na internet (alo stackoverflow)
  • É bem flexível, permite o uso de diversos parsers, mas não tem xpath =(

Requests-html

  • Em muitos casos só a requisição não basta. É preciso também renderizar o javascript da página. A biblioteca requests não tem essa funcionalidade.
  • A requests-html pode ser usada da mesma maneira que a requests, mas possui essa nova funcionalidade de renderização.
  • Precisa de outra biblioteca para fazer parsing do html (pode usar qualquer uma das duas citadas acima).

Selenium

  • Selenium é uma ferramenta de automatização de software e é muito utilizada para realização de testes. MAS é super útil para scraping também.
  • Como o software simula um navegador, muitas vezes "engana" melhor os antibots. Além disso, renderiza o javascript normalmente, então serve para esses casos também.
  • Na maioria das vezes, usar selenium é matar uma barata com um canhão, mas em alguns momentos pode ser útil.
  • Truque: se nada que você fizer funcionar naquele site, tenta usar o selenium e fazer requisições para outros sites com aquele driver. Isso vai gerar cookies no navegador e vai ser mais fácil se passar por um usuário comum.

Truque endpoint

  • Um dos melhores truques de scraping é buscar enpoints na aba de network do navegador.
  • Isso permite fazer uma requisição direta sem precisar fazer parsing de html, o que facilita nossa vida e ainda é mais rápido.
  • É o jeito mais fácil de codar, mas as vezes exige paciência para encontrar o endpoint certo.
  • Para o código basta:
    1. Clicar em network
    2. Encontrar endpoint
    3. Clicar com botão direito
    4. Clicar em "Copiar como Curl"
    5. Ir para esse site
    6. Copiar resultado como requests
    7. Ta pronto o sorvetinho

Passo a passo que >eu< uso

Onde aprender mais?

Existem muuuuitos sites com tutoriais por aí, mas eu gosto bastante de usar o Medium para aprender esse tipo de coisa. Algumas sugestões de texto são:

Além disso, também tem esse projeto guiado no Coursera que é bem legal.

No mais, pega alguns sites e vai tentando. Se der errado, pesquisa no StackOverflow e tenta entender o que rolou, isso é um processo importante também!

E uma última dica, tem muuuitos sites diferentes por ai, cada um com sua própria peculiaridade. Não dá para aprender TUDO de scraping sem ir treinando, então recomendo aprender o básico e depois ir pesquisando sob demanda as coisas mais complexas =D

Último aviso

Vocês tem meus contatos, então podem ficar a vontade pra mandar mensagem/email sempre que precisarem =D

Owner
Luísa Moura
Luísa Moura
京东茅台抢购

截止 2021/2/1 日,该项目已无法使用! 京东:约满即止,仅限京东实名认证用户APP端抢购,2月1日10:00开始预约,2月1日12:00开始抢购(京东APP需升级至8.5.6版本及以上) 写在前面 本项目来自 huanghyw - jd_seckill,作者的项目地址我找不到了,找到了再贴上

abee 73 Dec 03, 2022
Web Scraping COVID 19 Meta Portal with Python

Web-Scraping-COVID-19-Meta-Portal-with-Python - Requests API and Beautiful Soup to scrape real-time COVID statistics from worldometer website and perform data cleaning and visual analysis in Jupyter

Aarif Munwar Jahan 1 Jan 04, 2022
Snowflake database loading utility with Scrapy integration

Snowflake Stage Exporter Snowflake database loading utility with Scrapy integration. Meant for streaming ingestion of JSON serializable objects into S

Oleg T. 0 Dec 06, 2021
A Python Covid-19 cases tracker that scrapes data off the web and presents the number of Cases, Recovered Cases, and Deaths that occurred because of the pandemic.

A Python Covid-19 cases tracker that scrapes data off the web and presents the number of Cases, Recovered Cases, and Deaths that occurred because of the pandemic.

Alex Papadopoulos 1 Nov 13, 2021
Raspi-scraper is a configurable python webscraper that checks raspberry pi stocks from verified sellers

Raspi-scraper is a configurable python webscraper that checks raspberry pi stocks from verified sellers.

Louie Cai 13 Oct 15, 2022
Web-Scraping using Selenium Master

Web-Scraping using Selenium What is the need of Selenium? Some websites don't like to be scrapped and in that case you need to disguise your webscrapi

Md Rashidul Islam 1 Oct 26, 2021
Github scraper app is used to scrape data for a specific user profile created using streamlit and BeautifulSoup python packages

Github Scraper Github scraper app is used to scrape data for a specific user profile. Github scraper app gets a github profile name and check whether

Siva Prakash 6 Apr 05, 2022
Simple library for exploring/scraping the web or testing a website you’re developing

Robox is a simple library with a clean interface for exploring/scraping the web or testing a website you’re developing. Robox can fetch a page, click on links and buttons, and fill out and submit for

Dan Claudiu Pop 79 Nov 27, 2022
Web scraping library and command-line tool for text discovery and extraction (main content, metadata, comments)

trafilatura: Web scraping tool for text discovery and retrieval Description Trafilatura is a Python package and command-line tool which seamlessly dow

Adrien Barbaresi 704 Jan 06, 2023
Web scraped S&P 500 Data from Wikipedia using Pandas and performed Exploratory Data Analysis on the data.

Web scraped S&P 500 Data from Wikipedia using Pandas and performed Exploratory Data Analysis on the data. Then used Yahoo Finance to get the related stock data and displayed them in the form of chart

Samrat Mitra 3 Sep 09, 2022
Distributed Crawler Management Framework Based on Scrapy, Scrapyd, Django and Vue.js

Gerapy Distributed Crawler Management Framework Based on Scrapy, Scrapyd, Scrapyd-Client, Scrapyd-API, Django and Vue.js. Documentation Documentation

Gerapy 2.9k Jan 03, 2023
jd_maotai rpa 基于selenium驱动的jd抢购rpa机器人

jd_maotai rpa 基于selenium驱动的jd抢购rpa机器人, 照顾我们这样的马大哈, 不会忘记抢购了, 祝大家过年都能喝上茅台. 特别声明: 本仓库发布的jd_maotai_rpa项目定义为自动化rpa项目, 是用于防止忘记参与jd茅台的活动(由于本人时常忘记), 而不是为了秒杀和抢

35 Nov 18, 2022
IGLS - Instagram Like Scraper CLI tool

IGLS - Instagram Like Scraper It's a web scraping command line tool based on python and selenium. Description This is a trial tool for learning purpos

Shreshth Goyal 5 Oct 29, 2021
A high-level distributed crawling framework.

Cola: high-level distributed crawling framework Overview Cola is a high-level distributed crawling framework, used to crawl pages and extract structur

Xuye (Chris) Qin 1.5k Dec 24, 2022
OSTA web scraper, for checking the status of school buses in Ottawa

OSTA-La-Vista OSTA web scraper, for checking the status of school buses in Ottawa. Getting Started Using a Raspberry Pi, download Python 3, and option

1 Jan 28, 2022
中国大学生在线 四史自动答题刷分(现仅支持英雄篇)

中国大学生在线 “四史”学习教育竞答 自动答题 刷分 (现仅支持英雄篇,已更新可用) 若对您有所帮助,记得点个Star 🌟 !!! 中国大学生在线 “四史”学习教育竞答 自动答题 刷分 (现仅支持英雄篇,已更新可用) 🥰 🥰 🥰 依赖 本项目依赖的第三方库: requests 在终端执行以下

XWhite 229 Dec 12, 2022
Searching info from Google using Python Scrapy

Python-Search-Engine-Scrapy || Python-爬虫-索引/利用爬虫获取谷歌信息**/ Searching info from Google using Python Scrapy /* 利用 PYTHON 爬虫获取天气信息,以及城市信息和资料**/ translatio

HONGVVENG 1 Jan 06, 2022
NASA APOD Discord Bot - Fetches information from NASA APOD site.

NASA APOD Discord Bot - Fetches information from NASA APOD site.

Astronomy Club IITK 4 Apr 23, 2022
Script used to download data for stocks.

This script is useful for downloading stock market data for a wide range of companies specified by their respective tickers. The script reads in the d

Carmelo Gonzales 71 Oct 04, 2022
Libextract: extract data from websites

Libextract is a statistics-enabled data extraction library that works on HTML and XML documents and written in Python

499 Dec 09, 2022