Chainguys 2021-06-11 21:23 采纳率: 93.6%
浏览 119
已采纳

为什么报这个错a bytes-like object is required, not 'str'

纯新手,学习python和爬虫中

import requests
import re
from lxml import etree
import csv
import time
header = {
    'User Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36',
    'Cache-Control': 'No-Cache'
}
url = 'https://coinmarketcap.com/exchanges/coinbase-exchange/'
resp = requests.get(url, headers=header)

html =etree.HTML(resp.text)
divs = html.xpath('//*[@id="__next"]/div[1]/div[1]/div[2]/div/div[3]/div[1]/div/table/tbody/tr')
for div in divs:
   name1 = div.xpath('./td[2]/a/div/div/p/text()')
   name2 = div.xpath('./td[3]/div/a/text()')
   list_name = (name1,name2)
   with open('data.csv','wb') as f:
       writer = csv.writer(f)
       writer.writerows(list_name)

最后报错:

writer.writerows(list_name)
TypeError: a bytes-like object is required, not 'str'

完全懵逼,求解答。。。

  • 写回答

6条回答 默认 最新

  • 小P聊技术 2021-06-11 22:23
    关注

    试试这个: 

    import requests
    import re
    from lxml import etree
    import csv
    import time
    header = {
        'User Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.101 Safari/537.36',
        'Cache-Control': 'No-Cache'
    }
    url = 'https://coinmarketcap.com/exchanges/coinbase-exchange/'
    resp = requests.get(url, headers=header)
    html =etree.HTML(resp.text)
    divs = html.xpath('//*[@id="__next"]/div[1]/div[1]/div[2]/div/div[3]/div[1]/div/table/tbody/tr')
    list_name = []
    for div in divs:
       name1 = div.xpath('./td[2]/a/div/div/p/text()')
       name2 = div.xpath('./td[3]/div/a/text()')
       list = [name1,name2]
       list_name.append(list)
    with open('data.csv','w',newline = '') as f:
       writer = csv.writer(f)
       writer.writerows(list_name)
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?