【发布时间】:2015-09-26 19:13:31
【问题描述】:
从网站抓取数据后,我在写入 CSV 文件时遇到问题。我的目标是抓取在美国发现的高尔夫球场的名称和地址列表。我使用.get_text(separator=' ') 作为地址来删除<Br> 来分解地址的文本,但是当写入CSV 时,我只能从我的893 交互中获得三个条目。我该怎么做才能正确抓取的数据量以及如何修复我的脚本以便正确抓取所有内容。
这是我的脚本:
import csv
import requests
from bs4 import BeautifulSoup
courses_list = []
for i in range(893): #893
url="http://sites.garmin.com/clsearch/courses/search?course=&location=&country=US&state=&holes=&radius=&lang=en&search_submitted=1&per_page={}".format(i*20)
r = requests.get(url)
soup = BeautifulSoup(r.text)
g_data2 = soup.find_all("div",{"class":"result"})
#print g_data
for item in g_data2:
try:
name = item.find_all("div",{"class":"name"})[0].text
except:
name=''
print "No Name found!"
try:
address= item.find_all("div",{"class":"location"})[0].get_text(separator=' ')
print address
except:
address=''
print "No Address found!"
course=[name,address]
courses_list.append(course)
with open ('Garmin_GC.csv','a') as file:
writer=csv.writer(file)
for row in courses_list:
writer.writerow([s.encode("utf-8") for s
【问题讨论】:
标签: python csv web-scraping beautifulsoup