标签:text tle format count getc print soup 来源 form
1.取出一个新闻列表页的全部新闻 包装成函数。
2.获取总的新闻篇数,算出新闻总页数。
3.获取全部新闻列表页的全部新闻详情。
#coding=utf-8 import requests from bs4 import BeautifulSoup from datetime import datetime import re import time def getClickCount(newurl): newsId = re.search(‘\_(.*).html‘,newurl).group(1).split(‘/‘)[1] # 生成点击次数的Request URL clickUrl = ‘http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80‘.format(newsId) return((requests.get(clickUrl).text.split(‘.html‘)[-1].lstrip("(‘").rstrip("‘);"))) def getNewsDetail(newurl): #读取一篇新闻的所有信息 resd = requests.get(newurl) resd.encoding = ‘utf-8‘ soupd = BeautifulSoup(resd.text, ‘html.parser‘) #打开新闻详细页并解析 title=soupd.select(‘.show-title‘)[0].text info=soupd.select(‘.show-info‘)[0].text dt=datetime.strptime(info.lstrip(‘发布时间:‘)[0:19],‘%Y-%m-%d %H:%M:%S‘) if info.find(‘来源:‘)>0: source=info[info.find(‘来源:‘):].split()[0].lstrip(‘来源:‘) else: source=‘none‘ click=getClickCount(newurl) print(dt,title,newurl,source,click) def getListPage(listPageUrl): #一个分页的所有新闻 res = requests.get(listPageUrl) res.encoding = ‘utf-8‘ soup = BeautifulSoup(res.text, ‘html.parser‘) for news in soup.select(‘li‘): if len(news.select(‘.news-list-title‘)) > 0: # 获取新闻模块链接 a = news.a.attrs[‘href‘] # 调用函数获取新闻正文 getNewsDetail(a) def getPage(): # 获取新闻列表总页数 res = requests.get(‘http://news.gzcc.cn/html/xiaoyuanxinwen/‘) res.encoding = ‘utf-8‘ soup = BeautifulSoup(res.text, ‘html.parser‘) n = int(soup.select(‘.a1‘)[0].text.rstrip(‘条‘)) // 10 + 1 return n firstPage=‘http://news.gzcc.cn/html/xiaoyuanxinwen/‘ getListPage(firstPage) #获取新闻列表总页数 n=getPage() for i in range(n,n+1): pageurl=‘http://news.gzcc.cn/html/xiaoyuanxinwen/{}.html‘.format(i) getListPage(pageurl)
截图:
4.找一个自己感兴趣的主题,进行数据爬取,并进行分词分析。
等会再修改,还没修改完
标签:text tle format count getc print soup 来源 form
原文地址:https://www.cnblogs.com/tiankongyiluozhiwu/p/8798516.html