-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrastreando_mercadolivre.py
70 lines (63 loc) · 2.85 KB
/
rastreando_mercadolivre.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from urllib.request import urlopen
from urllib.error import HTTPError
from urllib.error import URLError
from bs4 import BeautifulSoup
produto = 'https://lista.mercadolivre.com.br/'
def busca_produtos_mercadolivre(desejado):
global produto
try:
if 'https:' in desejado:
html = urlopen(desejado)
else:
html = urlopen(produto + desejado)
except HTTPError:
print('problema no servidor 502 ou na página 404')
except URLError:
print('problema com a conexão ou digitou errado')
else:
dic = {}
bs = BeautifulSoup(html.read(), 'html.parser')
titulos = bs.find_all('h2', {'class': 'ui-search-item__title'})
for titulo in titulos:
precos = bs.find_all('div', {'class':'ui-search-price__second-line'})
contador = 0
for preco in precos:
contador += 1
if contador % 2 != 0:
dic.setdefault(titulo.get_text(), preco.span.span.get_text().replace('con', 'e'))
# formatando a saída
for item, price in dic.items():
print(f'{item} : {price}')
pagina = bs.find_all('div', {'class': 'ui-search-pagination'})
link = ''
# paginação
for links in pagina:
encontrar = links.find('ul').find_all('li')
# pegando e conferindo os atributos
for coisas in encontrar:
for coisa in coisas:
try:
if 'title' in coisa.attrs:
# quando tiver página de voltar, avancar
if coisa.attrs['title'] == 'Anterior':
encontrar2 = links.find('ul').li.next_sibling.next_sibling
for atributos in encontrar2:
if 'href' in atributos.attrs:
linke = atributos.attrs['href']
print(f'link de página adiante: {linke}')
print()
busca_produtos_mercadolivre(linke)
else:
# avançar a página
encontrar = links.find('ul').li.next_sibling()
for coisas in encontrar:
if 'href' in coisas.attrs:
link = coisas.attrs['href']
print(f'link pagina2: {link}')
print()
busca_produtos_mercadolivre(link)
except TypeError:
print('página não encontrada ou fim da linha')
pass
desejado = str(input('informe o produto desejado: '))
busca_produtos_mercadolivre(desejado)