之前已经在学习Python语言了,还没有学习完,近期需要做一个新闻动态的模块,需要一些最新的财经方面的新闻,作为软件公司,肯定是没有这方面的资源,但是身为技术开发人员,首先想到的肯定是去别人家的网站去抓取别人家现成的信息,之前也接触过Java的一个爬虫的API,也就是Gecco,了解过这个东西,用起来不是很好用,果断想到Python,正好我也在一直学习Python,对Python的一些基本的语法还是了解的,于是赶紧来付诸实践(Python版本3.5.0)。
这里,我只是参考了一个博主的文章,他写的实在是比较详细,我就只写我参照他的文章写出来的一个抓取和讯财经网的主页面的新闻信息列表,以及新闻的内容的详细信息:
一、首先需要安装第三方库 BeautifulSoup
在Python中到处都会用到第三方的库,所以你如果没有安装pip,最好还是安装一个,因为用pip安装Python的第三方的库是非常方便的,在这里安装BeautifulSoup也就只有一个命令:pip install beautifulsoup4 (cmd打开,直接输入该命令就可以安装了,前提是你电脑是可以上网的),安装的版本是最新的beautifulsoup4-4.6.0.dist-info,有必要找一个中文文档详细了解一下这个第三方库的Beautiful Soup 4.2.0文档
二、直接进入开发,直接贴代码了,小心了,高能预警
from bs4 importBeautifulSoupimporttimeimportrefrom urllib importrequest
#这里是获得和讯财经网的主页的当日的新闻,这里面的规律还是通过查看他网页的HTML代码知道的defget_main_urls():
date= time.strftime('%Y-%m-%d',time.localtime(time.time()))print(date)
resp= request.urlopen("http://www.hexun.com/")
page=resp.read()
soup= BeautifulSoup(page,'html.parser',from_encoding='GBK')
pattern= 'http://[0-9a-zA-Z\_]+.hexun.com/'+date+'/[0-9a-zA-Z\_]+.html'urls= soup.find_all('a',href=re.compile(pattern))returnurls
#这里就是主程序了,里面有一个异常的捕捉,不然程序遇到错误就不执行循环了,主要是有的url访问不了,会出现异常if __name__ == '__main__':
new_urls=get_main_urls()#print(new_urls)
for url innew_urls:print(url['href'])print(url.get_text())try:
resp= request.urlopen(url['href'])
page=resp.read()
soup= BeautifulSoup(page,'html.parser',from_encoding='GBK')
content= soup.find('div',class_='art_contextBox')print(content.get_text())exceptException as e:print('error:',e)
基本上新闻的详细信息能够获取到的,你是保存到数据库呢,还是干嘛呢,我也不知道,只有你自己知道!
我的想法:我觉得这种信息,尤其是每天都更新的新闻信息,保存到数据库有点浪费资源了,感觉也没有必要啊,我目前想的是可不可以通过JSON,将新闻信息保存成json格式的数据形式,然后通过restful风格的接口在直接接收到json数据,直接显示到前台页面,可行性有待检验啊!
参考文章:http://www.cnblogs.com/liufei-kuaile/p/7488738.html