【问题标题】:Repeating Data after web scraping using python and beautiful soup4使用python和beautifulsoup4抓取网页后重复数据
【发布时间】:2015-09-16 04:57:53
【问题描述】:

我正在尝试从 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])

【问题讨论】:

    标签: python csv web-scraping beautifulsoup


    【解决方案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)
    

    【讨论】:

    • 所以它仍然没有保存权。如何获取所有数据?有什么建议吗?
    • 所以当我设置我的范围()时,看起来我只是从一页获取数据。关于如何循环获取所有数据的任何建议。我做错了吗?
    【解决方案2】:

    把这个改成这个:

    对于范围内的 i (0, 10): url = "http://sites.garmin.com/clsearch/courses?browse=1&country=US&lang=en&per_page={i}"

    【讨论】:

      猜你喜欢
      • 2020-09-26
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 2020-11-07
      • 2015-09-12
      • 1970-01-01
      • 1970-01-01
      • 2014-11-10
      相关资源
      最近更新 更多