Разбор Airdna.co Использование Beautifulsoup - PullRequest
0 голосов
/ 09 мая 2018

Я пытаюсь очистить данные с сайта "Airdna.co". Я пытаюсь получить данные.Я управлял этим кодом, как показано ниже, но всегда получаю значение None:

#!/usr/bin/python
# -*- coding: utf-8 -*-

from bs4 import BeautifulSoup from bs4 
import NavigableString 
import requests import os, os.path, csv
                                                                                                                         url='https://www.airdna.co/market-data/app/fr/new-aquitaine/bordeaux/overview'

url = 'https://www.airdna.co/market-data/app/fr/new-aquitaine/bordeaux/overview'
response = requests.get(url)
encodedText = response.text.encode("latin-1")
soup = BeautifulSoup(encodedText, "html.parser") 
dl_data = soup.find_all("div",class_="overall-box__value ")

for data in list(zip(soup.find_all("div",class_="overall-box__value")[0::2],soup.find_all("div",class_="overall-box__value    ")[1::2],soup.find_all("div",class_="overall-box__value ")[2::2])):
    ADRate, ORate, Revenue = data
    ADRate = ADRate.string.encode('utf-8')
    ORate= ORate.string.encode('utf-8')
    Revenue = Revenue.string.encode('utf-8') 
    print ' , '.join([ADRate,ORate,Revenue])

Это ссылка на веб-сайт.

После отображения переменной супа японял, что тело пустое:

soup = BeautifulSoup(encodedText,"html.parser")

Кто-нибудь может показать и объяснить, как я это сделаю?

1 Ответ

0 голосов
/ 09 мая 2018

Данные на этой странице генерируются динамически с помощью JavaScript.Вам нужно будет использовать что-то вроде Selenium , чтобы очистить его.После того, как вы установили его, попробуйте запустить следующий скрипт:

from bs4 import BeautifulSoup
from selenium import webdriver

driver = webdriver.Firefox()
driver.get("https://www.airdna.co/market-data/app/fr/new-aquitaine/bordeaux/overview")

html = driver.page_source
soup = BeautifulSoup(html, "lxml")

values = soup.find_all("div", {"class" : "overall-box__value"})
target_list = []
for value in values:
    target_list.append(value.text)

output = ' , '.join(target_list)
print(output)

Это выдаст:

€73 , 78% , €1,192
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...