【发布时间】:2015-06-30 02:03:13
【问题描述】:
我正在尝试从“thegolfcourse.net”网站提取高尔夫球场信息。我的目标是从网站上收集美国 18000 多个高尔夫球场的名称、地址和电话号码。我运行了我的脚本,但它没有从网站生成所有数据。有 18000 多个高尔夫球场,但我只从网站下载了大约 200 多个网站。我不知道我的循环是否错误,或者我没有根据我的代码访问所有数据,而且我的数据中有空格,我想知道如何正确提取数据。
这是我的脚本:
import csv
import requests
from bs4 import BeautifulSoup
courses_list = []
for i in range(56):
url="http://www.thegolfcourses.net/page/{}?ls&location&orderby=title".format(i)
r = requests.get(url)
soup = BeautifulSoup(r.content)
g_data2=soup.find_all("article")
for item in g_data2:
try:
name = item.contents[5].find_all("a")[0].text
print name
except:
name=''
try:
phone= item.contents[13].find_all("p",{"class":"listing-phone"})[0].text
except:
phone=''
try:
address= item.contents[13].find_all("p",{"class":"listing-address"})[0].text
except:
address=''
course=[name,phone,address]
courses_list.append(course)
with open ('PGN.csv','a') as file:
writer=csv.writer(file)
for row in courses_list:
writer.writerow([s.encode("utf-8") for s in row])
【问题讨论】:
-
您想要的输出是什么样的?编辑您的问题,并举例说明您希望它的外观。
-
乍一看,您似乎在抓取前 56 页,但我在网站上看到了 1,907 页。就额外空格而言,您可能会得到前导和尾随空格。在字符串上使用
.strip()来清理它。 -
如何获取所有 1907 页?
-
@Gonzalo68 查看我提供的关于如何获取所需内容的答案。
标签: python csv beautifulsoup scrape