将一个转化为 string 的 list 存入 txt 时候报错,存储函数如下:
def saveFile(data, name):
path = "E:\\sxks\\JavaProblems\\" + name + ".txt"
data.encode("utf-8")
f = open(path, 'wb+')
f.write(data)
f.close()
list 转化 string 代码如下:
sdata = []
for p in list:
sdata.append(p.text)
s = '\n'.join(sdata)
str(sdata)
也尝试过了,错误依旧, 请问是什么问题?
完整代码如下:
import urllib.request
from urllib.parse import urljoin
import time
from bs4 import BeautifulSoup
def saveFile(data, name):
path = "E:\\sxks\\JavaProblems\\" + name + ".txt"
print(path)
data.encode("utf-8")
f = open(path,'wb')
f.write(data)
f.close()
urllist=[]
for i in range(1,8):
if i==1:
urlx="http://www.233.com/ncre2/JAVA/moniti/index.html"
urllib.parse.quote(urlx)
urllist.append(urlx)
break
urlx="http://www.233.com/ncre2/JAVA/moniti/index0"+i+".html"
urllib.parse.quote(urlx)
urllist.append(urlx)
for url in urllist:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
req = urllib.request.Request(url=url, headers=headers)
res = urllib.request.urlopen(req)
res.encoding = 'utf-8'
data = res.read()
soup = BeautifulSoup(data, "html.parser")
lista = []
lista = soup.select('ul.fl.f14.list-box.best-list.mt10 li a')
print("result len is", len(lista))
urls = []
for li in lista:
urls.append(li['href'])
for r in urls:
req = urllib.request.Request(url=r, headers=headers)
res = urllib.request.urlopen(req)
data = res.read()
soup = BeautifulSoup(data, "html.parser")
name = soup.select('h2')
listp = []
listp = soup.select('.newsArea-2nd-PageWord p')
sdata = []
for p in listp:
sdata.append(p.text)
s = '\n'.join(sdata)
str(s)
saveFile(s, name)
print(name[0].text + "保存成功")
time.sleep(1)
time.sleep(1)
打印 s
的类型确实是 str
你还是把完整代码和报错贴出来吧,这么前后不搭的看不什么.比如那个for循环里的
list
是什么,里面是什么数据?另外
list
跟内置类重名了两个错误:
1.
saveFile(s,name)
这里
name
还是一个tag的list对象,需要name[0].text
2.
data.encode('utf-8')
这里需要重新赋值一下,encode()是不会改变原来的字符串的(字符串是不可变对象)
data = data.encode('utf-8')