将 html 保存到文件以供以后使用 Beautiful Soup 使用

Posted

技术标签:

【中文标题】将 html 保存到文件以供以后使用 Beautiful Soup 使用【英文标题】:Save html to file to work with later using Beautiful Soup 【发布时间】:2021-06-03 22:21:12 【问题描述】:

我正在用 Beautiful Soup 做很多工作。但是,我的主管不希望我通过网络“实时”完成工作。相反,他希望我从网页下载所有文本,然后再进行处理。他想避免网站上的重复点击。

这是我的代码:

import requests
from bs4 import BeautifulSoup

url = 'https://scholar.google.com/citations?user=XpmZBggAAAAJ' 
page = requests.get(url)
soup = BeautifulSoup(page.text, 'lxml')

我不确定是否应该将“页面”保存为文件,然后将其导入 Beautiful Soup,或者是否应该将“汤”保存为文件以供稍后打开。我也不知道如何以一种可以像从 Internet 上“实时”访问的方式将其保存为文件。我对 Python 几乎一无所知,所以我需要一个绝对最简单和最简单的过程。

【问题讨论】:

【参考方案1】:

所以保存汤会...很难,而且根据我的经验(如果有兴趣,请阅读有关pickleing 流程的更多信息)。您可以按如下方式保存页面:

page = requests.get(url)
with open('path/to/saving.html', 'wb+') as f:
    f.write(page.content)

然后,当你想对其进行分析时:

with open('path/to/saving.html', 'rb') as f:
    soup = BeautifulSoup(f.read(), 'lxml')

反正就是这样。

【讨论】:

好的,它正在工作。我不得不使用 html_file = open('saving.html', 'wb') 并且它起作用了。谢谢!【参考方案2】:

以下代码遍历url_list并将所有响应保存到列表all_pages中,该列表存储到response.pickle文件中。

import pickle
import requests
from bs4 import BeautifulSoup

all_pages = []
for url in url_list:
    all_pages.append(requests.get(url))

with open("responses.pickle", "wb") as f:
    pickle.dump(all_pages, f)

然后,您可以稍后加载这些数据,“soupify”每个响应并使用它做任何您需要的事情。

with open("responses.pickle", "rb") as f:
    all_pages = pickle.load(f)

for page in all_pages:
    soup = BeautifulSoup(page.text, 'lxml')
    # do stuff

【讨论】:

我会看看这个。我知道每个条目都需要使用 ORS 保存为唯一的 JSON 文件。

以上是关于将 html 保存到文件以供以后使用 Beautiful Soup 使用的主要内容,如果未能解决你的问题,请参考以下文章

如何保存单个值并重新打开它们以供以后使用?

将大型 Python 数组保存到磁盘以供以后重复使用 --- hdf5?还有啥方法?

如何保存链接 html 并将其转移到另一个页面以供以后使用?

将矩阵保存在磁盘上以供以后在 Matlab 中使用

是否可以保存带有参数的函数指针以供以后使用?

将字符串保存在 java 文件中以供以后运行 jar?试图制作一个字符串来告诉我的 jar 是不是被激活