python - 在 Python 中进行网页抓取时循环网页(如谷歌搜索)
问题描述
我正在尝试抓取一个房地产网站。抓取代码运行良好,但我有一个问题:
当我在这个网站(看起来像谷歌)上进行研究时,它向我展示了很多页面。
我如何计算搜索找到了多少页而不是全部抓取?
如您所见,当我进行简单搜索时,它会显示在顶部:
“10.177 prédios inteiros para alugar”,意思是“10.177 建筑物可供出租”。
在网站底部显示了一些找到的页面,我想把它们全部刮掉。
这是我的代码,我必须像在搜索的每一页下方一样进行抓取。它用于抓取诸如租金、平方米之类的数据:
import pandas as pd
from bs4 import BeautifulSoup
import requests
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}
url = requests.get("https://www.zapimoveis.com.br/aluguel/predio-inteiro/?transacao=Aluguel&tipoUnidade=Comercial,Pr%C3%A9dio%20Inteiro&tipo=Im%C3%B3vel%20usado", headers = headers)
if url.status_code == 200:
soup = BeautifulSoup(url.content, "html.parser")
soup = BeautifulSoup(url.content, "html.parser")
Aluguel = [headline.get_text() for headline in soup.find_all("p", {"class": "simple-card__price"})]
AluguelFixed = list(map(int, [i.replace('.', '').replace("R$", "").replace("mês", "").replace("\n","").replace("/","").strip() for i in Aluguel]))
Metragem = [li.find("span", recursive=False).get_text() for li in soup.find_all("li", {"class": "feature__item" }) ]
MetragemAjustada = list(map(int, [i.replace('m²', '').strip() for i in Metragem if 'm²' in i]))
BancoDeDados = pd.DataFrame(data={"col1": MetragemAjustada, "col2": AluguelFixed})
BancoDeDados.to_csv("C:\\Users\\fernando.rezende\\OneDrive - ES Ltda\\Área de Trabalho/RobozapDataFrame.csv", sep=',',index=False) ```
解决方案
推荐阅读
- css - 我可以以某种方式覆盖特定孩子的父母风格吗?
- opayo - Opayo - 如何处理超时?
- php - 我们可以在 Laravel 迁移中的单个 DB::statement("Query 1; Query 2") 中使用多个 SQL 查询吗?
- python - FreeBSD Exec 格式错误 geckodriver / chromedriver 上的 Django Selenium
- css - 在字体大小上使用 ch(字符)单位
- java - 在模块 jetified-okhttp-3.12.0 和 jetified-okhttp-ws-3.4.1 中发现重复的类 okhttp3.internal.ws.RealWebSocket
- java - 在 python 中将 base64 解码字符串转换为列表不会产生与 Java 数组输出相同的结果
- c++ - 如何编写以下问题 C++ 的 TMP 代码
- ios - 左上角问题中的 Swiftui Google Maps 用户标记
- branch.io - 首次安装应用时,Branch deeplink 不会将参数传递给 Android 应用