【发布时间】:2016-02-21 10:37:21
【问题描述】:
这里是菜鸟。 我正在尝试从该网站抓取搜索结果:http://www.mastersportal.eu/search/?q=di-4|lv-master&order=relevance
我正在使用 python 的 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 -
该页面正在发出ajax请求以获取格式的数据json,您需要直接查询api端点(检查Chrome devtools中的网络选项卡)
-
你想从页面中得到什么,什么是“master”?
-
@WalidSaad 谢谢,但我不知道如何从那开始,你对我可以读到的关于如何使用 Chrome devtools 刮擦的东西有什么建议吗?
标签: javascript python html web-scraping beautifulsoup