Я пытаюсь собрать информацию обо всех полях для гольфа в США. Я создал сценарий для очистки данных с веб-сайта PGA, который содержит около 18000 полей для гольфа. Поэтому мой скрипт работает неправильно, и у меня проблема с его исправлением. Предполагается создать столбец для собственности, который предполагает предоставлять информацию, если она является частной или общедоступной. Мне удалось найти информацию, но когда она была выполнена, она помещается в случайные части CSV и не соединяется с ее правой информацией о поле для гольфа. Как мне решить, что он даст мне все необходимые данные от имени, адреса, номера телефона и веб-сайта.Скребок и анализ веб-сайта для информации
Второй для поля адреса Я хочу проанализировать информацию, которая будет распространена в разных столбцах в моем CSV. Я хочу, чтобы поле адреса разбилось на название улицы и номер, город, CA, индекс и страну.
Наконец, мне было интересно, можно ли создать функцию, которая, когда адрес имеет поле P.O в своей строке, будет перемещен в другой столбец с именем PO Box. Как мне это сделать?
Я хочу, чтобы сохранить всю эту информацию в формате CSV с всеми данными, мне нужно
Вот мой сценарий:
import csv
import codecs
import requests
from bs4 import BeautifulSoup
courses_list = []
for i in range(1): # 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)
g_data1=soup.find_all("div",{"class":"views-field-nothing-1"})
g_data2=soup.find_all("div",{"class":"views-field-nothing"})
for item in g_data2 and g_data1:
try:
ownership = item.contents[1].find_all("div",{"class":"views-field-course-type"})[0].text
print (ownership)
except:
ownership = ''
try:
name = item.contents[1].find_all("div",{"class":"views-field-title"})[0].text
print name
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,ownership]
courses_list.append(course)
with open ('Testing.csv','a') as file:
writer=csv.writer(file)
for row in courses_list:
writer.writerow([s.encode("utf-8") for s in row])
Вы можете дать визуальный пример того, что вы хотите, чтобы вывод выглядеть точно? Это поможет выяснить, что вам нужно, чтобы CSV выглядел. – serk