我编写了以下代码来获取某些页面的 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
文件结果。谢谢!
答案 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