Noob здесь. Я пытаюсь скрести результаты поиска с этого сайта: http://www.mastersportal.eu/search/?q=di-4|lv-master&order=relevanceBeautifulSoup Скребок: загрузка div вместо содержимого
Я использую Питон BeautifulSoup
import csv
import requests
from BeautifulSoup import BeautifulSoup
for numb in ('0', '69'):
url = ('http://www.mastersportal.eu/search/?q=ci-30,11,10,3,4,8,9,14,15,16,17,34,1,19|di-4|lv-master|rv-1&start=' + numb + '0&order=tuition_eea&direction=asc')
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html)
table = soup.find('div', attrs={'id': 'StudySearchResults'})
lista = []
for i in table.findAll('h3'):
lista.append(h3.string)
print(table.prettify())
Я хочу, чтобы получить чистые данные с базовой информацией о Master (на данный момент только имя). URL-адрес, который я использую здесь, предназначен для отфильтрованных исследований на веб-сайте, и цикл для продолжения со страницами должен быть в порядке.
Однако результаты:
<div id="StudySearchResults">
<div style="display:none" id="TrackingSearchValue" class="TrackingSearchValue" data-search=""></div>
<div style="display:none" id="SearchViewEvent" class="TrackingEvent TrackingNoLocation" data-type="srch" data-action="view" data-id=""></div>
<div id="StudySearchResultsStudies" class="TrackingLinkedList" data-start="" data-list-type="study" data-type="rslts">
<!-- Wait pane, just here to make sure there is no white page -->
<div id="WaitPane" class="WaitPane">
<img src="http://www.mastersportal.eu/Modules/Results/Resources/Throbber.gif" />
<span>Loading search results...</span>
</div>
</div>
</div>
Почему содержание не отображается, но только загрузка DIV? Просматривая, я чувствую, что это связано с тем, как сайт обрабатывает данные с помощью JavaScript, для Python существует нечто вроде запроса AJAX? (или каким-либо другим способом сказать скребку дождаться загрузки страницы?)
Попробуйте 'h3.get_text()' вместо 'h3.string'. [Docs] (http://www.crummy.com/software/BeautifulSoup/bs4/doc/#get-text) – Obsidian
Страница делает запросы ajax для получения данных json в формате, вам нужно напрямую обращаться к конечным точкам api (проверьте вкладку сети в Chrome devtools) –
что вы пытаетесь получить со страницы, что такое «мастер»? –