2017-02-12 7 views
0

Я совершенно новый для веб-соскабливания. Я хочу очистить данные от here, в основном данные справа, в которых есть год, страна и ВВП стран.Как очистить все данные с этого сайта, используя Python

Мой код, как показано ниже:

from urllib.request import urlopen 
from bs4 import BeautifulSoup 
data = "http://databank.worldbank.org/data/reports.aspx?source=2&series=NY.GDP.MKTP.CD&country=#" 
page = urlopen(data) 

soup = BeautifulSoup(page,'html.parser') 
name_box = soup.find('div',attrs = {'class':'canvas'}) 
name = name_box.text.strip() 

print(name) 

я могу получить данные, однако, это только те, в верхней 10+.

Таким образом, мой вопрос будет заключаться в том, как это сделать для таких проблем, когда данные не находятся на самой странице (т. Е. Они были импортированы из других источников). Благодарим вас за любой ввод.

+1

поиск рендеринга javascript, проверка запросов с помощью инструментов разработчика Chrome или использование selenium – eLRuLL

+0

(1) В URL-адресе, который вы пытаетесь открыть, есть пробел. (2) Какие данные вы пытаетесь получить? –

+0

Спасибо, что указали, что это сайт: http://databank.worldbank.org/data/reports.aspx?source=2&series=NY.GDP.MKTP.CD&country=# иначе вы могли бы нажать «здесь» в вопрос. – learnandshare

ответ

0

Чаще всего, когда javascript загружает больше данных, он вызывает вызов конечной точке.

Когда вы звоните urlopen(data), вы звоните в конечную точку. Аналогичные вызовы выполняются в новых версиях python с использованием requests.get(data) или requests.post(data). Документация для urlopen имеет обширные примеры и использует. Если вы посмотрите на запрос, который делает javascript, он имеет много частей (заголовки, параметры, метод и т. Д.). Вы можете добавить эти части в свой запрос в urlopen, чтобы скопировать (имитировать) вызов, который делает javascript.

Если вы можете подражать этому звонку, тогда вы будете загружать данные из последующего вызова в свой суп. Затем вы можете проанализировать данные.

Если вы не можете имитировать этот звонок, то лучше всего использовать какой-нибудь браузер без браузера. Несколько наиболее используемых - Dryscrape и Selenium. Я лично предпочитаю Dryscrape.

Глядя на комментарии по вашему вопросу, я вижу, вы уже используете селен. Подобно свитке, когда этот прокрутка выполняется, она обычно делает последующие вызовы, о которых я упоминал ранее. Если вы можете имитировать их полностью (заголовки, параметры, qwargs и т. Д.), Вы можете заставить свой браузер загружать данные.

+0

Спасибо. Мне еще нужно попробовать селен, читал о том, как его использовать, прежде чем я начну пытаться решить свою проблему. Я хотел бы спросить, что вы имеете в виду, подражая призыву к конечной точке, есть ли какой-нибудь пример или термин непрофессионала? – learnandshare

+0

Я добавил разъяснение о конечных точках, запросах и urlopen. Надеюсь, это поможет. –

+0

Теперь это намного яснее. Благодарю. – learnandshare

2

Когда я перехожу к ссылке, есть меню, посвященное «Параметры загрузки». Почему бы просто не использовать это?

+0

Хотел бы я, но это мое задание. – learnandshare

+0

@austin Серьезно этот лучший ответ, который я даже видел в stackoverflow: D –

 Смежные вопросы

  • Нет связанных вопросов^_^