美丽汤返回空列表

时间:2018-08-14 11:03:48

标签: python web-scraping beautifulsoup

我是webscrapping的新手。因此,我被赋予了从以下各项中提取数据的任务:Here

我正在选择“评论”的数据集。以下是我的剪贴代码。

import requests
from bs4 import BeautifulSoup
url = 'https://www.kaggle.com/hacker-news/hacker-news'
headers = {'User-Agent' : 'Mozilla/5.0'}
response = requests.get(url, headers = headers)
response.status_code
response.content
soup = BeautifulSoup(response.content, 'html.parser')
soup.find_all('tbody', class_ = 'TableBody-kSbjpE jGqIxa')

当我尝试执行最后一条命令时,它返回:[]

所以,我被困在这里。我知道我们可以从内核中获取数据,但是出于练习目的,我哪里出错了?我选错了课吗?我想抓取数据并将其保存到CSV文件或No-SQL数据库(首选Cassandra)中。

2 个答案:

答案 0 :(得分:1)

您正在获取此[],因为您要抓取的数据来自于API,该API会在您加载网页后加载,因此您要访问的页面不包含该类

您可以打开浏览器控制台并按照屏幕快照中的说明检查网络,在其中找到要抓取的数据,因此您必须请求该URL来获取数据

enter image description here

您可以在“预览”标签中检索此URL中的数据,您可以查看所有数据。

如果您也很了解python,也可以使用它来抓取数据

https://doc.scrapy.org/en/latest/intro/overview.html

答案 1 :(得分:0)

即使您可以在元素检查器中看到'tbody', class_ = 'TableBody-kSbjpE jGqIxa',但您发出的请求也不包含此类。亲自看看print(soup.prettify())。这很可能是因为您未请求正确的网址。

这可能不是您所知道的,但仅供参考: 实际上,您不需要使用BeautifulSoup进行抓取,您可以从API获取所有可用数据集的列表。安装并配置好数据集后,即可获取数据集:kaggle datasets download -d。如果您希望继续使用API​​,请参见以下更多信息:https://github.com/Kaggle/kaggle-api