网页新闻抓取(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)

  我在新闻中:

  打印我

  最终结果如下:

  

  达到预期目标~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线