我是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)中。
答案 0 :(得分:1)
您正在获取此[],因为您要抓取的数据来自于API,该API会在您加载网页后加载,因此您要访问的页面不包含该类
您可以打开浏览器控制台并按照屏幕快照中的说明检查网络,在其中找到要抓取的数据,因此您必须请求该URL来获取数据
您可以在“预览”标签中检索此URL中的数据,您可以查看所有数据。
如果您也很了解python,也可以使用它来抓取数据
答案 1 :(得分:0)
即使您可以在元素检查器中看到'tbody', class_ = 'TableBody-kSbjpE jGqIxa'
,但您发出的请求也不包含此类。亲自看看print(soup.prettify())
。这很可能是因为您未请求正确的网址。
这可能不是您所知道的,但仅供参考:
实际上,您不需要使用BeautifulSoup进行抓取,您可以从API获取所有可用数据集的列表。安装并配置好数据集后,即可获取数据集:kaggle datasets download -d
。如果您希望继续使用API,请参见以下更多信息:https://github.com/Kaggle/kaggle-api