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
CreamySoup - a helper script for automated SourceMod plugin updates management.

CreamySoup/"Creamy SourceMod Updater" (or just soup for short), a helper script for automated SourceMod plugin updates management.

3 Jan 03, 2022
Parsel lets you extract data from XML/HTML documents using XPath or CSS selectors

Parsel Parsel is a BSD-licensed Python library to extract and remove data from HTML and XML using XPath and CSS selectors, optionally combined with re

Scrapy project 859 Dec 29, 2022
Semplice scraper realizzato in Python tramite la libreria BeautifulSoup

Semplice scraper realizzato in Python tramite la libreria BeautifulSoup

2 Nov 22, 2021
Comment Webpage Screenshot is a GitHub Action that captures screenshots of web pages and HTML files located in the repository

Comment Webpage Screenshot is a GitHub Action that helps maintainers visually review HTML file changes introduced on a Pull Request by adding comments with the screenshots of the latest HTML file cha

Maksudul Haque 21 Sep 29, 2022
Scraping web pages to get data

Scraping Data Get public data and save in database This is project use Python How to run a project 1 - Clone the repository 2 - Install beautifulsoup4

Soccer Project 2 Nov 01, 2021
A dead simple crawler to get books information from Douban.

Introduction A dead simple crawler to get books information from Douban. Pre-requesites Python 3 Install dependencies from requirements.txt (Optional)

Yun Wang 1 Jan 10, 2022
Automated Linkedin bot that will improve your visibility and increase your network.

LinkedinSpider LinkedinSpider is a small project using browser automating to increase your visibility and network of connections on Linkedin. DISCLAIM

Frederik 2 Nov 26, 2021
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
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
This is python to scrape overview and reviews of companies from Glassdoor.

Data Scraping for Glassdoor This is python to scrape overview and reviews of companies from Glassdoor. Please use it carefully and follow the Terms of

Houping 5 Jun 23, 2022
AssistScraper - program for /r/nba to use to find list of all players a player assisted and how many assists each player recieved

AssistScraper - program for /r/nba to use to find list of all players a player assisted and how many assists each player recieved

5 Nov 25, 2021
Web Scraping Framework

Grab Framework Documentation Installation $ pip install -U grab See details about installing Grab on different platforms here http://docs.grablib.

2.3k Jan 04, 2023
爱奇艺会员,腾讯视频,哔哩哔哩,百度,各类签到

My-Actions 个人收集并适配Github Actions的各类签到大杂烩 不要fork了 ⭐️ star就行 使用方式 新建仓库并同步代码 点击Settings - Secrets - 点击绿色按钮 (如无绿色按钮说明已激活。直接到下一步。) 新增 new secret 并设置 Secr

280 Dec 30, 2022
Python script who crawl first shodan page and check DBLTEK vulnerability

🐛 MASS DBLTEK EXPLOIT CHECKER USING SHODAN 🕸 Python script who crawl first shodan page and check DBLTEK vulnerability

Divin 4 Jan 09, 2022
爬取各大SRC当日公告 | 通过微信通知的小工具 | 赏金工具

OnTimeHacker V1.0 OnTimeHacker 是一个爬取各大SRC当日公告,并通过微信通知的小工具 OnTimeHacker目前版本为1.0,已支持24家SRC,列表如下 360、爱奇艺、阿里、百度、哔哩哔哩、贝壳、Boss、58、菜鸟、滴滴、斗鱼、 饿了么、瓜子、合合、享道、京东、

Bywalks 95 Jan 07, 2023
This script is intended to crawl license information of repositories through the GitHub API.

GithubLicenseCrawler This script is intended to crawl license information of repositories through the GitHub API. Taking a csv file with requirements.

schutera 4 Oct 25, 2022
Twitter Scraper

Twitter's API is annoying to work with, and has lots of limitations — luckily their frontend (JavaScript) has it's own API, which I reverse–engineered. No API rate limits. No restrictions. Extremely

Tayyab Kharl 45 Dec 30, 2022
A simple Discord scraper for discord bots

A simple Discord scraper for discord bots. That includes sending an guild members ids to an file, Mass inviter for joining servers your bot is in and Fetching all the servers of the bot (w/MemberCoun

3zg 1 Jan 06, 2022
This is a sport analytics project that combines the knowledge of OOP and Webscraping

This is a sport analytics project that combines the knowledge of Object Oriented Programming (OOP) and Webscraping, the weekly scraping of the English Premier league table is carried out to assess th

Dolamu Oludare 1 Nov 26, 2021
Consulta de CPF e CNPJ na Receita Federal com Web-Scraping

Repositório contendo scripts Python que realizam a consulta de CPF e CNPJ diretamente no site da Receita Federal.

Josué Campos 5 Nov 29, 2021