Python-逐行阅读BeautifulSoup片段?(或者我想要的其他抓取数据的方式)



我有一个使用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变得非常容易。

相关内容

最新更新