Я пытаюсь собрать информацию с этой страницы: http://www.gatesfoundation.org/How-We-Work/Quick-Links/Grants-Database#q/page=2

В частности, я пытаюсь собрать информацию из таблицы, используя BeautifulSoup. У меня есть следующий код:

pagelink = 'http://www.gatesfoundation.org/How-We-Work/Quick-Links/Grants-Database#q/page=2'
page = urllib2.urlopen(pagelink)
soup = BeautifulSoup(page)
soup.prettify()
print soup

Когда я делаю это, содержимое таблицы (внутри тега "tablebody") не отображается. Почему это? Как мне извлечь информацию из этой таблицы?

0
CameronK 13 Янв 2017 в 04:18

3 ответа

Эта страница отображается с помощью JavaScript, запросы или urllib не могут обрабатывать JS, они будут получать только HTML-код. И, как вы можете видеть, нет таблицы.

Disable the JS in your browser

Используйте селен или подражайте запросам этой страницы.

0
宏杰李 13 Янв 2017 в 04:42

Вы не сможете использовать BeautifulSoup4 по назначению, поскольку страница отображается с помощью JavaScript.

Вы можете использовать dryscrape или selenium. На мой взгляд, Dryscrape удобнее для пользователя, но официально не поддерживается в Windows.

Кроме того, посмотрите avis ' отличный ответ на этот вопрос:

https://stackoverflow.com/a/26440563/1429776

0
Community 23 Май 2017 в 12:08

Вы можете получить его с dryscrape примерно так:

import dryscrape
from bs4 import BeautifulSoup

ses = dryscrape.Session()
ses.visit("http://www.gatesfoundation.org/How-We-Work/Quick-Links/Grants-Database#q/page=2")
s = BeautifulSoup(ses.body())
s2 = s.select("table.table.push-bottom")[0]
print s2
2
MYGz 13 Янв 2017 в 06:36