Rastreador de iniciante (3): Use selênio para simular o navegador para obter páginas da web dinâmicas (2) Projeto Selenium combate real - dados de aluguel de curto prazo de Shenzhen

O objetivo deste projeto é obter as primeiras cinco páginas de dados de imóveis para aluguel de curto prazo no Airbnb em Shenzhen.
URL de destino: dados de aluguel de curto prazo do Airbnb Shenzhen
Insira a descrição da imagem aqui

1. Analise as tags de código HTML do site

1. Clique com o botão direito em qualquer lugar da página da web> Verificar

Insira a descrição da imagem aqui

2. Encontre o código HTML correspondente a "All House Data"

Insira a descrição da imagem aqui
O endereço para encontrar todos os dados da casa é: div.gigle7

3. Encontre o código HTML correspondente a "Preço da casa"

Insira a descrição da imagem aqui
O endereço para encontrar o preço da casa é: span.krjbj

4. Encontre o código HTML correspondente a "Pontuação da casa, comentários da casa"

Insira a descrição da imagem aqui
Encontre a pontuação da casa, o endereço do número da revisão da casa é: span._1clmxfj

5. Encontre o código HTML correspondente a "House Name"

Insira a descrição da imagem aqui
O endereço para encontrar o nome da casa é: div._qrfr9x5

6. Encontre o código HTML correspondente a "tipo de casa, número de quartos"

Insira a descrição da imagem aqui
O endereço para encontrar o tipo de casa e o número de quartos é: span._faldii7

Dois, escreva o código de rastreamento

1. Use selênio para obter os dados da primeira página do Airbnb

from selenium import webdriver
import time

driver = webdriver.Firefox()
#我已将其配置到环境变量中,若读者没有,请在上面括号中加入你电脑中geckodriver.exe程序的地址
#在虚拟浏览器中打开 Airbnb 页面
driver.get("https://zh.airbnb.com/s/Shenzhen--China/homes")

#找到页面中所有的出租房
rent_list = driver.find_elements_by_css_selector('div.gigle7')

#对于每一个出租房
for eachhouse in rent_list: #使用for循环提取每个出租房的信息
    #找到评论数量
    try:
        comment = eachhouse.find_element_by_css_selector('span._1clmxfj')
        comment = comment.text
    except:
        comment = 0
    
    #找到价格
    price = eachhouse.find_element_by_css_selector('span.krjbj')
    price = price.text.replace("每晚", "").replace("价格", "").replace("\n", "")
    
    #找到名称
    name = eachhouse.find_element_by_css_selector('div._qrfr9x5')
    name = name.text
    
    #找到房屋类型,房间数量
    details = eachhouse.find_element_by_css_selector('span._faldii7')
    details = details.text
    house_type = details.split(" · ")[0]
    bed_number = details.split(" · ")[1]
    print (comment, price, name, house_type, bed_number)

O resultado é semelhante:
Insira a descrição da imagem aqui

2. Obtenha os dados das primeiras 5 páginas

Clique na segunda página, o URL se torna:

Adicionar descrição do link

Clique na terceira página, a página da web se torna:

Adicionar descrição do link

Clique na quarta página, a página da web se torna:

Adicionar descrição do link

Verificou-se que apenas items_offset mudou de 20 para 40 e depois para 60. Você pode virar a página apenas alterando o valor de items_offset regularmente por meio de um loop for.

from selenium import webdriver
import time

driver = webdriver.Firefox()
#我已将其配置到环境变量中,若读者没有,请在上面括号中加入你电脑中geckodriver.exe程序的地址
for i in range(0,5):
    link = "https://zh.airbnb.com/s/Shenzhen--China/homes?items_offset=" + str(i *18)
    driver.get(link)
    rent_list = driver.find_elements_by_css_selector('div._gig1e7')

#对于每一个出租房
for eachhouse in rent_list: #使用for循环提取每个出租房的信息
    #找到评论数量
    try:
        comment = eachhouse.find_element_by_css_selector('span._1clmxfj')
        comment = comment.text
    except:
        comment = 0
    
    #找到价格
    price = eachhouse.find_element_by_css_selector('span.krjbj')
    price = price.text.replace("每晚", "").replace("价格", "").replace("\n", "")
    
    #找到名称
    name = eachhouse.find_element_by_css_selector('div._qrfr9x5')
    name = name.text
    
    #找到房屋类型,房间数量
    details = eachhouse.find_element_by_css_selector('span._faldii7')
    details = details.text
    house_type = details.split(" · ")[0]
    bed_number = details.split(" · ")[1]
    print (comment, price, name, house_type, bed_number)

O resultado é semelhante:
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/qq_45154565/article/details/109763657
Recomendado
Clasificación