python - 使用 BeautifulSoup 从网站中抓取每个元素
问题描述
我编写了一个用于抓取一个房地产网站的代码。这是链接:
https://www.nekretnine.rs/stambeni-objekti/stanovi/lista/po-stranici/10/
从这个页面我只能得到公寓的位置、大小和价格,但是是否有可能编写一个代码,将在每个公寓的页面上并从中刮取价值,因为它包含更多信息。检查此链接:
我已经发布了一个代码。我注意到当我点击特定的房地产时我的网址发生了变化。例如:
arena-bulevar-arsenija-carnojevica-97m-2-lode-energoprojekt/NkvJK0Ou5tV/
我教过如何创建 for 循环,但无法知道它是如何变化的,因为它最后有一些 id 号:
NkvJK0Ou5tV
这是我拥有的代码:
from bs4 import BeautifulSoup
import requests
website = "https://www.nekretnine.rs/stambeni-objekti/stanovi/lista/po-stranici/10/"
soup = requests.get(website).text
my_html = BeautifulSoup(soup, 'lxml')
lokacija = my_html.find_all('p', class_='offer-location text-truncate')
ukupna_kvadratura = my_html.find_all('p', class_='offer-price offer-price--invert')
ukupna_cena = my_html.find_all('div', class_='d-flex justify-content-between w-100')
ukupni_opis = my_html.find_all('div', class_='mt-1 mb-1 mt-lg-0 mb-lg-0 d-md-block offer-meta-info offer-adress')
for lok, kvadratura, cena_stana, sumarno in zip(lokacija, ukupna_kvadratura, ukupna_cena, ukupni_opis):
lok = lok.text.split(',')[0] #lokacija
kv = kvadratura.span.text.split(' ')[0] #kvadratura
jed = kvadratura.span.text.split(' ')[1] #jedinica mere
cena = cena_stana.span.text #cena
sumarno = sumarno.text
datum = sumarno.split('|')[0].strip()
status = sumarno.split('|')[1].strip()
opis = sumarno.split('|')[2].strip()
print(lok, kv, jed, cena, datum, status, opis)
解决方案
您可以从 div class="placeholder-preview-box ratio-4-3" 获取 href。从这里您可以找到 URL。
推荐阅读
- python - 如何在 Python 3 中使用 REQUEST 获取 HTTPS url?
- scala - 有没有办法在Scala中匹配(switch case)lambda表达式?
- java - 如何修复“classNotFoundException”?
- c# - 如何将 GhostScript 的路径传递给 iText7 CompareTool 功能?
- mongodb - 提供用户名和密码时的 mongorestore 警告
- python - 无法使用 Python 请求登录 - 未知错误
- c# - 我怎样才能使我的代码线程安全或者它是线程安全的?
- python - 计算 dcgan 中的损失
- java - 将脚本转换为 exe 时无法执行我的脚本
- json - 如何在 json-schema 中的“then”中表达项目属性?