Estoy tratando de usar una sopa hermosa para tomar el código HTML de un sitio web. En lugar de agarrar el href y hacer clic en "página siguiente", me gustaría sopa hermosa para acceder sólo una página a la vez. Así que si una url de una página es:

www.website.com/p1

y mi código para tomar el código HTML de la página 2 es:

from bs4 import BeautifulSoup
from requests import get
import pandas as pd
import itertools
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

headers = {
   }

website = "https://www.website.com/this/that/p2"
response = get(website, headers=headers)
print(response)
html_soup = BeautifulSoup(response.text, 'html.parser')

house_containers = html_soup.find_all('div', class_="search-result-content")

Me gustaría crear nuevas urls basadas en la original en el siguiente formato:

count = 2
url = "https://www.website.com/this/that/p"
while count < 65:
    print(url + str(count))
    count += 1

y luego ejecutar el mismo proceso para cada url creada, ya sea añadiendo el resultado a house_containers o creando una nueva variable en cada iteración como house_containers_page/n

Si es posible, También me gustaría agregar tiempos de sueño entre cada iteración (para evitar captchas y tal).

¿Cómo puedo entrar en una hermosa sopa dentro del bucle while y añadir los resultados a house_containers?

0
Brunna T. 4 nov. 2019 a las 07:36

1 respuesta

house_containers se comporta como una lista normal para que pueda crear una lista vacía al inicio y luego extenderla con una nueva lista desde house_containers.

Puedes comenzar incluso con count = 1

url = "https://www.website.com/this/that/p"

houses = [] 

for page in range(1, 65):
    webpage = url + str(page)
    response = get(website, headers=headers)

    html_soup = BeautifulSoup(response.text, 'html.parser')
    house_containers = html_soup.find_all('div', class_="search-result-content")

    houses.extend(house_containers)
0
furas 4 nov. 2019 a las 05:09