#coding:utf-8
import requests
from bs4 import BeautifulSoup
url = 'http://news.qq.com/'
wbdata = requests.get(url).text
soup = BeautifulSoup(wbdata,'lxml')
news_title = soup.select("div.text > em.f14 > a.linkto")
for n in news_title:
title = n.get_text()
link = n.get("href")
data = {"标题":title,"链接":link}
print(data)
f = open('news.txt','wb')
f.write(data)
f.close()
enter image description here 这是代码。 因此,当我运行它时,它会给出“TypeError:需要类似字节的对象,而不是'dict'”,我尝试了很多解决方案,没有任何帮助。 有人能帮我吗? THX!
答案 0 :(得分:0)
f.write(数据)
这就是问题所在。 您传入的是字典而不是像对象一样的字节。 例如,当我将代码更改为以下内容时:
#coding:utf-8
import requests
from bs4 import BeautifulSoup
url = 'http://news.qq.com/'
wbdata = requests.get(url).text
soup = BeautifulSoup(wbdata,'lxml')
news_title = soup.select("div.text > em.f14 > a.linkto")
for n in news_title:
title = n.get_text()
link = n.get("href")
data = {"k":title,"a":link}
print(data)
f = open('news.txt','wb')
data = b'123'
f.write(data)
f.close()
...我得到以下内容:
{'k': '辽宁舰将绕台一周“武吓”蔡英文?外交部回应', 'a': 'http://news.qq.com/a/20170104/031454.htm'} ...
我认为这就是你想要的。
或者更改一行:
f = open('news.txt', 'wb')
到
f = open('news.txt', 'w')
这样你就可以用str而不是像字节的对象来编写。 在任何情况下,你都不应该通过一个词典。
答案 1 :(得分:-1)
也许你应该在写完标题和链接之前打开文件,当你写完结束文件时。
f = open('news.txt','wb')
for n in news_titles:
title = n.get_text()
link = n.get("href")
data= {
'标题':title,
'链接':link
}
f.write(data['标题'])
f.write(':')
f.write(data['链接'])
f.write('\r\n')
f.close()