作业爬虫所有校园新闻

Posted 27杨华星

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了作业爬虫所有校园新闻相关的知识,希望对你有一定的参考价值。

1、完成所有校园新闻的爬虫

(1)获取单条新闻的#标题#链接#时间#来源#内容 #点击次数,并包装成一个函数。

(2)获取一个新闻列表页的所有新闻的上述详情,并包装成一个函数。

(3)获取所有新闻列表页的网址,调用上述函数。

(4)完成所有校园新闻的爬取工作。

 1 #广州商学院新闻爬虫
 2 import requests
 3 import re
 4 from bs4 import BeautifulSoup
 5 from datetime import datetime
 6 
 7 webs = "http://news.gzcc.cn/html/xiaoyuanxinwen/"
 8 res = requests.get(webs)
 9 res.encoding = \'utf-8\'  #编码转换,避免中文乱码输出
10 soup = BeautifulSoup(res.text,"html.parser")  #html.parser是指定解析器
11 
12 #函数功能:获取网页的页数
13 def getpage():
14     lists = int(soup.select(\'.a1\')[0].text.rstrip("")) #获取新闻的总条数
15     page = lists//10+1  #计算获取新闻的页数,每页新闻有10条记录
16     return page
17 
18 #函数功能:输出新闻的详细内容
19 def getdetail(url_detail):
20     resd =requests.get(url_detail)
21     resd.encoding = \'utf-8\'
22     soupd = BeautifulSoup(resd.text,\'html.parser\')
23     return (soupd.select(\'.show-content\')[0].text)
24 
25 #函数功能:输出新闻的时间,类型为datetime
26 def gettime(url_time):
27     resd = requests.get(url_time)
28     resd.encoding = \'utf-8\'
29     soupd = BeautifulSoup(resd.text,\'html.parser\')
30     tx1 = soupd.select(\'.show-info\')[0].text
31     tx2 = "{0:.24}".format(tx1[5:24])
32     time1 = datetime.strptime(tx2,\'%Y-%m-%d %H:%M:%S\') #把字符串类型转换成时间类型
33     return time1
34 
35 #函数功能:输出新闻的点击次数,类型为int
36 def getclick(url_click):
37     id = re.search(\'_(.*).html\',url_click).group(1).split("/")[1]
38     #用正则表达式进行搜索匹配,并返回第一次匹配成功的结果元组,最后用/将元组分开进行取值
39     url_num = (\'http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80\'.format(id))
40     #将获取到的网页id值填入该页面
41     click = int(requests.get(url_num).text.split(\'.\')[-1].lstrip(".html(\'").rstrip("\');"))
42     #获取页面内容后用点号进行元组内容分隔,然后去掉前后的一些匹配内容后取得点击数的值
43     return click
44 
45 #函数功能:输出新闻的相关信息
46 def shownews(url):
47     res = requests.get(url)
48     res.encoding = \'utf-8\'
49     soup = BeautifulSoup(res.text,\'html.parser\')    
50     for news in soup.select(\'li\'):
51         if len(news.select(\'.news-list-title\'))>0:
52         #如果存在新闻列表标题的话(有内容则会大于0)
53             title = news.select(\'.news-list-title\')[0].contents[0]
54             #输出标题的内容
55             sorce = news.select(\'.news-list-info\')[0].contents[1].text
56             #用列表列出子标签后取出第二个元素的内容(来源)
57             newsurl = news.select(\'a\')[0][\'href\']
58             #输出a标签中的href内容(即网址)                                        
59             time=news.select(\'.news-list-info\')[0].span.text
60             #用列表列出子标签后取出第一个元素的内容(时间)                    
61             detail = getdetail(newsurl)
62             #输出详细内容            
63             clicknum = getclick(newsurl)
64             #输出点击次数           
65             print(title,\'\\n\',\'发布时间:\',time,\'来源:\',sorce,\'点击次数:\',clicknum,\'\\n\',\'网站链接:\',newsurl,\'\\n\',detail)
66             #输出新闻标题、时间、来源、点击次数、链接和内容
67             
68 shownews(webs)    #输出新闻的第一页
69 for i in range(2,getpage()+1):    #循环输出往后的页
70     url_nextnew = (\'http://news.gzcc.cn/html/xiaoyuanxinwen/{}.html\'.format(i))
71     shownews(url_nextnew)

(由于内容过多,只展示前两页的标题等内容列表和其中一个新闻的完整信息)

 

2、完成自己所选其他主题相应数据的爬取工作。

 

以上是关于作业爬虫所有校园新闻的主要内容,如果未能解决你的问题,请参考以下文章

爬虫大作业

广商-校园新闻爬虫

python3爬虫 -----华东交大校园新闻爬取

爬取校园新闻首页的新闻

爬取校园新闻首页的新闻

爬虫大作业之广商足球快讯(爬取足球新闻)