爬取全部的校园新闻

1.从新闻url获取新闻详情: 字典,anews

2.从列表页的url获取新闻url:列表append(字典) alist

3.生成所页列表页的url并获取全部新闻 :列表extend(列表) allnews

*每个同学爬学号尾数开始的10个列表页

4.设置合理的爬取间隔

import time

import random

time.sleep(random.random()*3)

5.用pandas做简单的数据处理并保存

保存到csv或excel文件 

newsdf.to_csv(r'F:\duym\爬虫\gzccnews.csv')

保存到数据库

import sqlite3
with sqlite3.connect('gzccnewsdb.sqlite') as db:
    newsdf.to_sql('gzccnewsdb',db)

# -*- coding: utf-8 -*-
"""
Created on Thu Apr 11 12:33:03 2019@author: Administrator
"""import requests
from bs4 import BeautifulSoup
from datetime import datetime
import re
import pandas as pd
import time
import random
import sqlite3newsUrl = 'http://news.gzcc.cn/html/2005/xiaoyuanxinwen_0710/4.html'
listUrl = 'http://news.gzcc.cn/html/xiaoyuanxinwen/'def click(url):id = re.findall('(\d{1,5})', url)[-1]clickUrl = 'http://oa.gzcc.cn/api.php?op=count&id={}&modelid=80'.format(id)resClick = requests.get(clickUrl)newsClick = int(resClick.text.split('.html')[-1].lstrip("('").rstrip("');"))return newsClickdef newsdt(showinfo):newsDate = showinfo.split()[0].split(':')[1]newsTime = showinfo.split()[1]newsDT = newsDate + ' ' + newsTimedt = datetime.strptime(newsDT, '%Y-%m-%d %H:%M:%S')return dtdef anews(url):newsDetail = {}res = requests.get(url)res.encoding = 'utf-8'soup = BeautifulSoup(res.text, 'html.parser')newsDetail['newsTitle'] = soup.select('.show-title')[0].textshowinfo = soup.select('.show-info')[0].textnewsDetail['newsDT'] = newsdt(showinfo)newsDetail['newsClick'] = click(newsUrl)return newsDetaildef alist(url):res = requests.get(listUrl)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]['href']newsDesc = news.select('.news-list-description')[0].textnewsDict = anews(newsUrl)newsDict['description'] = newsDescnewsList.append(newsDict)return newsListalist(listUrl)alist(newsUrl)
res = requests.get('http://news.gzcc.cn/html/xiaoyuanxinwen/')
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text, 'html.parser')for news in soup.select('li'):if len(news.select('.news-list-title')) > 0:newsUrl = news.select('a')[0]['href']print(anews(newsUrl))allnews = []
for i in range(57, 67):listUrl = 'http://news.gzcc.cn/html/xiaoyuanxinwen/{}.html'.format(i)allnews.extend(alist(listUrl))print("allnewsLength={}".format(len(allnews)))
print(allnews)res = requests.get('http://news.gzcc.cn/html/xiaoyuanxinwen/')
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text, 'html.parser')
for news in soup.select('li'):if len(news.select('.news-list-title')) > 0:newsUrl = news.select('a')[0]['href']print(anews(newsUrl))s1 = pd.Series([100, 23, 'bugingcode'])
print(s1)
pd.Series(anews)
newsdf = pd.DataFrame(allnews)
for i in range(5):print(i)time.sleep(random.random() * 3)print(newsdf)newsdf.to_csv(r'D:\py_file\gzcc.csv',encoding='utf_8_sig')with sqlite3.connect(r'D:\py_file\gzccnewsdb.sqlite') as db:newsdf.to_sql('gzccnewsdb',db)

 

转载于:https://www.cnblogs.com/gswyz/p/10688905.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向全球用户的Teams app之合规性篇

我在前两篇文章里分享了Global Ready的app时会遇到的不同挑战。这篇我继续分享在合规性方面的挑战。 说到合规性compliance,不得不说GDPR标准,当我们发布了一个teams app后,微软会要求开发人员做一个security self assessment,这…

C进阶 - 内存四驱模型

一.内存四驱模型 不知我们是否有读过 《深入理解 java 虚拟机》这本书,强烈推荐读一下。在 java 中我们将运行时数据,分为五个区域分别是:程序计数器,java 虚拟机栈,本地方法栈,java 堆,方法区。…

行内元素中去掉文字的上下间距,使得文字所在元素的高度同字体高度一致的方法...

之前在p这类块元素中的文字,给line-hight1;就可以去掉文字自带的上下间距, 像这样: 最近突然发现这个方法在行内块和块元素上好使,可当用在span或者a这类内联元素上都不好使,除了转为块元素的方法来去掉上下间距&#…

VSCode的Teams插件

随着今年在线的Build大会的结束,又是一大波的 Teams 新功能,新工具,新SDK。我接下来几篇博客就会详细和大家一一介绍。我今天先从VSCode的插件开始。 打开VS Code,搜索Teams,就可以找到Microsoft Teams Toolkit插件&a…

ADB原理,Wi-Fi连接,常用命令及拓展

