TypeError:无法将字节连接到str(python3)

时间:2017-06-29 06:09:46

标签: web-crawler

我想从网站上获取一些消息,但是有一个问题。

import urllib.request
user_agent = 'Chrome/58.0(compatible;IE 10.0; Windows 10)'
headers = {'User-Agent': user_agent}
url = 'http://www.1905.com/list-p-catid-221.html'
request=urllib.request.Request(url,headers)
response=urllib.request.urlopen(request)
first=response.read()
print(first)
f = open('WebCrawler/1905/film/index.2.txt','wb')
f.write(first)

问题是:

Traceback (most recent call last):
  File "C:/Users/Heidy/PycharmProjects/untitled1/m2.py", line 7, in <module>
    response=urllib.request.urlopen(request)
  ....
TypeError: can't concat bytes to str

我刚开始学习Python和crawler。如果你愿意帮助我,非常感谢你! 我已将.decode('utf-8')添加到response.read(),但它没用。 这是完全追溯:

enter code here
Traceback (most recent call last):
File "C:/Users/Heidy/PycharmProjects/untitled1/m2.py", line 7, in <module>
response=urllib.request.urlopen(request)
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\urllib\request.py", line 223, in urlopen
return opener.open(url, data, timeout)
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\urllib\request.py", line 526, in open
response = self._open(req, data)
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\urllib\request.py", line 544, in _open
'_open', req)
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\urllib\request.py", line 504, in _call_chain
result = func(*args)
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\urllib\request.py", line 1346, in http_open
return self.do_open(http.client.HTTPConnection, req)
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\urllib\request.py", line 1318, in do_open
encode_chunked=req.has_header('Transfer-encoding'))
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\http\client.py", line 1239, in request
self._send_request(method, url, body, headers, encode_chunked)
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\http\client.py", line 1285, in _send_request
self.endheaders(body, encode_chunked=encode_chunked)
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\http\client.py", line 1234, in endheaders
self._send_output(message_body, encode_chunked=encode_chunked)
File "C:\Users\Heidy\AppData\Local\Programs\Python\Python36-
32\lib\http\client.py", line 1064, in _send_output
+ b'\r\n'
TypeError: can't concat bytes to str

1 个答案:

答案 0 :(得分:0)

尝试更改

request=urllib.request.Request(url,headers)

request=urllib.request.Request(url = url,headers = headers)