不希望段落之间的空间:Python
发布时间:2020-12-20 13:38:24 所属栏目:Python 来源:网络整理
导读:我正在使用以下代码抓取新闻网站以获取新闻文章: import mechanizefrom selenium import webdriverfrom bs4 import BeautifulSoupurl = "http://www.thehindu.com/archive/web/2012/06/19/"link_dictionary = {}driver = webdriver.Firefox()driver.get(url
我正在使用以下代码抓取新闻网站以获取新闻文章:
import mechanize from selenium import webdriver from bs4 import BeautifulSoup url = "http://www.thehindu.com/archive/web/2012/06/19/" link_dictionary = {} driver = webdriver.Firefox() driver.get(url) soup = BeautifulSoup(driver.page_source) for tag_li in soup.findAll('li',attrs={"data-section":"Editorial"}): for link in tag_li.findAll('a'): link_dictionary[link.string] = link.get('href') print link_dictionary[link.string] urlnew = link_dictionary[link.string] brnew = mechanize.Browser() htmltextnew = brnew.open(urlnew).read() articletext = "" soupnew = BeautifulSoup(htmltextnew) for tag in soupnew.findAll('p'): articletext += tag.text print articletext driver.close() 我得到了理想的结果,但我想要一条特定的新闻文章.对于一些文章,我将整篇文章放在一行,而在其他文章中,我得到不同的段落.有人可以帮我解决问题吗?我是python编程的新手.感谢致敬. 解决方法
这可能与特定网站的HTML中管理空白的方式有关,并且并非所有网站都会对其内容使用“p”标记.你最好的选择是做一个正则表达式替换,它可以消除多余的空格(包括换行符).
在文件的开头,导入regular expression module: import re 然后在构建文章文本后,添加以下代码: print re.sub('s+',' ',articletext,flags=re.M) 您可能还想从其中可能包含的其他元素中提取文本. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |