博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构化与保存
阅读量:5026 次
发布时间:2019-06-12

本文共 2220 字,大约阅读时间需要 7 分钟。

1.结构化:

  • 单条新闻的详情字典:news
  • 一个列表页所有单条新闻汇总列表:newsls.append(news)
  • 所有列表页的所有新闻汇总列表:newstotal.extend(newsls)

2.转换成pandas的数据结构DataFrame

3.从DataFrame保存到excel

4.从DataFrame保存到sqlite3数据库

import requestsfrom bs4 import BeautifulSoupfrom datetime import datetimeimport reimport pandasimport sqlite3  def getclick(url):#给定单条新闻链接,返回点击次数    newsid=re.search('_(.*).html',url).group(1).split('/')[1]    clickurl='http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80'.format(newsid)    click=int(requests.get(clickurl).text.split('.')[-1].lstrip("html('").rstrip("');"))    return click  def getdetail(url):#给定单条新闻链接,返回新闻细节的字典    resd=requests.get(url)    resd.encoding='utf-8'    soupd=BeautifulSoup(resd.text,'html.parser')    news={}    news['url']=url    news['title']=soupd.select('.show-title')[0].text    info=soupd.select('.show-info')[0].text    #news['dt']=datetime.strptime(info.lstrip('发布时间:')[0:19],'%Y-%m-%d %H:%M:')    #news['source']=re.search('来源:(.*)点击',info).group(1).strip()    news['content']=soupd.select('.show-content')[0].text.strip()    news['click']=getclick(url)    return(news)          def onepage(pageurl):#给定新闻列表页的链接,返回该页所有新闻细节字典的列表    res=requests.get(pageurl)    res.encoding='utf-8'    soup = BeautifulSoup(res.text,'html.parser')    newsls=[]    for news in soup.select('li'):        if len(news.select('.news-list-title'))>0:            newsls.append(getdetail(news.select('a')[0]['href']))    return(newsls) #print(onepage('http://news.gzcc.cn/html/xiaoyuanxinwen/')) newstotal=[]gzccurl='http://news.gzcc.cn/html/xiaoyuanxinwen/'newstotal.extend(onepage(gzccurl))#新闻列表首页#print(newstotal) res=requests.get(gzccurl)res.encoding='utf-8'soup = BeautifulSoup(res.text,'html.parser')n=int(soup.select('.a1')[0].text.rstrip('条'))pages=n//10+1 #新闻列表页的总页数  for i in range(2,3):    listurl='http://news.gzcc.cn/html/xiaoyuanxinwen/{}.html'.format(i)    newstotal.extend(onepage(listurl))#后面的每一个列表页#print(len(nestotal))  df=pandas.DataFrame(newstotal)#转换成pandas的数据结构DataFrameprint(df.head())#print(df['click'])df.to_excel('gzccnews.xlsx')#从DataFrame保存到excel#从DataFrame保存到sqlite3数据库with sqlite3.connect('gzccnewsdbl.sqlite')as db:    df.to_sql('gzccnewsdb1',con=db)

  

转载于:https://www.cnblogs.com/c-s-y/p/7694187.html

你可能感兴趣的文章
S1的小成果:MyKTV系统
查看>>
从setting文件导包
查看>>
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
union和union all
查看>>
Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
查看>>
PMD使用提醒
查看>>
Codeforces 887D Ratings and Reality Shows
查看>>
论文《A Generative Entity-Mention Model for Linking Entities with Knowledge Base》
查看>>
CentOS 6.7编译安装PHP 5.6
查看>>
Linux记录-salt分析
查看>>
Android Studio默认快捷键
查看>>
发布开源库到JCenter所遇到的一些问题记录
查看>>
第七周作业
查看>>
函数式编程与参数
查看>>
flush caches
查看>>
SSAS使用MDX生成脱机的多维数据集CUB文件
查看>>
ACM_hdu1102最小生成树练习
查看>>
MyBatis源码分析(一)--SqlSessionFactory的生成
查看>>
android中ListView点击和里边按钮或ImageView点击不能同时生效问题解决
查看>>
CTF常用工具之汇总
查看>>