Extracting links and ads Titles from B4S filtered list

Viewed 67

I'm trying to filter what I extract from a website in 2 lists: one for the links and one for the titles of the ads connected to the links.

Here is my code:

import re as standardre
from operator import contains
import requests
import bs4 as bs
import string


def raccogliannunci():
    listatitoloannuncio = []
    listalinkannuncio = []

    # r = input("Metti il link: ")
    r = 'https://www.immobiliare.it/vendita-case/roma/parioli-flaminio/?criterio=rilevanza'
    page = requests.get(r)
    soup = bs.BeautifulSoup(page.content, features="html.parser")
    lista_annunci = soup.find_all(href=standardre.compile("annunci"))


    for line in lista_annunci:
            listatitoloannuncio.append(line)

    return listatitoloannuncio

Code explained:

The functions raccogliannunci() opens up the link (the user will provide it when the program works) and requests the page desired by the user. It then finds all the code that contains the word "annunci" (ads in Italian) and places them in this list that BS4 creates. At this point I'm having problems filtering the exact info I want in 2 lists.

  • In the first list (listatitoloannuncio) I want the Title associated with the link, here is a snippet of the website:

<a href="https://www.immobiliare.it/annunci/86565462/" title="Appartamento via Ettore Ximenes, Parioli, Roma" id="link_ad_86565462" data-row-link=""> Appartamento via Ettore Ximenes, Parioli, Roma </a>

So here I want the "Appartamento via Ettore Ximenes, Parioli, Roma" and do this for every line in the list.

  • For the second list I want the links to be entered. The links have all the word "annunci" in common, that is why I search for them like that in the first place.

I tried this already:

for line in lista_annunci:
    if contains("href", str(line)):
        listatitoloannuncio.append(line)

Thanks and I really hope you can help me out.

1 Answers

You can use this example how to extract links/titles from the site:

import requests
from bs4 import BeautifulSoup


url = "https://www.immobiliare.it/vendita-case/roma/parioli-flaminio/?criterio=rilevanza"
soup = BeautifulSoup(requests.get(url).content, "lxml")

list_links = []
list_titles = []
for link in soup.select("[data-row-link]"):
    list_links.append(link["href"])
    list_titles.append(link.get_text(strip=True))

# print the links/titles
for l, t in zip(list_links, list_titles):
    print(t)
    print(l)
    print("-" * 80)

Prints:

Appartamento via Ettore Ximenes, Parioli, Roma
https://www.immobiliare.it/annunci/86565462/
--------------------------------------------------------------------------------
Quadrilocale via Sebastiano Conca, Parioli, Roma
https://www.immobiliare.it/annunci/86238674/
--------------------------------------------------------------------------------
Appartamento viale Bruno Buozzi, Parioli, Roma
https://www.immobiliare.it/annunci/85740376/
--------------------------------------------------------------------------------
Appartamento via Giovanni Antonelli, Euclide, Roma
https://www.immobiliare.it/annunci/86782432/
--------------------------------------------------------------------------------
Quadrilocale piazza Fiume, Pinciano - Villa Ada, Roma
https://www.immobiliare.it/annunci/86782424/
--------------------------------------------------------------------------------
Appartamento piazza Giuseppe Verdi, Pinciano - Villa Ada, Roma
https://www.immobiliare.it/annunci/82074388/
--------------------------------------------------------------------------------
Appartamento via Giacinta Pezzana, Parioli, Roma
https://www.immobiliare.it/annunci/85787572/
--------------------------------------------------------------------------------
Appartamento via Principessa Clotilde, Roma
https://www.immobiliare.it/annunci/75914256/
--------------------------------------------------------------------------------
Appartamento via Barnaba Oriani, Parioli, Roma
https://www.immobiliare.it/annunci/83786968/
--------------------------------------------------------------------------------
Quadrilocale via Domenico Chelini, Euclide, Roma
https://www.immobiliare.it/annunci/81425967/
--------------------------------------------------------------------------------
Appartamento largo Tenente Bellini, Parioli, Roma
https://www.immobiliare.it/annunci/72613084/
--------------------------------------------------------------------------------
Appartamento via Lovanio, Pinciano - Villa Ada, Roma
https://www.immobiliare.it/annunci/84748132/
--------------------------------------------------------------------------------
Appartamento via dei Monti Parioli, Parioli, Roma
https://www.immobiliare.it/annunci/79789179/
--------------------------------------------------------------------------------
Bilocale piazzale Flaminio, Flaminio, Roma
https://www.immobiliare.it/annunci/86668482/
--------------------------------------------------------------------------------
Quadrilocale via Tevere, Pinciano - Villa Ada, Roma
https://www.immobiliare.it/annunci/85339151/
--------------------------------------------------------------------------------
Appartamento via Giuseppe Cuboni, Parioli, Roma
https://www.immobiliare.it/annunci/85135582/
--------------------------------------------------------------------------------
Appartamento via Claudio Monteverdi, Pinciano - Villa Ada, Roma
https://www.immobiliare.it/annunci/84672878/
--------------------------------------------------------------------------------
Appartamento viale Liegi, Pinciano - Villa Ada, Roma
https://www.immobiliare.it/annunci/83097951/
--------------------------------------------------------------------------------
Quadrilocale via Giacinta Pezzana, Parioli, Roma
https://www.immobiliare.it/annunci/82074974/
--------------------------------------------------------------------------------
Quadrilocale via Luisa Di Savoia, Roma
https://www.immobiliare.it/annunci/86569670/
--------------------------------------------------------------------------------
Bilocale viale Bruno Buozzi, Euclide, Roma
https://www.immobiliare.it/annunci/86238782/
--------------------------------------------------------------------------------
Appartamento largo Tenente Bellini, Parioli, Roma
https://www.immobiliare.it/annunci/86238654/
--------------------------------------------------------------------------------
Quadrilocale via Pinciana, Pinciano - Villa Ada, Roma
https://www.immobiliare.it/annunci/76009694/
--------------------------------------------------------------------------------
Quadrilocale piazzale Brasile, Roma
https://www.immobiliare.it/annunci/86735656/
--------------------------------------------------------------------------------
Quadrilocale Lungotevere Flaminio, Flaminio, Roma
https://www.immobiliare.it/annunci/85674084/
--------------------------------------------------------------------------------
Related