Python Web Scrapping仅获取主要内容

时间:2017-03-12 22:08:01

标签: python text

import numpy as np
import json 
import re
from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "http://www.npr.org/sections/thetwo-way/2017/03/06/518805720/turkey-germany-relations-at-new-low-after-erdogan-makes-nazi-comparison"

html = urlopen(url)
bsObj = BeautifulSoup(html, 'lxml')


def keyInfo(div):
  print(div.find("h1").get_text())
  print(div.find("span", {"class":"date"}).get_text())
  print(div.find("a", {"rel":"author"}).get_text().strip())
  print(div.findAll("p")) # Problem here

keyInfo(bsObj)

问题是def keyInfo的最后一行,它打印了很多东西,标签,标题,我只想要主要内容的文本,我怎么能实现呢?

1 个答案:

答案 0 :(得分:1)

此代码可以更好地提取特定网站的内容。

def keyInfo(div):
  print(div.find("h1").get_text())
  article = div.find("article")
  divText = article.find("div", id="storytext")
  [a.extract() for a in divText.findAll("aside")]
  [d.extract() for d in divText.findAll("div")]
  print(divText.get_text())

方法

在使用Chrome开发工具查看内容结构后,我发现故事内容位于article > div[id=storytext],但div[id=storytext]还包含一些旁边和div与非文章内容。删除那些留下文章的段落。

寻找更通用的东西?

如果您正在寻找更通用的东西,您可能需要考虑像Boilerpipe这样的东西。这是Boilerpipe的Python包装器:https://github.com/misja/python-boilerpipe