python 报错:a bytes-like object is required, not 'str'

 

核心代码:

def ipPools(numPage):
    headers = randomHeads()
    url = 'http://www.xicidaili.com/nn/'
    saveFsvFile = open('ips.csv', 'wb')
    writer = csv.writer(saveFsvFile)
    for num in range(1, numPage + 1):
        full_url = url + str(num)
        re = requests.get(full_url, headers=headers)
        soup = BeautifulSoup(re.text, 'lxml')
        res = soup.find(id="ip_list").find_all('tr')
        for item in res:
            try:
                temp = []
                tds = item.find_all('td')
                proxyIp = tds[1].text.encode("utf-8")
                proxyPort = tds[2].text.encode("utf-8")
                temp.append(proxyIp)
                temp.append(proxyPort)
                writer.writerow(temp)
                print('保存为excel成功!')
            except IndexError:
                pass

 


注意点:
一定要将str转为bytes :
str.encode("utf-8")
python36 file方法改为open
open('ips.csv', 'wb')将wb改为w 我出错就在这。 如果有相同错误可以,作为参考吧!
推荐链接:  
https://stackoverflow.com/questions/43582925/python-a-bytes-like-object-is-required-not-str-while-printing 
  https://blog.csdn.net/csu_vc/article/details/78372932
这两个可以看下。

 

posted @ 2018-07-23 23:54  不随。  阅读(164)  评论(0编辑  收藏  举报