获取一篇新闻的全部信息

获取一篇新闻的全部信息

作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2894

给定一篇新闻的链接newsUrl,获取该新闻的全部信息

标题、作者、发布单位、审核、来源

发布时间:转换成datetime类型

点击:

  • newsUrl
  • newsId(使用正则表达式re)
  • clickUrl(str.format(newsId))
  • requests.get(clickUrl)
  • newClick(用字符串处理,或正则表达式)
  • int()

整个过程包装成一个简单清晰的函数。

具体代码如下:

 

 1 # 获取一篇新闻的全部信息
 2 import re
 3 import requests
 4 from bs4 import BeautifulSoup
 5 from datetime import datetime
 6 
 7 
 8 # 获取新闻id
 9 def newsnum(url):
10     newsid = re.match('http://news.gzcc.cn/html/2018/meitishijie_0323/(.*).html', url).group(1)
11     return newsid
12 
13 
14 # 发布时间:datetime类型
15 def newstime(soup):
16     newsdate = soup.select('.show-info')[0].text.split()[0].split(':')[1]
17     newstime = soup.select('.show-info')[0].text.split()[1]
18     time = newsdate + ' ' + newstime
19     time = datetime.strptime(time, '%Y-%m-%d %H:%M:%S')
20     return time
21 
22 
23 # 获取点击次数
24 def click(url):
25     id = re.findall('(d{1,5})', url)[-1]
26     clickUrl = 'http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80'.format(id)
27     res = requests.get(clickUrl)
28     newsClick = res.text.split('.html')[-1].lstrip("('").rstrip("');")
29     newsDJ = '点击次数:' + newsClick + ''
30     return newsDJ
31 
32 # 主函数
33 def main(url):
34     res = requests.get(url)
35     res.encoding = 'utf-8'
36     soup = BeautifulSoup(res.text, 'html.parser')
37     print("新闻编号:" + newsnum(url));                       # 新闻编号id
38     print("标题:" + soup.select('.show-title')[0].text);     # 标题
39     print("发布时间:" + str(newstime(soup)));                # 发布时间
40     print(click(url))
41     print(soup.select('.show-info')[0].text.split()[2]);     # 作者
42     print(soup.select('.show-info')[0].text.split()[3]);     # 审核
43     print(soup.select('.show-info')[0].text.split()[4]);     # 来源
44     print("内容:" + soup.select('.show-content')[0].text); # 内容
45     return
46 
47 url = "http://news.gzcc.cn/html/2018/meitishijie_0323/9085.html"
48 main(url)
news

运行截图如下:

原文地址:https://www.cnblogs.com/lys1894/p/10651740.html