从“纽约时报”网站搜索文章并获取空结果集。我的目标是获取h3项目的网址和文本。当我运行这个时,我得到一个空集。打印部分刮擦显示我走在正确的道路上...... 目标网址 - http://query.nytimes.com/search/sitesearch/?action=click&contentCollection®ion=TopBar&WT.nav=searchWidget&module=SearchSubmit&pgtype=sectionfront#/san+diego/24hours
url = "http://query.nytimes.com/search/sitesearch/?action=click&contentCollection®ion=TopBar&WT.nav=searchWidget&module=SearchSubmit&pgtype=sectionfront{data}"
html = urlopen(url.format(data="#"+'/san+diego/24hours'))
soup = BeautifulSoup(html.read().decode('utf-8'),"lxml")
section = soup.find("ol",class_='searchResultsList flush')
items = section.find_all('li', class_="story")
print items
答案 0 :(得分:1)
HTML确实不包含数据。查看Chrome开发者工具中的“网络”标签,您可以看到搜索结果是通过此网址的AJAX查询获取的:http://query.nytimes.com/svc/add/v1/sitesearch.json?q=san%20diego&begin_date=24hoursago&facet=true
以下是发现:
的屏幕截图您必须打开开发人员工具(尝试查看菜单),选择网络选项卡,重新加载页面,然后环顾四周。 XHR = XmlHttpRequest,这些天被称为AJAX请求。这意味着一些Javascript向服务器询问数据。
这是JSON,所以你真的很幸运,因为这比解析HTML要好得多。