首先,我對Python很陌生。我試圖從離線網站刮取聯繫信息並將信息輸出到csv。我想抓取頁面網址(不知道如何從html中完成),電子郵件,電話,位置數據(如果可能),任何名稱,任何電話號碼和html網站的標記行(如果存在)。*更新:如何用python/beautifulsoup解析html
更新#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
您通常不能從頁面HTML中獲取頁面URL;你需要在提取時間保存這個。至於其他...我們需要看一些示例數據來告訴你解析器出了什麼問題。 – abarnert 2013-05-13 18:14:11