Python 网站抓取后只写一行
我正试图提取一份名单,所有的高尔夫球场在美国通过。我需要提取高尔夫球场的名称、地址和电话号码。我的脚本应该从网站中提取所有数据,但看起来它只打印csv文件中的一行。我注意到当我打印“name”字段时,它只打印一次,尽管有Python 网站抓取后只写一行,python,csv,web-scraping,beautifulsoup,Python,Csv,Web Scraping,Beautifulsoup,我正试图提取一份名单,所有的高尔夫球场在美国通过。我需要提取高尔夫球场的名称、地址和电话号码。我的脚本应该从网站中提取所有数据,但看起来它只打印csv文件中的一行。我注意到当我打印“name”字段时,它只打印一次,尽管有find\u all功能。我所需要的只是数据,而不仅仅是网站上多个链接的一个字段 如何修复脚本,使其将所有需要的数据打印到CSV文件中 这是我的剧本: import csv import requests from bs4 import BeautifulSoup cours
find\u all
功能。我所需要的只是数据,而不仅仅是网站上多个链接的一个字段
如何修复脚本,使其将所有需要的数据打印到CSV文件中
这是我的剧本:
import csv
import requests
from bs4 import BeautifulSoup
courses_list = []
for i in range(1):
url="http://www.thegolfcourses.net/page/1?ls&location=California&orderby=title&radius=6750#038;location=California&orderby=title&radius=6750" #.format(i)
r = requests.get(url)
soup = BeautifulSoup(r.content)
g_data2=soup.find_all("div",{"class":"list"})
for item in g_data2:
try:
name= item.contents[7].find_all("a",{"class":"entry-title"})[0].text
print name
except:
name=''
try:
phone= item.contents[7].find_all("p",{"class":"listing-phone"})[0].text
except:
phone=''
try:
address= item.contents[7].find_all("p",{"class":"listing-address"})[0].text
except:
address=''
course=[name,phone,address]
courses_list.append(course)
with open ('PGN_Final.csv','a') as file:
writer=csv.writer(file)
for row in courses_list:
writer.writerow([s.encode("utf-8") for s in row])
下面是代码的简洁实现。您可以使用库
urllib2
而不是请求
。而bs4的工作原理也一样
import csv
import urllib2
from BeautifulSoup import *
url="http://www.thegolfcourses.net/page/1?ls&location=California&orderby=title&radius=6750#038;location=California&orderby=title&radius=6750" #.format(i)
r = urllib2.urlopen(url).read()
soup = BeautifulSoup(r)
courses_list = []
courses_list.append(("Course name","Phone Number","Address"))
names = soup.findAll('h2', attrs={'class':'entry-title'})
phones = soup.findAll('p', attrs={'class':'listing-phone'})
address = soup.findAll('p', attrs={'class':'listing-address'})
for na, ph, add in zip(names,phones, address):
courses_list.append((na.text,ph.text,add.text))
with open ('PGN_Final.csv','a') as file:
writer=csv.writer(file)
for row in courses_list:
writer.writerow([s.encode("utf-8") for s in row])
你的缩进到处都是,发布的代码甚至不会执行。如前所述,
courses\u list.append()
调用完全在g\u data2循环中的for项之外,因此只执行一次,但是,由于缩进的其余部分也是一团乱,我无法确定这是否是您的问题。我很抱歉地修复了它。该页面上只有一个这样的div
。那么您对我如何获取所有数据有何建议?为什么不在交互式Python会话中尝试一下呢<代码>汤。查找所有('article')
不是很难吗?