抓取html

时间:2018-12-03 17:40:29

标签: python html web-scraping beautifulsoup

我正在抓取一系列html页面的内容,但是当beautifulsoup从某些标签中抓取文本时,它们会把它们挤在一起。下面是我遇到的问题的一个具体示例,其中包含html,然后包含此webpage中的文本。如您所见,html会打印数字22.1而不用空格。这在我跑步时会体现出来

text = soup.find("div", {"id":"contentsscroll"}).text 

或类似的抓取文本的内容。本质上,无论何时遇到<strong>标记或类似方法时,我都需要一种插入间距的方法。如果可以忽略该标记,则完全忽略编号也可以。我要避免的主要问题是将文本压缩为将来的文本分析目的。

<div class="section"><h4><a name="section2"></a>Repealed</h4><p id="d2e64" class="sec1"><span class="secno"><strong>2</strong></span>&nbsp; Repealed. [B.C. Reg. 277/2000, s. 2.]</p></div><div class="section"> <h4> <a name="section2.1"></a>Elizabeth Bagshaw Society</h4><p id="d2e76" class="sec1d1"><span class="secno"><strong>2.1</strong></span>&nbsp; Subject to section 5 (3) of the <em>Access to Abortion Services Act</em>, the access zone for the facility operated by the Elizabeth Bagshaw Society at 1177 West Broadway in the City of Vancouver is established as the area within the heavy outline shown on the plan in Appendix&nbsp;2.1.</p>

已废除 2 。 [公元前。 Reg。 277/2000,第2。]

             伊丽莎白·巴格肖学会 2.1             《服务法》 ,即由         伊丽莎白·巴格肖协会(Elizabeth Bagshaw Society)位于温哥华市百老汇大街1177号,成立于         附录2.1中计划中显示的粗轮廓内的区域。

1 个答案:

答案 0 :(得分:1)

使用.text方法而不是使用.get_text()属性,并使用空格作为参数。 BeautifulSoup会将每个文本加上一个空格,而不是将文本推在一起。

所以替换:

text = soup.find("div", {"id":"contentsscroll"}).text

具有:

text = soup.find("div", {"id":"contentsscroll"}).get_text(" ")

然后您可以使用re.sub(r" +", " ", text)删除任何不需要的多个空格。