网页新闻抓取(soup某校查看某校的新闻发布,闲言少叙步入正题~)
优采云 发布时间: 2022-01-15 22:17网页新闻抓取(soup某校查看某校的新闻发布,闲言少叙步入正题~)
最近因为需要经常查看手中某所学校的新闻发布,不想频繁刷新网页,所以出现了下面这个轻量级爬虫。
环境介绍:
蟒蛇2.7
BS4(这是一个强大的三向模块,这个模块的掌握还在学习中~)
要爬取的网页:
yjsc.shnu.eds(上海师范大学全日制*敏*感*词*招生信息)
首先,分析网页的源代码。对于这一步,网上有很多教程,有用的软件,有用的浏览器源码翻译功能。我使用python的urllib2直接操作。首先,获取这个网页的源代码,我的代码如下:
导入 urllib2
html_doc = urllib2.urlopen("").read()
打印 html_doc
上面代码执行后,idle中会显示一大串字符串,就是网页的源代码,将idle中的内容保存到记事本中(最好是能高亮html文件的记事本,我用你可以到sublime text3)查看网页的源代码,相应的网页源代码这里就不贴了。
其次,获取网页的源代码后,分析我们要查找的内容的位置。科普html的文件格式就不在这里了,不懂的同学可以自行百度google一下。通过查看源代码,我在以下位置找到了我需要的资源(其中之一):
其中,标签“a”中的title字段收录新闻标题,标签“span”字段收录新闻时间。快速定位后就可以分析网页的源码了,这里就使用上面提到的BS4。
BS4,beautifulsoup,正式解释自己百度-_-
BS4使用时需要导入库文件。它可以接受一个字符串和一个本地 HTML 文件来创建一个汤对象。这里将上面代码中生成的html_doc作为soup的源文件。导入这个库文件后,我们的html文件会被soup对象格式化输出,我们可以获取某个标签的字符串。和re比起来,我们再幸福不过了~
在这个爬虫中,因为我只需要获取新闻标题和时间,所以我只使用了soup对象的两个字段:title和span。有人可能会在这里问。标题比较好获取,可以通过指定标签名来获取。获取,但是time,time是一个span的字符串,在re中,确实需要组织正则表达式来获取时间,但是用BS4,可以直接调用span.string来获取字符串的文本信息~~是的,就这么简单!
最后,由于设计使用两个列表分别表示新闻标题和新闻时间,所以在输出时需要对列表中的字符串进行整合,才能达到预期的效果。整个爬虫的代码如下:
从 bs4 导入 BeautifulSoup
导入 urllib2
html_doc = urllib2.urlopen("").read()
汤 = BeautifulSoup(html_doc)
l_title = []
l_date = []
新闻= []
soup.find_all('a') 中的链接:
如果链接.get(“标题”):
l_title.append(link.get("title"))
对于 soup.find_all('span') 中的链接:
如果链接.字符串:
l_date.append(link.string)
对于范围内的 i(0,3):
l_date.pop()
对于范围内的我(0,len(l_title)):
str1 = l_title[i] +" "+ l_date[i]
新闻.append(str1)
我在新闻中:
打印我
最终结果如下:
达到预期目标~