要获取以下链接,您可能需要搜索所有 li 标记并提取锚点。
例如:
from gazpacho import get, Soup
url = f'https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/regiao-serrana/petropolis/imoveis?o=1'
offers = Soup(get(url)).find(
'li',
{"class": "sc-1fcmfeb-2 juiJqh"},
partial=True,
)
follow_links = [
o.find("a").attrs.get("href") for o in offers if o.find("a")
]
print("\n".join(follow_links))
输出:
https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/casa-845800716
https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/casa-para-locacao-15-min-a-pe-do-centro-historico-845797561
https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/apartamento-de-quarto-e-sala-no-centro-791808170
https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/comercio-e-industria/self-storage-guarda-moveis-estoque-e-documentos-548419653
https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/apartamento-841458075
https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/apartamento-02-quartos-sendo-01-suite-mosela-petropolis-rj-805359360
https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/cobertura-duplex-com-2-vagas-proximo-ao-centro-petropolis-rj-818116827
https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/condominio-pedra-do-retiro-759441464
and much more ...
编辑:
要解决再次循环相同页面的问题,只需获取可用页面的总数并在range() 中使用它。
将所有这些放在一起,您可能会得到这样的结果:
from gazpacho import get, Soup
base_url = f'https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/regiao-serrana/petropolis'
s = Soup(get(f"{base_url}/imoveis?o=1"))
total_pages = int(
"".join(
i.strip().split()[-1] for i
in s.find("p", {"color": "dark"})
if "Página" in i.text
)
)
for page in range(1, total_pages + 1):
s = Soup(get(f"{base_url}/imoveis?o={page}"))
offers = s.find('li', {"class": "sc-1fcmfeb-2 juiJqh"}, partial=True)
follow_links = [
o.find("a").attrs.get("href") for o in offers if o.find("a")
]
descriptions = [
o.find("h2", {"color": "dark"})[0].text for o in offers if o.find("h2")
]
prices = [
o.find("p", {"class": "sc-ifAKCX eoKYee"}).text
if o.find("p", {"class": "sc-ifAKCX eoKYee"}) else "N/A"
for o in offers
]
search_results = zip(descriptions, follow_links, prices)
bar = '-' * max(len(l) for l in follow_links)
print(
"\n".join(
f"{desc}\nPrice: {price}\nURL: {link}\n{bar}" for
desc, link, price in search_results
)
)
输出:
Casa de condomínio à venda com 5 dormitórios em Corrêas, Petrópolis cod:2610
Price: R$ 2.000.000
URL: https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/casa-de-condominio-a-venda-com-5-dormitorios-em-correas-petropolis-cod-2610-821071980
----------------------------------------------------------------------------------------------------------------------------------------------------------
Apartamento todo Reformado no Centro de Petrópolis
Price: N/A
URL: https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/apartamento-todo-reformado-no-centro-de-petropolis-845056149
----------------------------------------------------------------------------------------------------------------------------------------------------------
Casa
Price: N/A
URL: https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/casa-845800716
----------------------------------------------------------------------------------------------------------------------------------------------------------
Casa para locação (15 min. a pé do centro histórico)
Price: R$ 749.990
URL: https://rj.olx.com.br/serra-angra-dos-reis-e-regiao/imoveis/casa-para-locacao-15-min-a-pe-do-centro-historico-845797561
----------------------------------------------------------------------------------------------------------------------------------------------------------
and more ...