【问题标题】:CSV output is emptyCSV 输出为空
【发布时间】:2016-12-10 15:32:49
【问题描述】:

我在完成一个项目之前迈出了一步。据我所知,代码的所有部分都有效,我已经分别测试了它们。但是,由于某种原因,输出 CSV 仍然为空。我的代码:

import requests, bs4, csv, sys

reload(sys)
sys.setdefaultencoding('utf-8')

url = 'http://www.constructeursdefrance.com/resultat/?dpt=01'
count = 1

def result():
    res = requests.get(url)
    res.raise_for_status()
    soup = bs4.BeautifulSoup(res.text,'html.parser')
    links = []
    try:    
        for div in soup.select('.link'):
            link = div.a.get('href')
            links.append(link)

        with open('french.csv', 'wb') as file:
            writer = csv.writer(file)
            for i in links:
                res2 = requests.get(i)
                soup2 = bs4.BeautifulSoup(res2.text, 'html.parser')
                for each in soup2.select('li > strong'):
                    writer.writerow([each.text, each.next_sibling])

    except:
        pass

while not url.endswith('?dpt=010'):
    print 'downloading %s' %url
    result()
    count += 1
    url = 'http://www.constructeursdefrance.com/resultat/?dpt=0' +    str(count)

url = 'http://www.constructeursdefrance.com/resultat/?dpt=10'
count = 10
while not url.endswith('?dpt=102'):
    print 'downloading %s' %url
    result()
    count += 1
    url = 'http://www.constructeursdefrance.com/resultat/?dpt=' + str(count)

print 'done'

这确实是我作为初学者尝试解决的第一个更大的项目之一。然而,如此接近却又如此卡住是令人沮丧的。任何帮助表示赞赏。

【问题讨论】:

  • 我猜你的 try 块中有一个异常,而 except: pass 并没有告诉你它是什么。永远不要使用 except:如果异常对代码逻辑很重要,则通过。

标签: python csv web-scraping beautifulsoup


【解决方案1】:

首先,不要在大块使用try,只在小块使用。 如果您评论您尝试 except 语句,则会引发此错误:

  Traceback (most recent call last):
  File "/home/li/PycharmProjects/tw/1.py", line 29, in <module>
    result()
  File "/home/li/PycharmProjects/tw/1.py", line 26, in result
    writer.writerow([each.text, each.next_sibling])
TypeError: a bytes-like object is required, not 'str'

这个错误信息很清楚,当它写入文件时,它需要一个bytes_like对象,你可以检查你打开的文件是'wb'模式,'b'代表字节模式,所以问题很清楚,只需将模式更改为需要 str_like 对象的正常模式:

with open('french.csv', 'w') as file:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-29
    相关资源
    最近更新 更多