抓取网页新闻(关于大数据时代的数据挖掘(1)为什么要进行数据挖掘 )
优采云 发布时间: 2021-11-26 18:22抓取网页新闻(关于大数据时代的数据挖掘(1)为什么要进行数据挖掘
)
关于大数据时代的数据挖掘
(1)为什么要进行数据挖掘:有价值的数据不是存储在本地,而是分布在广阔的网络世界中。我们需要挖掘网络世界中有价值的数据供我们自己使用
(2)非结构化数据:网络中的大部分数据都是非结构化数据,比如网页中的数据,没有固定的格式
(3)Unstructured Data Mining--ETL:三步:抽取、转换、加载。经过这三步,就可以访问数据了
关于网络爬虫
(1)可以从主要的网站中抓取大量数据,并进行结构化,最后存储到本地数据库中,供我们自己索引
(2)网络爬虫框架:
比如你电脑上的浏览器就是web连接器,一个网站的网页就是web服务器。在浏览器中输入网站的URL就是向web服务器发送请求。适配器在浏览器中显示页面作为响应。网络爬虫通过网络适配器给出的响应,找到相关数据进行爬取,对数据进行分析得到结构化数据,最终存储在数据中心以备使用
网络爬虫实战(新闻爬虫)
项目描述:通过python网络爬虫抓取新浪网国内新闻栏目的所有新闻信息,包括标题、新闻来源、时间、文章内容、编辑和评论数,最后做成表格表格存储在excel表格中
项目工具:python、谷歌浏览器
所需模块:请求、重新、BeautifulSoup4、datetime、json
具体步骤:
(1)观察网页:打开新浪国内新闻页面。在页面空白处右击,点击底部“检查”选项。当前开发者工具查看界面网页出现,“网络”一栏可以作为我们的“*敏*感*词*器”,我们可以查看当前页面中web服务器返回的响应内容,响应内容分为很多类,比如JS就是制作的内容通过Javascripts,css是网页装饰器,doc是网页文件的内容。等等,我们这里要抓取的新闻信息一般都放在doc里面,在doc类型中找到名为china的文件就是我们国内的新闻正在寻找,其内容可以在“响应”响应中找到。
(2)获取网页整体资源--request:request模块是一个用于获取网络资源的模块,可以使用REST操作,即post、put、get、delete等操作来访问网络资源.阅读一网页的web资源的简单代码如下:
*敏*感*词*请求
新闻网址 ='#39;
res = requests.get(newsurl)
res.encoding ='utf-8'
打印(res.text)
其中res.encoding='utf-8'是将编码格式转换成中文格式,res.text是显示获取到的资源的内容
(3)获取详细资源-BeautifulSoup4:BeautifulSoup4模块可以根据Document Object Model Tree对获取的网络资源进行分层,然后使用select方法获取每一层的详细资源。Document Object Model Tree图形如下面所述 :
使用 BeautifulSoup4 提取网络资源,以便从中提取细节:
*敏*感*词*请求
从 bs4 导入 BeautifulSoup
新闻网址 ='#39;
res = requests.get(newsurl)
res.encoding ='utf-8'
汤 = BeautifulSoup(res.text)
打印(汤.文本)
下面是res.text和soup.text的区别说明。前者中,res是网页的响应内容,text是用来检索网页响应的内容。在后者中,汤是 BeautifulSoup 对象。这里的文字是去除响应内容中的标签。喜欢
(4)BeautifulSoup的select方法:可以针对不同的tag取出tag的内容
1.找到收录h1标签的元素:
汤 = BeautifulSoup(html_sample)
标题 = 汤.select('h1')
打印(标题)
2.找到收录 a 标签的元素:
汤 = BeautifulSoup(html_sample)
alink = 汤.select('a')
打印(链接)
3.找到id为title的元素:
汤 = BeautifulSoup(html_sample)
标题 = 汤.select('#title')
打印(标题)
4.找到类为链接的元素:
汤 = BeautifulSoup(html_sample)
链接 = 汤.select('.link')
打印(链接)
5.获取元素中的属性--获取超链接中herf属性的内容
汤 = BeautifulSoup(html_sample)
alink = 汤.select('a')
对于 alink 中的链接:
打印(链接['herf'])
BeautifulSoup的select方法获取的内容是列表的形式。如果要操作内容,必须取出列表元素。如果要获取类为 link 的元素的文本内容,可以使用 print(link[0].text )
(5) 做一个简单的爬虫
首先,进入新浪新闻的国内新闻页面,进入该页面的开发者界面,随意查看一条新闻的元素,可以发现这些新闻都位于一类news-item
里面,所以选择这个类,遍历内容,得到所有的新闻内容
然后,查看每条新闻的具体内容,其中title在h2标签中,时间用class='time'标注,URL在第一个a标签中
最后,通过这些标签过滤所有特定内容。代码显示如下:
*敏*感*词*请求
从 bs4 导入 BeautifulSoup
网址 ='#39;
res = requests.get(url)
res.encoding ='utf-8'
汤 = BeautifulSoup(res.text)
# 打印(汤)
对于soup.select('.news-item') 中的新内容:
如果 len(new.select('h2'))> 0:
h2 = new.select('h2')[0].text
time = new.select('.time')[0].text
a = new.select('a')[0]['href']
打印(h2,时间,一)
得到的结果如下:
一图读懂:多方*敏*感*词*“天价片酬” 演员最高拿多少? 8月15日 09:12 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3527505.shtml
上海商店招牌脱落致3死 两人被采取刑事强制措施 8月15日 08:56 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3419248.shtml
上海商店招牌脱落致3死 两人被采取刑事强制措施 8月15日 08:56 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3419248.shtml
上海商店招牌脱落致3死 两人被采取刑事强制措施 8月15日 08:56 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3419248.shtml
中国核潜艇极限长航背后:艇员出航前写遗书拍遗像 8月15日 08:56 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3450991.shtml
天津村庄遭龙卷风侵袭 砖房被吹塌大树拦腰折断 8月15日 08:54 http://slide.news.sina.com.cn/c/slide_1_86058_311891.html
珍贵视频:沈阳审判日本战犯全认罪 跪地痛哭谢罪 8月15日 08:40 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3366825.shtml
珍贵视频:沈阳审判日本战犯全认罪 跪地痛哭谢罪 8月15日 08:40 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3366825.shtml
众筹6万治疗费被平台索5%“税款”慈善应该缴费吗 8月15日 08:23 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3227219.shtml
众筹6万治疗费被平台索5%“税款”慈善应该缴费吗 8月15日 08:23 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3227219.shtml
今天是日本战败投降纪念日:当年日本曾想靠它翻盘 8月15日 08:21 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3417423.shtml
港媒:若美台不理“不得”警告 大陆将以行动说话 8月15日 08:19 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3399386.shtml
*敏*感*词*博览会期间上海将对网约车实行临时价格干预 8月15日 08:15 http://news.sina.com.cn/c/2018-08-15/doc-ihhtfwqr3178883.shtml
台“皮带大王”厦门公司倒闭拍卖 员工拿千万欠薪 8月15日 08:11 http://news.sina.com.cn/o/2018-08-15/doc-ihhtfwqr3193973.shtml
张广宁任广东肇庆市委副书记(图/简历) 8月15日 07:59 http://news.sina.com.cn/o/2018-08-15/doc-ihhtfwqr3193541.shtml