将 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】:所以保存汤会...很难,而且根据我的经验(如果有兴趣,请阅读有关pickle
ing 流程的更多信息)。您可以按如下方式保存页面:
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?还有啥方法?