Olá pessoal, boa tarde. Espero que estejam bem.
Estou fazendo o Scraping de alguns sites de anuncio, e deu tudo certo até eu me deparar com o site da OLX.
Estou buscando as informações de valor, localização, metragem, e o link do anúncio, porém esses dados vem com muito resíduo e não consigo usar alguns métodos para minimizar isso, como por exemplo o getText().
Será que alguém poderia me ajudar com isso? Não sei se isso se deve ao fato de os elementos serem 'a' e 'p'.
Além disso, não estou sabendo a melhor forma de conseguir fazer a captura do link que se encontra dentro do href de um elemento, estou tendo que pegar o elemento inteiro para conseguir e vem muito carácter junto.
Fora do código, fiz o for abaixo para testar, mas ele pega todos os links da página e eles vem fora de ordem, e dessa forma não consigo fazer o append para depois gerar o dataset.
for item in soup.findAll('a',lurker="list_id"):
print(item.get('href'))
Vou deixar o código inteiro abaixo
from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import time
cards=[]
pages = 5
driver = webdriver.Firefox(executable_path='C:/Users/antonio.celes/Desktop/Selenium/geckodriver.exe')
for i in range(pages):
site ='https://sp.olx.com.br/sao-paulo-e-regiao/imoveis/terrenos/lotes/compra?o='+str(i+1)+'&ps=8000000&ss=11'
driver.get(site)
time.sleep(5)
soup = BeautifulSoup(driver.page_source, 'html.parser')
anuncios = soup.find('div', {'class' : 'section_OLXad-list'}).findAll('li', class_="item")
for anuncio in anuncios:
card = {}
card['value'] = anuncio.find('p',{'class':"OLXad-list-price"})
card['location'] = anuncio.find('p',class_="detail-region")
card['metragem'] = anuncio.find('p',class_="detail-specific")
card['link'] = anuncio.find('a',lurker="list_id")
cards.append(card)
dataset = pd.DataFrame(cards)
dataset.to_csv('./output/data/OLXSãoPaulo.csv',sep=';',index = False, encoding = 'utf-8-sig')
dataset
Muito obrigado !!