Python 从使用相同标签的网站中的html标签中提取价格

Python 从使用相同标签的网站中的html标签中提取价格,python,html,web-scraping,beautifulsoup,Python,Html,Web Scraping,Beautifulsoup,明天凌晨2点,我将发布这个问题和答案。。。事先非常抱歉 我正在从这个特定的页面上抓取网页: 我所遇到的困难是在使用了很多次的标签之间刮取信息,基本上使它们成为千分之一 以下是我需要的代码部分(我需要价格): € 1.340.000 这是我从同一个网站上获取信息的代码,上面有一个标签,但是这个标签的类型是单数的,很容易找到 while pagina <= temp: if pagina == 1: soup = BeautifulSoup(requests.g

明天凌晨2点,我将发布这个问题和答案。。。事先非常抱歉

我正在从这个特定的页面上抓取网页:

我所遇到的困难是在使用了很多次的标签之间刮取信息,基本上使它们成为千分之一

以下是我需要的代码部分(我需要价格):

  • € 1.340.000
这是我从同一个网站上获取信息的代码,上面有一个标签,但是这个标签的类型是单数的,很容易找到

while pagina <= temp:
    if pagina == 1:
        soup = BeautifulSoup(requests.get(userurl).content, "html.parser")
        for link in soup.select("[data-row-link]"):
            list_links.append(link["href"])
            list_titles.append(link.get_text(strip=True))
        #-----------------
        for link in soup.select(("lif__pricing")):
            list_prices.append(link.get_text(strip=True))
        #-----------------
        pagina += 1
    else:
        userurl = userurl + "&pag=" + str(pagina)
        soup = BeautifulSoup(requests.get(userurl).content, "html.parser")
        for link in soup.select("[data-row-link]"):
            list_links.append(link["href"])
            list_titles.append(link.get_text(strip=True))
        # -----------------
        for link in soup.select(("lif__pricing")):
            list_prices.append(link.get_text(strip=True))
        # -----------------
        pagina += 1

while pagina您可以使用此代码抓取所有页面并提取链接、标题和价格+创建数据框并将其保存到csv:

import requests
import pandas as pd
from bs4 import BeautifulSoup


url = "https://www.immobiliare.it/vendita-case/roma/parioli-flaminio/?criterio=rilevanza&pag={page}"

list_links, list_titles, list_prices = [], [], []
page = 1
while True:
    print("Page {}...".format(page))

    soup = BeautifulSoup(
        requests.get(url.format(page=page)).content, "html.parser"
    )

    links = soup.select("[data-row-link]")
    if not links:
        break

    for link in links:
        l, t, p = (
            link["href"],
            link.get_text(strip=True),
            link.find_next(
                class_=["lif__pricing", "lif__pricing--wrapped"]
            ).get_text(strip=True, separator=" "),
        )

        list_links.append(l)
        list_titles.append(t)
        list_prices.append(p)

        print(l, t, p, sep="\n")
        print("-" * 80)

    page += 1

df = pd.DataFrame(
    {
        "title": list_titles,
        "price": list_prices,
        "link": list_links,
    }
)
print(df)
df.to_csv("data.csv", index=False)
印刷品:

第1页。。。
https://www.immobiliare.it/annunci/87572320/
罗马帕里奥利皮塔戈拉三联广场
€ 660.000
--------------------------------------------------------------------------------
https://www.immobiliare.it/annunci/87574354/
罗马弗拉米尼奥佩林德尔瓦加广场
€ 430.000
--------------------------------------------------------------------------------
https://www.immobiliare.it/annunci/87573756/
罗马帕里奥利皮塔戈拉三联广场
€ 660.000
--------------------------------------------------------------------------------
https://www.immobiliare.it/annunci/87578264/
罗马平西亚诺阿达别墅20号加埃塔诺·多尼泽蒂公寓
€ 695.000
--------------------------------------------------------------------------------
等等
然后保存
data.csv
(来自LibreOffice的屏幕截图):


如果我明天再回答,我很抱歉,我真的很想解决这个问题。再次感谢和抱歉<代码>用于汤中的链接。选择(“.lif\u定价”)
非常感谢!它工作得很好!
import requests
import pandas as pd
from bs4 import BeautifulSoup


url = "https://www.immobiliare.it/vendita-case/roma/parioli-flaminio/?criterio=rilevanza&pag={page}"

list_links, list_titles, list_prices = [], [], []
page = 1
while True:
    print("Page {}...".format(page))

    soup = BeautifulSoup(
        requests.get(url.format(page=page)).content, "html.parser"
    )

    links = soup.select("[data-row-link]")
    if not links:
        break

    for link in links:
        l, t, p = (
            link["href"],
            link.get_text(strip=True),
            link.find_next(
                class_=["lif__pricing", "lif__pricing--wrapped"]
            ).get_text(strip=True, separator=" "),
        )

        list_links.append(l)
        list_titles.append(t)
        list_prices.append(p)

        print(l, t, p, sep="\n")
        print("-" * 80)

    page += 1

df = pd.DataFrame(
    {
        "title": list_titles,
        "price": list_prices,
        "link": list_links,
    }
)
print(df)
df.to_csv("data.csv", index=False)