获取一篇新闻的全部信息

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

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

发布时间:转换成datetime类型

点击:

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

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

 

尝试去爬取一个你感兴趣的网页。

import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re
if __name__ == '__main__':#"https://www.bilibili.com/read/cv1119650?from=search"

def bzNews(url):
    #url不合法会崩掉

    res=requests.get(url)
    type(res)
    res.encoding="utf-8"
    soup1=BeautifulSoup(res.text,'html.parser')
    #此网页发布时间处理
    dateTime = soup1.find('meta',{'itemprop':'datePublished'})
    type(dateTime)
    dateTime = str(dateTime)
    #分隔时间格式
    DT = re.findall("(\d{4}-\d{1,2}-\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2})",dateTime)
    #作者名称
    au=soup1.select('.author-name')[0].text
    #标题
    title=soup1.select('.title')[2].text
    time = DT
    #处理时间
    pubtime= datetime.strptime(time[0],'%Y-%m-%d %H:%M:%S')
    pubtime = pubtime.strftime('%Y{y}%m{m}%d{d} %U{a}%w %H{h}%M{f}%S{s}%p').format(y='',m='',d='',h='',f='',s='',a='周 星期')

    print(" 作者:",au,'\n',"标题:",title,'\n',"发布时间:",pubtime,'\n')

def main():
    while(1):
        url =input("输入哔哩哔哩的新闻网址:")
        bzNews(url)
        ending =int(input("输入0退出"))
        if(ending==0):break

main()

  另外通过查看network发现在一个viewinfo的requests对象中有存放点赞,观看数的json数据,下次再做解析json数据

 

posted @ 2019-04-01 21:47  FreyjaFs  阅读(171)  评论(0编辑  收藏  举报