【问题标题】:Save html to file to work with later using Beautiful Soup将 html 保存到文件以供以后使用 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 几乎一无所知,所以我需要一个绝对最简单和最简单的过程。

【问题讨论】:

    标签: python html file save


    【解决方案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 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多