- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
?
?
利用Python网络爬虫技术追踪时事热点
?
?
廖泽龙王昊源刘紫嫣
【摘要】互联网时代,信息复杂多样,查找一件新闻事件的所有報道,时常难以以时间顺序正常游览所有报道,给读者带来不好的阅读体验,部分新闻事件经过一段时间发展后会被人遗忘,使得不少人只知新闻早期报道,而不知后续发展。“新闻时间轴自动化”是一个基于Python爬虫的项目,该项目可自动或人工创建新闻词条,利用Python网络爬虫技术获取“新闻词条”的收录权威信息,并可根据信息内容的发布时间报道顺序自动建立起新闻的时间轴,从而方便读者阅读新闻及理清逻辑。
【关键词】Pyhton;requests库;BeautifulSoup库;MySQLdb模块;网络爬虫
1.相关技术简介
1.1requests库和BeautifulSoup库
requests是Python第三方工具包,是实现爬虫所常用的HTTP库,主要用于自动爬取HTML页面,自动网络请求提交等。
BeautifulSoup是一个非常流行的Python第三方工具包,可实现解析网页,并提供定位内容的便捷接口。利用它不用编写正则表达式也能方便的实现网页信息的抓取,利用BeautifulSoup编写的代码虽然有时比正则表达式复杂,但其更容易构造和理解,也无需担心类似多余的空格和标签属性这种布局上的小变化。BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则Python会使用Python默认的解析器。
在Python网络爬虫中,以上两个库通常结合使用,requests库实现自动爬取页面源代码,再通过BeautifulSoup库在页面源代码中定向提取所需要的内容。[1]
2.“新闻时间轴自动化”的设计
第一步:在云服务器下通过Python爬虫程序获取新闻事件的关键词;第二步,以关键词为线索开始自动化的定向爬取工作,从而获取关于目标事件的权威报道;第三步:将爬取到的内容按一定顺序和编码导出至数据库或缓存到云服务器中;第四步:借助Python或JSP等方法连接数据库并将数据库或缓存到云服务器中的数据输出到页面上,从而完成新闻时间轴。
3.“新闻时间轴自动化”的实现
3.1获取新闻事件的关键词
通过分析百度的“搜索风云榜”或新浪微博的“实时热搜榜”页面源代码,建立定向爬虫,从而获得新闻词条的关键词;以百度的“搜索风云榜”为例,该网页的网址为:http:///buzz?b=341c=513fr=topbuzz_b1_c513,通过分析其页面源代码可知新闻事件关键词都位于一个
标签下,在
标签下,每个标签对应一个我们需要获取的新闻事件的关键词。利用requests库的requests.get()函数把页面所有信息爬取下来,通过以上的观察来设定来BeautifulSoup库中find()函数的查找对象,继而获取关键词。为了使后续爬虫获取信息更加丰富和精确,可使用Python结巴分词对所获关键词进行搜索模式的切分。
3.1.1主要代码:
以爬取百度“搜索风云榜”关键词为例:
#创建空列表,用于储存词条
tops=[]
#创建空列表,用于储存关键词
keywords=[]
url=http:///buzz?b=341c=513fr=topbuzz_b1_c513
#获得url信息,设置40秒超时时间
r=requests.get(url,timeout=40)
#失败请求(非200响应)抛出异常
r.raise_for_status()
#根据内容分析出的编码方式,备选编码;
r.encoding=r.apparent_encoding
#获得的HTML文本
html=r.text
#对获得的文本进行html解析,查找
内的信息
table=BeautifulSoup(html,html.parser).find(table)
forwordsintable.find_all(a):
ifwords.string!=searchandwords.string!=新闻\
andwords.string!=视频andwords.string!=图片:
tops.append(words.string)
else:
continue
topsList=jieba.cut_for_search(tops[3])
#分关键词(搜索模式)
keywords.append(.join(topsList))
3.2获取权威新闻报道:
以3.1爬取的关键词为目标,通过与3.1.1类似的操作来定向爬取权威新闻网站的相关报道,为方便后续的数据展示,可按需增加爬取内容,如:标题、内容、发布时间、网址等……
3
文档评论(0)