python爬取指定新闻

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


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

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

  发布时间:转换成datetime类型

  点击:

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

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

#coding = utf-8;
import re;
import requests;
from datetime import datetime;
from bs4 import BeautifulSoup;

class News(object):
    '''
        广商校园新闻
    '''
    def __init__(self, url):
        self.url = url;             #新闻网页地址
        self._dom_tree = self._tranfrom_dom_tree(url);

        self._show_infos = self._dom_tree.select(".show-info")[0].text.split();
        self._update_time = self._show_infos[0][5:] + " " + self._show_infos[1];     # 最后更新时间

    def _tranfrom_dom_tree(self,url):
        '''
            将获取的html文本转化为dom树
        '''
        response = requests.get(url);
        response.encoding = "utf-8";
        return BeautifulSoup(response.text, "html.parser");

    # 新闻标题
    @property
    def title(self):
        return self._dom_tree.select(".show-title")[0].text;

    # 新闻作者
    @property
    def auothor(self):
        return self._show_infos[2][3:];

    # 新闻审核
    @property
    def auditor(self):
        return self._show_infos[3][3:];

    # 新闻发布单位
    @property
    def origin(self):
        self._show_infos[4][3:];

    # 新闻最后更新时间
    @property
    def update_time(self):
        return self._update_time;
    @update_time.setter
    def update_time(self, time):
        self._update_time = time;

    # 点击次数
    @property
    def times(self):
        clickUrl = 'http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80'.format(self.news_id);
        res = requests.get(clickUrl)
        click = re.findall('(\d+)', res.text)[-1]
        return click

    # 新闻标识
    @property
    def news_id(self):
        time = datetime.strptime(self._update_time, '%Y-%m-%d %H:%M:%S');
        time = time.strftime("%m%d");
        re.match('http://news.gzcc.cn/html/2019/.*/(\d+).html', self.url).group(1)

if __name__ == "__main__":
    html_url = "http://news.gzcc.cn/html/2019/xiaoyuanxinwen_0322/11047.html";
    news = News(html_url);

 

转载于:https://www.cnblogs.com/destinymingyun/p/10651358.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值