【发布时间】:2015-06-27 17:34:55
【问题描述】:
我正在尝试从 PGA 网站上抓取数据以获取美国所有高尔夫球场的列表。我想抓取数据并输入到 CSV 文件中。我的问题是在运行我的脚本后出现此错误。谁能帮助解决此错误以及如何提取数据?
这是错误信息:
文件“/Users/AGB/Final_PGA2.py”,第 44 行,在
writer.writerow(行)UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in 位置 35:序数不在范围内(128)
下面的脚本;
import csv
import requests
from bs4 import BeautifulSoup
courses_list = []
for i in range(906): # Number of pages plus one
url = "http://www.pga.com/golf-courses/search?page={}&searchbox=Course+Name&searchbox_zip=ZIP&distance=50&price_range=0&course_type=both&has_events=0".format(i)
r = requests.get(url)
soup = BeautifulSoup(r.content)
g_data2=soup.find_all("div",{"class":"views-field-nothing"})
for item in g_data2:
try:
name = item.contents[1].find_all("div",{"class":"views-field-title"})[0].text
print name
except:
name=''
try:
address1=item.contents[1].find_all("div",{"class":"views-field-address"})[0].text
except:
address1=''
try:
address2=item.contents[1].find_all("div",{"class":"views-field-city-state-zip"})[0].text
except:
address2=''
try:
website=item.contents[1].find_all("div",{"class":"views-field-website"})[0].text
except:
website=''
try:
Phonenumber=item.contents[1].find_all("div",{"class":"views-field-work-phone"})[0].text
except:
Phonenumber=''
course=[name,address1,address2,website,Phonenumber]
courses_list.append(course)
with open ('PGA_Final.csv','a') as file:
writer=csv.writer(file)
for row in courses_list:
writer.writerow(row)
【问题讨论】:
-
您可以编辑您的帖子以正确显示吗?如果您将整个内容缩进 4 个空格,它将显示为代码块而不是未格式化的文本。
-
我编辑了帖子,等待批准。
-
你的代码有很多问题: 0。缩进在Python中很重要,检查
requests.get(url)第1行。不要使用裸except:,它可能会捕获太多并隐藏错误,添加错误记录调试 2. 避免重复代码,而是创建一个函数。 3. 确保你知道你使用的 Python 版本:你不应该在 Python 3 上看到这个错误
标签: python csv unicode beautifulsoup scrape