Во-первых, я довольно новичок в Python. Я пытаюсь очистить контактную информацию от автономных веб-сайтов и вывести информацию в csv. Я хотел бы захватить URL-адрес страницы (не уверен, как это сделать из html), адрес электронной почты, телефон, данные о местоположении, если это возможно, любые имена, любые номера телефонов и строку тега для html-сайта, если он существует.* Обновление: как разобрать html с помощью python/beautifulsoup
Обновлено # 2 Код:
import os, csv, re
from bs4 import BeautifulSoup
topdir = 'C:\\projects\\training\\html'
output = csv.writer(open("scrape.csv", "wb+"))
output.writerow(["headline", "name", "email", "phone", "location", "url"])
all_contacts = []
for root, dirs, files in os.walk(topdir):
for f in files:
if f.lower().endswith((".html", ".htm")):
soup = BeautifulSoup(f)
def mailto_link(soup):
if soup.name != 'a':
return None
for key, value in soup.attrs:
if key == 'href':
m = re.search('mailto:(.*)',value)
if m:
all_contacts.append(m)
return m.group(1)
return None
for ul in soup.findAll('ul'):
contact = []
for li in soup.findAll('li'):
s = li.find('span')
if not (s and s.string):
continue
if s.string == 'Email:':
a = li.find(mailto_link)
if a:
contact['email'] = mailto_link(a)
elif s.string == 'Website:':
a = li.find('a')
if a:
contact['website'] = a['href']
elif s.string == 'Phone:':
contact['phone'] = unicode(s.nextSibling).strip()
all_contacts.append(contact)
output.writerow([all_contacts])
print "Finished"
Этот вывод в настоящее время не ничего, кроме заголовков строк возврата. Что мне здесь не хватает? Это должно по крайней мере вернуть некоторую информацию из html-файла, который находится на этой странице: http://bendoeslife.tumblr.com/about
Обычно вы не можете получить URL-адрес страницы со страницы HTML; вам нужно сохранить это при выборе времени. Что касается остальных ... нам нужно увидеть некоторые примеры данных, чтобы рассказать вам, что не так с вашим парсером. – abarnert