我想要做的是提取姓名和電話號碼,在這個網站:使用Python從網頁
http://www.yellowpages.com/memphis-tn/gift-shops
我想提取車間及其相關的電話號碼,一個名CSV。例如,第一個條目應該是:
巴布科克禮品,(901)763-0700
等。
我使用Python。執行完urllib2.urlopen()之後,我有了整個blurb。我如何處理這些文字以達到我的目標?
我想要做的是提取姓名和電話號碼,在這個網站:使用Python從網頁
http://www.yellowpages.com/memphis-tn/gift-shops
我想提取車間及其相關的電話號碼,一個名CSV。例如,第一個條目應該是:
巴布科克禮品,(901)763-0700
等。
我使用Python。執行完urllib2.urlopen()之後,我有了整個blurb。我如何處理這些文字以達到我的目標?
我會建議使用正則表達式,並在行中的獨特內容。
IE:
<a href="http://www.yellowpages.com/memphis-tn/mip/babcock-gifts-14131113?lid=187490699" class="url " data-analytics="{"click_id":1600,"rank":1,"act":1,"FL":"list","position":0}" title="Babcock Gifts">Babcock Gifts</a>
你會使用這樣的:
re_name=re.compile('<a href=.*class=\"url\".*')
re_front=re.compile('^.*title="')
re_back=re.compile('".*')
for line in page:
if re_name.search(line):
out = re.front.sub('',line)
out = re.back.sub('',line)
print out
。正則表達式通常不鼓勵解析html – rednaw
我不知道如何使用XML解析器。你能指點我一個Python教程嗎? – trycatch22
http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html – Ian
我試圖BeautifulSoup
import urllib
import re
from BeautifulSoup import *
url = 'http://www.yellowpages.com/memphis-tn/gift-shops'
u = urllib.urlopen(url)
soup = BeautifulSoup(u)
test = soup.findAll('div', {'class':"info"})
for each in test:
aref = each.findAll('a',{'class':"url "})
phone = each.findAll('span',{'class':"business-phone phone"})
x = re.sub(r'[^0-9]',"",str(phone))
print aref[0]['title'] + " - " + x
我通過查看HTML頁面的源代碼衍生的這個腳本。我找到了包含列表的'div'部分。然後,每個公司都列在標籤中,我在'aref'中找到了這些標籤。
奇怪的是,我拿起'手機',但文本包含整個字符串包括標籤。我不知道爲什麼。所以,我用一個正則表達式來替換除數字之外的所有東西,這些數字構成了電話號碼。
這裏是美麗的文檔。 http://www.crummy.com/software/BeautifulSoup/bs3/documentation.html
[BeautifulSoup(http://www.crummy.com/software/BeautifulSoup/)將幫助您解析HTML,讓你使用XML解析器可能是一個更容易和更強大的需要 – RedBaron