Android 开发笔记 onGithub 文章多处链接需要科学上网 本文按顺序主要讲解了ADB的原理,使用Wi-Fi连接设备,ADB常用命令,在Java代码中执行shell命令,使用ddmlib进行扩展。 ADB的原理 参考 官方文档 ADB(Android Debug B…

使用Flow快速开发Teams小应用

继续我的上一篇博客,这篇继续介绍BUILD大会里的内容:Flow。 Flow是微软power平台的一个服务,通过简单的拖拽就可以完成一个业务逻辑的处理,现在Flow和Teams的结合十分紧密。我们来试一下。 先点击Teams左边的Flow菜单。 如果你的…

python正则中如何匹配汉字以及encode(‘utf-8’)和decode(‘utf-8’)的互转

正则表达式&#xff1a;  [\u2E80-\u9FFF]$ 匹配所有东亚区的语言   [\u4E00-\u9FFF]$ 匹配简体和繁体   [\u4E00-\u9FA5]$ 匹配简体   <input type"text" name"username" οnkeyup"valuevalue.replace([\u4E00-\u9FA5]$)"> 正则表…

【区块链】认识区块链的基本概念

2018年区块链技术风卷全球&#xff0c;似乎大家都在谈论区块链&#xff0c;那到底什么区块链&#xff0c;区块链到底能干什么&#xff0c;对普通人会有什么影响&#xff0c;很多人还是稀里糊涂&#xff0c;那么就谈谈我的一些理解吧&#xff0c;抛砖引玉欢迎探讨。 我是如何接触…

Java 分割、合并byte数组

场景&#xff1a;上传文件较大&#xff0c;把存放文件内容byte数组拆分成小的。下载的时候按照顺序合并。 起初觉得挺麻烦的&#xff0c;写完觉得挺简单。 切割&#xff1a; /*** 拆分byte数组* * param bytes* 要拆分的数组* param size* 要按几个组成一…

Java版本的Bot Framework SDK

微软为了鼓励Java开发人员开发bot&#xff0c;在上个月推出了Java的Bot SDK v4.6版本&#xff0c;目前还在Preview版本&#xff0c;相信不用多久就可以赶上其他版本了。 我的java还停留在 n 年前的水平&#xff0c;但是处于好奇&#xff0c;决定玩一下这套sdk。 这套sdk目前建…

jquery方法.serializeArray()获取name和value并转为json数组

jquery的.serializeArray()方法可以获取形如以下 [ {name: firstname, value: Hello}, {name: lastname, value: World}, ] name value组成的对象数组&#xff0c;如果我们想得到key为name,value为value的json对象&#xff0c;则如下转换&#xff1a; var m {}; $.each($(&quo…

Teams Bot 如何使用新的 System.Text.Json 库

我最近把 LuckyDraw的代码升级到了 .net core 3.1&#xff0c;当然我也很想使用最新的微软json库&#xff0c;System.Text.Json这个库的性能比之前Newtonsoft.Json速度更快&#xff0c;而且就我本人爱好来说&#xff0c;更加喜欢System.Text.Json的命名&#xff0c;之前一直觉得…

将Teams Template升级到dotnet core 3.1

为了方便开发者开发Teams应用&#xff0c;我在2018年做了dotnet c#的一套模板&#xff0c;这套模块一共有三种类型&#xff0c;一个是Teams OutgoingWebhook&#xff0c;一个是MessagingExtension&#xff0c;还有一个就是Tab。 今天特地去nuget上看了一下&#xff0c;下载量还…

【动态规划】cf1034C. Region Separation

质因数分解套路的复杂度分析的动态规划 题目大意 有一颗$n$个节点有点权的树&#xff0c;初始整棵树为$1$号区域&#xff0c;要求满足下列规则&#xff1a; 除非$i$是最后一个等级&#xff0c;否则每一个$i$级区域都要被分成至少两个$i1$级区域对于每种等级&#xff0c;每个点必…

阿里大鱼短信介入demo分享

下面是关于大鱼短信平台对接的例子&#xff0c;发短信的话&#xff0c;可以用这个&#xff0c;很好用 /*** 通过阿里短信接口发送短信验证码* ***/ public class SendSmsUtil {private static Logger logger Logger.getLogger(SendSmsUtil.class);/*** 生成验证码* return*/pu…

GraphAPI 1.0中新增加的Teams API

这篇继续介绍BUILD大会里的内容&#xff1a;两个新加入GraphAPI 1.0的关于Teams的API。 这两个新增api是关于在频道Channel里发送消息和回复消息的。实际上这两个api在beta版本中早就已经加入&#xff0c;上个月build大会中公布的只是把这两个api正式发布到1.0版本&#xff0c…

【数据结构】线性表(一):顺序列表

线性表(linear_list)是最常用且最简单的一种数据结构&#xff0c;简言之&#xff0c;一个线性表是n个数据元素的有序序列。 例如&#xff1a;&#xff08;a1 , ... , ai-1 , ai , ai1 , ... , an)&#xff1a;ai-1 是 ai 的直接前驱&#xff0c;ai1 是 ai 的直接后驱。 并且&am…

Python_XlrdXlwt

1 import xlrd 2 # \U 开始的字符被编译器认为是八进制 解决方法 r 3 objWB xlrd.open_workbook(rC:\Users\IBM\Desktop\S1\7月下旬入库表.xlsx) 4 # 索引号 objTable objWB.sheet_by_index(0) 5 objTable objWB.sheet_by_name(7月下旬入库表) 6 # 单元格3种读取方式 7 print…

校招需要看的书 巩固的知识

前言 感谢教练&#xff0c;学长们&#xff0c;队友&#xff0c;lollipop&#xff0c;猫哥&#xff0c;李哥&#xff0c;表哥&#xff0c;鸡哥&#xff0c;样样&#xff0c;咸糖&#xff0c;茗记&#xff0c;明沙&#xff0c;嘻&#xff0c;树佬(排名不分先后)等等太多太多的人的…

新的Teams API权限控制

这篇继续介绍BUILD大会里的内容&#xff1a;新的Teams API权限。这些新的权限让开发者可以更加细粒度的设置权限。 之前有些开发人员有问过我&#xff0c;为什么Graph API的权限这么多&#xff0c;为什么不针对Teams弄一个总的权限&#xff0c;这样不是更加简单吗&#xff1f;…