如何使用python和beautifulsoup4循环抓取网站中多个页面的数据

贡萨洛68

我正在尝试从PGA.com网站上收集数据,以获取美国所有高尔夫球场的表格。在我的CSV表中,我想包括高尔夫球场的名称,地址,所有权,网站,电话号码。有了这些数据,我想对其进行地理编码并放入地图中,并在计算机上拥有本地副本

我利用Python和Beautiful Soup4提取了我的数据。到目前为止,我已经提取了数据并将其导入CSV,但是现在我遇到了从PGA网站上的多个页面抓取数据的问题。我想提取所有高尔夫球场,但是我的脚本仅限于一页,我想循环播放它,以便它将从PGA网站中找到的所有页面捕获高尔夫球场的所有数据。大约有18000个黄金课程和900个页面来捕获数据

以下是我的脚本。我需要帮助来创建代码,以捕获来自PGA网站的所有数据,而不仅仅是一个站点,而是多个站点。通过这种方式,它将为我提供美国黄金课程的所有数据。

这是我的脚本如下:

import csv
import requests 
from bs4 import BeautifulSoup
url = "http://www.pga.com/golf-courses/search?searchbox=Course+Name&searchbox_zip=ZIP&distance=50&price_range=0&course_type=both&has_events=0"

r = requests.get(url)

soup = BeautifulSoup(r.content)

g_data1=soup.find_all("div",{"class":"views-field-nothing-1"})
g_data2=soup.find_all("div",{"class":"views-field-nothing"})

courses_list=[]

for item in g_data2:
     try:
          name=item.contents[1].find_all("div",{"class":"views-field-title"})[0].text
     except:
          name=''
     try:
          address1=item.contents[1].find_all("div",{"class":"views-field-address"})[0].text
     except:
          address1=''
     try:
          address2=item.contents[1].find_all("div",{"class":"views-field-city-state-zip"})[0].text
     except:
          address2=''
     try:
          website=item.contents[1].find_all("div",{"class":"views-field-website"})[0].text
     except:
          website=''   
     try:
          Phonenumber=item.contents[1].find_all("div",{"class":"views-field-work-phone"})[0].text
     except:
          Phonenumber=''      

     course=[name,address1,address2,website,Phonenumber]
     courses_list.append(course)

     with open ('filename5.csv','wb') as file:
          writer=csv.writer(file)
          for row in courses_list:
               writer.writerow(row)    

#for item in g_data1:
     #try:
          #print item.contents[1].find_all("div",{"class":"views-field-counter"})[0].text
     #except:
          #pass  
     #try:
          #print item.contents[1].find_all("div",{"class":"views-field-course-type"})[0].text
     #except:
          #pass

#for item in g_data2:
   #try:
      #print item.contents[1].find_all("div",{"class":"views-field-title"})[0].text
   #except:
      #pass
   #try:
      #print item.contents[1].find_all("div",{"class":"views-field-address"})[0].text
   #except:
      #pass
   #try:
      #print item.contents[1].find_all("div",{"class":"views-field-city-state-zip"})[0].text
   #except:
      #pass

这个脚本一次只能捕获20个,我想在一个脚本中捕获全部脚本,该脚本占18000个高尔夫球场和900页要抓取的表格。

md草

PGA网站的搜索有多个页面,URL遵循以下模式:

http://www.pga.com/golf-courses/search?page=1 # Additional info after page parameter here

这意味着您可以读取页面的内容,然后将page的值更改为1,然后读取下一页...。依此类推。

import csv
import requests 
from bs4 import BeautifulSoup
for i in range(907):      # Number of pages plus one 
    url = "http://www.pga.com/golf-courses/search?page={}&searchbox=Course+Name&searchbox_zip=ZIP&distance=50&price_range=0&course_type=both&has_events=0".format(i)
    r = requests.get(url)
    soup = BeautifulSoup(r.content)

    # Your code for each individual page here 

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用BeautifulSoup4进行数据抓取的问题

使用python和Beautifulsoup4从抓取数据中写入和保存CSV文件

BeautifulSoup4无法从表中抓取数据

如何使用BeautifulSoup和Python抓取页面?

BeautifulSoup4无法从此表中抓取数据

无法使用BeautifulSoup4抓取网站

如何在一个Web上从多个页面抓取数据,我正在使用Python和BeautifulSoup

从抓取的数据中分割html(Python + BeautifulSoup4)

如何使用pd.DataFrame方法从使用beautifulsoup4抓取的信息中手动创建数据框

如何使用scrapy抓取具有多个页面的网站

如何使用Python和BeautifulSoup抓取多个Google页面

如何使用BeautifulSoup4使用Python修复Web抓取中的错误

使用URL中的变量循环抓取网站中多个页面的数据

如何使用BeautifulSoup创建循环以从源URL抓取多个页面?

从具有多个页面的网站抓取数据

使用python + beautifulSoup4从动态图中抓取数据

循环不适用于使用python和beautifulsoup4抓取数据

使用BeautifulSoup4在Python中存储标签中的数据

使用python 2.7和beautifulsoup 4进行网站抓取

如何使用python中的BeautifulSoup库从具有“查看更多”选项的网站上抓取数据

使用 BeautifulSoup 和 Python 抓取多个表格页面

使用 BeautifulSoup 在 python 中抓取多个页面

在python 3.6中使用beautifulsoup4抓取网站以获取产品信息时

如何使用BeautifulSoup从python网站中未加载的选项卡中抓取表格数据

在beautifulsoup4 中,当纯粹根据元素和其中的文本抓取网站时,如何返回多个结果?

如何从python和beautifulsoup中的页面抓取iframe数据范围

如何使用 Python 和 BeautifulSoup 从 html 表中抓取数据?

使用 BeautifulSoup 在 Steam 中抓取多个页面

使用 Python 抓取 HTML 中的特定元素:BeautifulSoup4