我有一个使用Python和BeautifulSoup读取的网页,比如soup=BeautifulSoup(urllib2.urlopen(site))
。
我正试图获取该网站的一个片段并对其进行解析,因此我使用了pTag = soup.find("p", {"class":"secondary"})
,这将产生以下内容。
<p class="secondary">
Some address and street
<br />
City, State, ZIP
(some) phone-number
</p>
我希望基本上有变量address1、address2和phone,这样:
address1= "Some address and street"
address2= "City, State, ZIP"
phone= "(some) phone-number"
我不知道如何读取汤的行以选择性地选择行1、3、4(假设从行0开始),但我也对获得所需数据的其他方法持开放态度。
提前感谢!:)
假设address
包含您的原始地址。
<p class="secondary">
Some address and street
<br />
City, State, ZIP
(some) phone-number
</p>
然后,您可以用逗号替换换行符,最后用逗号分隔。这并不理想,但对于这些场景,当元素(跨度、id等)之间没有明确的分隔时,一切都归结为位置检查。
address.find("br").replaceWith(",")
addressComponents = address.text.split(",")
这为您提供了addressComponents
列表中的以下四个组件。
一些地址和街道城市状态拉链(一些)电话号码
由于ZIP和电话号码没有换行符,因此似乎插入了换行符。因此,要拆分最终组件:
addressSplit = addressComponents[3].split("n")
print addressSplit[0] # Zip code
print addressSplit[1].strip() # Phone number
我在试图通过HTML进行解析时遇到了类似的问题。您可能想要研究的是使用HTMLParser模块构建自己的解析器:
http://docs.python.org/library/htmlparser.html#example-html解析器应用程序
反复使用这个顶级示例并围绕它构建自己的类,使得解析HTML变得非常容易。