【问题标题】:Python code scraping data from kickstarter does not work after some iteration一些迭代后,从 kickstarter 抓取数据的 Python 代码不起作用
【发布时间】:2019-05-30 14:22:29
【问题描述】:

我尝试从 kickstarter 中抓取数据,代码正在运行,但它在第 15 页出现以下错误(由于网页是动态的,您可能会在不同的页面中遇到错误):

Traceback(最近一次调用最后一次):文件“C:\Users\lenovo\kick.py”, 第 30 行,在 csvwriter.writerow(row) 文件 "C:\Users\lenovo\AppData\Local\Programs\Python\Python37\lib\encodings\cp1252.py", 第 19 行,在编码中 return codecs.charmap_encode(input,self.errors,encoding_table)[0] UnicodeEncodeError: 'charmap' codec can't encode character '\uff5c' in 位置 27:字符映射到

可能是什么问题?有什么建议吗?

from urllib.request import urlopen
from bs4 import BeautifulSoup
import json
import csv
KICKSTARTER_SEARCH_URL = "https://www.kickstarter.com/discover/advanced?category_id=16&sort=newest&seed=2502593&page={}"
DATA_FILE = "kickstarter.csv"
csvfile = open(DATA_FILE, 'w')
csvwriter = csv.writer(csvfile, delimiter=',')
page_start = 0
while True:
    url = KICKSTARTER_SEARCH_URL.format(page_start)
    print(url)
    response = urlopen(url)
    html = response.read()
    soup = BeautifulSoup(html, 'html.parser')
    project_details_divs = soup.findAll('div', {"class":"js-react-proj-card"})

    if len(project_details_divs) == 0:
        break;

    for div in project_details_divs:
        project = json.loads(div['data-project'])
        row = [project["id"],project["name"],project["goal"],project["pledged"]]
        csvwriter.writerow(row)

    page_start +=1

csvfile.close()

【问题讨论】:

  • 如果有任何答案符合您的要求,请不要忘记勾选正确。我提醒你这一点是因为新人经常忘记这样做。

标签: python json web-scraping beautifulsoup kickstarter


【解决方案1】:

将参数encoding 添加到文件打开器。我的意思是,改变

csvfile = open(DATA_FILE, 'w')

进入

csvfile = open(DATA_FILE, 'w', encoding='utf-8')

【讨论】:

  • 有任何问题@user229 吗?
  • 它给出了错误:TypeError: 'encoding' is an invalid keyword argument for this function
  • 我也应该更改文件写入吗?因为它再次在 for 循环中给出错误,但在第 1 页中。
猜你喜欢
  • 2023-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多