BeautifulSoup:保存循环结果 HTML 的每次交互

时间:2021-05-12 21:02:40

标签: python html web-scraping beautifulsoup

我编写了以下代码来获取某些页面的 html,根据我可以在 URL 中输入的某些 id。我想然后将每个 html 保存为所需路径中的 .txt 文件。这是我为此目的编写的代码:

import urllib3
import requests
from bs4 import BeautifulSoup  
import pandas as pd


def get_html(id):
    url = f'https://www.myurl&id={id}'
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "html.parser")
    html=print(soup)
    return html
 
id = ['11111','22222']

for id in id:
    path=f'D://MyPath//{id}.txt'
    a = open(path, 'w')
    a.write(get_html(id))
    a.close()

虽然生成 html 页面非常简单。此循环工作不正常。我收到以下消息 TypeError: write() argument must be str, not None。这意味着第一个循环以某种方式未能生成要保存为文本文件的字符串。

我想说,在原始数据中,我有大约 9k 个 ID,因此您也可以告诉我,您是否会推荐一个大的 .txt 来存储所有的数据,而不是几个 csv 文件结果。谢谢!

1 个答案:

答案 0 :(得分:2)

问题是,print() 返回 None。改用 str()

def get_html(id):
    url = f'https://www.myurl&id={id}'
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "html.parser")
    #html=print(soup)  <-- print() returns None
    return str(soup)   # <--- convert soup to string