最近学习Python,我正在尝试做一个小练习。然后出现这个错误。
File "/Users/Alexis/.spyder-py3/temp.py", line 29, in <module>
f.write(txt+'\n')
TypeError: can't concat bytes to str
有谁能告诉我这里出了什么问题,拜托?
import requests
from bs4 import BeautifulSoup
import re
r=requests.get(url='http://news.qq.com/world_index.shtml')
soup=BeautifulSoup(r.text,'lxml')
f=open('/Users/Alexis/Desktop/news.text','w')
f.seek(0)
f.write('Today News')
news=soup.find_all('a',href=re.compile('http://news.qq.com/a/20170307/'))
for i in news:
txt=i.text.encode('utf-8').strip()
if txt=='':
continue
else:
u=i.attrs['href']
ur=requests.get(url=u)
usoup=BeautifulSoup(ur.text,'lxml')
f.write(txt+'\n')
f.write('Text:\n')
p=usoup.find('div',id='Cnt-Main-Article-QQ').find_all('p')
for i in p:
f.write(i.text+'\n')
break
f.close()
print('Finish')
我尝试过几种不同的方法
我试过了
f.write(txt+'\n'.encode('ascii'))
TypeError: write() argument must be str, not bytes
f.write(txt+'\n'.encode('utf-8'))
TypeError: write() argument must be str, not bytes
TypeError: write() argument must be str, not bytes
感谢您的帮助!!
答案 0 :(得分:0)
试试这个:f.write(str(txt)+'\n', 'utf-8') #or whichever way you are encoding
从您的错误消息中,write()
想要一个字符串,但是您要给它字节,因此,您必须调用str()
将txt转换为str类型。
答案 1 :(得分:0)
尝试以下。 f.write(txt.decode()+'\ n')