python - 如何根据从网站上抓取的数据创建数据框?
问题描述
我正在尝试从职位发布数据中抓取网站,输出如下所示:
[{'job_title': 'Junior Data Scientist','company': '\n\n BBC', summary': "\n 我们现在正在寻找一名初级数据科学家来与我们的营销和受众团队一起工作伦敦。数据科学团队负责设计...", 'link': 'www.jobsite.com',
'summary_text': "职位介绍\n想象一下,如果 Netflix、赫芬顿邮报、ESPN 和 Spotify 都推出了合二为一……等
我想创建一个如下所示的数据框或 CSV:
现在,这是我正在使用的循环:
for page in pages:
source = requests.get('https://www.jobsite.co.uk/jobs?q=data+scientist&start='.format()).text
soup = BeautifulSoup(source, 'lxml')
results = []
for jobs in soup.findAll(class_='result'):
result = {
'job_title': '',
'company': '',
'summary': '',
'link': '',
'summary_text': ''
}
使用循环后,我只打印结果。
在数据框中获取输出的好方法是什么?谢谢!
解决方案
查看pandas Dataframe API。有几种方法可以初始化数据框
- 字典列表
- 列表列表
您只需要将列表或字典附加到全局变量,就可以了。
results = []
for page in pages:
source = requests.get('https://www.jobsite.co.uk/jobs?q=data+scientist&start='.format()).text
soup = BeautifulSoup(source, 'lxml')
for jobs in soup.findAll(class_='result'):
result = {
'job_title': '', # assuming this has value like you shared in the example in your question
'company': '',
'summary': '',
'link': '',
'summary_text': ''
}
results.append(result)
# results is now a list of dictionaries
df= pandas.DataFrame(results)
另一项建议是,不要考虑将其转储到同一程序中的数据框中。首先将所有 HTML 文件转储到一个文件夹中,然后再次解析它们。这样,如果您需要从以前没有考虑过的页面中获得更多信息,或者如果程序由于某些解析错误或超时而终止,则工作不会丢失。将解析与爬取逻辑分开。
推荐阅读
- java - 参数中带有类的Java调用函数
- c# - 为什么不可见的虚拟 ListView 的项目没有索引?
- flutter - Navigator 或 SlideTransition 用于从下到上显示屏幕
- swift - 如何制作多页 Swift Playground
- python - 如何在 kv 屏幕中锁定 Y 而不是 X?
- java - 使用spring boot获取外部api给null
- c - 通过并行处理获取数组的总和
- python - Matplotlib如何随时间点绘制可变点数?
- css - 如何删除 Firefox 中的地址栏并仍然通过 command/control-l 使用它?
- python - 训练 GAN 时 keras 中的内存泄漏