使用python和beautifulsoup4抓取网页后重复数据
Posted
技术标签:
【中文标题】使用python和beautifulsoup4抓取网页后重复数据【英文标题】:Repeating Data after web scraping using python and beautiful soup4 【发布时间】: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])
【问题讨论】:
【参考方案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"
【讨论】:
以上是关于使用python和beautifulsoup4抓取网页后重复数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用python和beautifulsoup4循环抓取网站中多个页面的数据
如何在 python 中使用 beautifulsoup4 来抓取标签中的内容
如何使用python和beautifulsoup4循环和抓取多个页面的数据
python3+beautifulSoup4.6抓取某网站小说基础功能设计