2017-01-06 5 views
0

enter image description here 다음 코드가 필요합니다. 그래서 나는 그것을 실행할 때 "TypeError : 바이트와 같은 객체가 'dict'이 아니라 '필요합니다."라고 많은 해결책을 시도했지만 도움이되지 않았습니다. 누군가 나를 도울 수 있습니까? !형식 오류가하십시오 바이트와 같은 객체가 아니라 'DICT'

+0

전체 오류 메시지와 함께 질문을 편집하십시오. 여기에는 오류를 유발하는 행에 대한 정보가 포함됩니다. –

+0

또한 프로그램의 원하는 결과를 설명하십시오. –

+0

파일 "E : \ 중요 문구 \ 1140556027 \ FileRecv \ python 爬 取 图片 \ 腾讯 新闻 \ 爬 取 腾讯 新闻 .py", 줄 16, f.write (data) TypeError : 바이트 형 개체가 있습니다. 필수, 아닌 'dict' [종료 코드 1 1.2s에서 완료] – user7382247

답변

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'} ... 

당신이 원하는 것입니다. ('news.txt'w ') = F 오픈 행 ('WB 'news.txt')

을 F = 개방되고 그렇게하면 작성할 수

대안 광고를 변경할 바이트와 ​​같은 객체보다는 str에서. 어쨌든 당신은 dict에 통과해서는 안됩니다.

+0

"data = b'123 '"무슨 뜻입니까? – user7382247

+0

그냥 모든 바이트 문자열. f.write()는 바이트 형 객체를 필요로합니다. 난 그냥 그 오류와 함께 중단에서 코드를 방지하기 위해 넣어. – chumbaloo

+0

나는 길을 쓸 때 그 결과를 news.txt에 쓸 수 없다. 파일에서 "123"이라고 표시되는 이유는 무엇인가? – user7382247

-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() 
관련 문제