在Python 3中,当html包含markdown语法时,如何更好地应用html2text()

时间:2016-12-23 09:20:46

标签: python web-scraping

我正在尝试抓取给定网址中的可见文字。

它应该适用于任何随机网址,所以我不能预先假设html标签,元素,布局等。知道完美的爬行似乎很难,我只希望包含大部分自然语言部分,并排除大部分非自然语言部分。

到目前为止,我发现使用BeautifulSouphtml2text的组合似乎相当不错。

例如,下面是我的骨架代码。

url = 'https://en.wikipedia.org/wiki/Autonomous_car'
req = urllib.request.Request(url, headers={'User-Agent' : "Magic Browser"})

cj = CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
response = opener.open(req)
html = response.read().decode('utf8', errors='ignore')
response.close()

# Get html string
soup = BeautifulSoup(html, "lxml")
htmltext = soup.encode('utf-8').decode('utf-8','ignore')
html2text.html2text(htmltext)

然后,我得到了如下的文本,这些文本也不错(所有的html标签都没有了),但是它们会产生降价语法。

# Autonomous car

From Wikipedia, the free encyclopedia

Jump to: navigation, search

For the wider application of artificial intelligence to automobiles, see [Unmanned ground vehicle](/wiki/Unmanned_ground_vehicle "Unmanned ground vehicle" ) and [Vehicular automation](/wiki/Vehicular_automation "Vehicular Automation").

[![](//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Hands-free_Driving.jpg/230px-Hands-free_Driving.jpg)](/wiki/File:Hands free_Driving.jpg)

Junior, a robotic [Volkswagen Passat](/wiki/Volkswagen_Passat "Volkswagen Passat" ), at [Stanford University](/wiki/Stanford_University "Stanford University" ) in October 2009.

An **autonomous car** (**driverless car**,[1] **self-driving car**,[2] **robotic car**[3]) is a [vehicle](/wiki/Vehicular_automation "Vehicular automation" ) that is capable of sensing its environment and navigating without human input.[4]

是否有办法排除降价标记(尤其是图片和网址链接)并使用更好的句子?

1 个答案:

答案 0 :(得分:0)

我发现html2text从markh语法中的html 链接和图片中提取文本。

所以代替使用html2text.html2text(htmltext), 您可以使用

管理一些选项
h = html2text.HTML2Text()
h.ignore_links = True
h.ignore_images = True
h.handle (htmltext)