博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
111
阅读量:6793 次
发布时间:2019-06-26

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

import reimport requestsfrom bs4 import BeautifulSoupfrom datetime import datetimedef getClickCount(r):    s = re.findall('\_(.*).html', r)[0].split('/')[-1]    res = requests.get('http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80'.format(s))    return  int(res.text.split('.html')[-1].lstrip("('").rstrip("');"))def getNewsDetail(newsUrl):   #一篇新闻的全部内容    resd = requests.get(newsUrl)    resd.encoding = 'utf-8'    soupd = BeautifulSoup(resd.text, 'html.parser')     #打开新闻详情并解析    news = {}    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:%S')    if  info.find('来源:')>0:        news['source']=info[info.find('来源:'):].split()[0].lstrip('来源:')    else:        news['source']='none'    news['content'] = soupd.select('.show-content')[0].text.strip()    news['click']=getClickCount(newsUrl)    news['newsUrl'] = newsUrl    return(news)def getListPage(pageUrl):   #9. 取出一个新闻列表页的全部新闻 包装成函数def getListPage(pageUrl)    res = requests.get(pageUrl)    res.encoding = 'utf-8'    soup = BeautifulSoup(res.text, 'html.parser')    newslist = []    for news in soup.select('li'):        if len(news.select('.news-list-title')) > 0:            newsUrl = news.select('a')[0].attrs['href']            newslist.append(getNewsDetail(newsUrl))    return(newslist)def getPageN():    res = requests.get('http://news.gzcc.cn/html/xiaoyuanxinwen/')    res.encoding = 'utf-8'    soup = BeautifulSoup(res.text, 'html.parser')    pagenumber=int(soup.select('.a1')[0].text.rstrip('条'))    page = pagenumber//10+1    return pagenewstotal = []firstPageUrl='http://news.gzcc.cn/html/xiaoyuanxinwen/'newstotal.extend(getListPage(firstPageUrl))n=getPageN()# f = open('gzccnews.txt','a',encoding='utf-8')for i in range(n,n+1):    listPageUrl='http://news.gzcc.cn/html/xiaoyuanxinwen/{}.html'.format(i)    newstotal.extend(getListPage(listPageUrl))for news in newstotal:    print(news)import pandasdf = pandas.DataFrame(newstotal)df.to_excel('gzccnews.xlsx')
# print(df.tail(3)) # print(df[2:5]) # print(df['title']) # print(df[(df['click']>2000)&(df['click']<5000)]) # sou = ['国际学院','学生工作处'] # print(df[df['source'].isin(sou)]) # print(df.index) # df[df['dt']>'2018-04-12 14:01:24'] # df.index # print(df[1:5]) # df1 = df.set_index('dt') # print(df1.index) # # print(df1['2018-04-12 17:27:50':'2018-04-04 09:35:00']) # print(df1['2018-04']) import sqlite3 with sqlite3.connect('gzccnewsdb.sqlite') as db:     df.to_sql('gzccnews',con= db,if_exists='replace') with sqlite3.connect('gzccnewsdb.sqlite') as db:     df2 = pandas.read_sql_query('SELECT * FROM gzccnews',con=db) print(df2) import pymysql from sqlalchemy import create_engine conn = create_engine('mysql+pymysql://root:@localhost:3306/gz?charset=utf8') pandas.io.sql.to_sql(df2,'news1',con=conn,if_exists='replace')
# f.close()

  

转载于:https://www.cnblogs.com/qq412158152/p/8866841.html

你可能感兴趣的文章
[安卓] 1、页面跳转+按钮监听
查看>>
[CareerCup] 15.5 Denormalization 逆规范化
查看>>
重新理解:ASP.NET 异步编程
查看>>
PostgreSQL在何处处理 sql查询之五十二
查看>>
Java开发环境搭建全过程(上)
查看>>
水仙花数&amp;素数&amp;质因数分解的C语言实现
查看>>
MTD应用学习:mtd和mtdblock的区别
查看>>
如何使用分布是缓存Hazelcast
查看>>
Spark-ML-01-小试spark分析离线商品信息
查看>>
【hadoop】 running beyond virtual memory错误原因及解决办法
查看>>
5G概念炒的火热,公共WiFi建设却为何不见进展?
查看>>
c/c++中指针学习的两个绝好例子
查看>>
天云郭宏:谈传统IDC困境 指点云建设
查看>>
云计算的最大问题是安全还是隐私?
查看>>
PDMS call Operating System Command
查看>>
如何取消codeblocks对msvcr100.dll的依赖?
查看>>
Jack Ma 你当初UT了没?
查看>>
IBM联手传智播客 落地大数据应用人才培养计划
查看>>
爱尔兰地方议会再次否决一光伏发电项目
查看>>
Appinions:IDC对物联网影响力位居前三
查看>>