获取全部校园新闻

1.取出一个新闻列表页的全部新闻 包装成函数。

2.获取总的新闻篇数,算出新闻总页数。

3.获取全部新闻列表页的全部新闻详情。

4.找一个自己感兴趣的主题,进行数据爬取,并进行分词分析。不能与其它同学雷同。

import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re
 
 
# 获取新闻列表页的简略信息
def crawlOnePage(url):
    res=requests.get(url)
    res.encoding = 'UTF-8'
    soup = BeautifulSoup(res.text, 'html.parser')
    cont=soup.select('.block')
    for i in cont:
        print('——'*10 + '---' + '——'*10)
        print()
        print('新闻网址: ' + 'www.sustc.edu.cn' + i.select('a')[0]['href'])
        print('新闻标题: ' + i.select('a')[0]['title'])
        a='http://www.sustc.edu.cn' + i.select('a')[0].attrs['href']
        print(a)
        getDetail(a)
 
 
        print()
 
# #获取新闻具体信息
def getDetail(url):
    res = requests.get(url)
    res.encoding = 'UTF-8'
    soup = BeautifulSoup(res.text, 'html.parser')
    cont=soup.select('.d')[0].text
    #将时间字符串转换成datetime格式
    release_time=datetime.strptime(cont,'%Y-%m-%d ')
    print(release_time)
    print('新闻类型: ' + soup.select('.tag')[0].text)
    content=soup.select('.txt')[1].select('p')
    print(content[-1].text)
    for i in content[:-2]:
        print(i.text)
 
#取得所有页面的新闻
def getTotalPage(url):
    res = requests.get(url)
    res.encoding = 'UTF-8'
    soup = BeautifulSoup(res.text, 'html.parser')
    # print(res.text)
    d = int(soup.select('.page_span')[0].text[:soup.select('.page_span')[0].text.index('')].lstrip(''))
    for i in range(1,d):
        page=str(i)
        geturl='http://www.sustc.edu.cn/news_events_/p/'+page
        crawlOnePage(geturl)
 
 
 
getTotalPage('http://www.sustc.edu.cn/news_events_/4722')

 

posted @ 2018-04-11 19:14  lawliet9  阅读(145)  评论(0编辑  收藏  举报