我正在尝试从Garmin站点获取高尔夫数据。我想得到高尔夫球场的名称和地址,但我在运行脚本后。我注意到我的代码只是一遍又一遍地重复第一页数据。我还注意到网站上的页码不是从1开始,而是在第二页的10开始。我如何从这个网站提取数据并获取所有数据,而不是仅重复第一页。
import csv
import codecs
import requests
from bs4 import BeautifulSoup
courses_list= []
for i in range(10):
url = "http://sites.garmin.com/clsearch/courses?browse=1&country=US&lang=en&per_page={}".format(i)
r = requests.get(url)
soup = BeautifulSoup(r.content)
g_data2=soup.find_all("div",{"class":"result"})
for item in g_data2:
try:
name= item.contents[3].find_all("div",{"class":"name"})[0].text
print name
except:
name=''
try:
address= item.contents[3].find_all("div",{"class":"location"})[0].text
except:
address=''
course=[name,address]
courses_list.append(course)
with open ('G_Final.csv','a') as file:
writer=csv.writer(file)
for row in courses_list:
writer.writerow([s.encode("utf-8") for s in row])
答案 0 :(得分:1)
你发现了这个问题。
然后改变
url = "http://...?browse=1&country=US&lang=en&per_page={}".format(i)
到
url = "http://...?browse=1&country=US&lang=en&per_page={}".format(i*20)
答案 1 :(得分:-1)
只需将其更改为:
对于范围内的 i (0, 10): url = "http://sites.garmin.com/clsearch/courses?browse=1&country=US&lang=en&per_page={i}"