刮网站只提供部分或随机数据到CSV

2024-04-26 13:00:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图提取一个高尔夫球场的名称和地址从Garmin网站使用下面的脚本列表。你知道吗

import csv
import requests 
from bs4 import BeautifulSoup


courses_list= []
for i in range(893): #893
  url = "http://sites.garmin.com/clsearch/courses?browse=1&country=US&lang=en&per_page={}".format(i*20)
  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 ('PGA_Garmin2.csv','a') as file:
        writer=csv.writer(file)
        for row in courses_list:
                writer.writerow([s.encode("utf-8") for s in row])

在运行脚本之后,我最终得不到所需的完整数据,而且在执行时,它会产生随机值,而不是一组完整的数据。我需要从893页中提取信息,得到一个至少18000页的列表,但运行这个脚本后,我只得到122页。如何修复此脚本以获得完整的数据集,并使用Garmin网站上的高尔夫球场的完整数据集生成所需的CSV。我更正了页码以反映Garmin网站中设置的页面,该页面从20开始,以此类推。你知道吗


Tags: csv数据nameinimportdiv脚本for
1条回答
网友
1楼 · 发布于 2024-04-26 13:00:59

在这里只是猜测一下,但是试着检查一下你的r.status并确认它是200?可能你没有访问整个网站?你知道吗

在黑暗中刺。你知道吗

相关问题 更多 >