簡體   English   中英

使用python和漂亮的soup4在網頁抓取后重復數據

[英]Repeating Data after web scraping using python and beautiful soup4

我正在嘗試從 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])

你發現了問題。

然后改變

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)

只需將其更改為:

對於 i in range(0, 10): url = "http://sites.garmin.com/clsearch/courses?browse=1&country=US&lang=en&per_page={i}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM