• 获取一篇新闻的全部信息


    获取一篇新闻的全部信息

    作业要求来自于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

    运行截图如下:

  • 相关阅读:
    IE6,IE7 DIV高度技巧(div高度兼容问题)
    QQ在线咨询插件
    Singleton单件 (创建型模式)
    SQL Server ErrorLog 错误日志(如果数据库所占空间变大)
    IE6 div标签height的Bug
    c# 中 Volatile关键字理解
    翻译:SWFObject 2.0官方文档(用来做flash的js)
    已连接到空闲例程的问题解决办法
    Oracle 的一个非常好的触发器例子
    Oracle中表的非常全面的操作
  • 原文地址:https://www.cnblogs.com/lys1894/p/10651740.html
Copyright © 2020-2023  润新知