pythonallowpos_Python 爬取 热词并进行分类数据分析-[数据修复]

2023-11-05

日期:2020.02.01

博客期:140

星期六

【本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)】

所有相关跳转:

a.【简单准备】

c.【拓扑数据】

d.【数据修复】(本期博客)

i . 【App制作】

j . 【安全性改造】

今天问了一下老师,好像是之前数据爬取的内容就不对,不应该爬取标签,我仔细想了一下,也确实不是,所以今天我们来爬取IT新闻里的高频词!

我大致分了下面几个步骤

1、选择想要爬取的网站

之前那个网站有标签,所以我按照那个爬的,实际上没有必要,随便一个IT新闻网站都可以爬的!而且上一次的爬取网站有很大的问题就是它不能加载太多数据,加载个200次,就基本卡死了!所以我们尽量要找到一个有页数下表的列表类型的网页,要不然就是有“下一页”或“下一篇新闻”类似的链接的网页。

下面是提供参考的网站:

(1)、IT之家(大概可以爬到700条数据,数据大致横跨7天,推荐每周爬取一次,并进行汇总查重,其中有非信息类新闻夹杂)

(2)、博客园(推荐,大概可以一次爬3000条数据,数据大致横跨2个月零4天,推荐隔2个月爬一次,其中有少量非信息类新闻夹杂,且单项数据的文字数目较少)

(3)、DoNews(这个是针对互联网的)

(4)、ZOL中关村在线(这个只有一页,数据横跨两周,推荐隔13天爬)

(5)、IT界(可以直接一次爬取14969项新闻,其中有少量非信息类新闻夹杂,仅提供一次性爬取,最早数据日期为2012-04-23)

(6)、51CTO(上次推荐的网站,有标签标记和关键索引)

(7)、走廊网(和上面一样是滚动式网站,一样的弊病,还有这个网站分类有IT类,但是内容不完全是IT相关的)

(8)、说IT资讯网(数据都是老数据了,2011年还行,我们要的是热词,不推荐)

2、开始针对于网站进行爬取(目标:获得文字内容和网址链接)

我最终还是决定爬博客园了(我爬我自己),因为数据量足够(虽然不及老师的要求10万,但以上几个网站的数据量都那样吧,想要大量新闻数据...也说不定还有第三次重新数据爬取的博客呢!)

分析博客园的新闻链接地址

第一页链接:https://news.cnblogs.com/

第二页链接:https://news.cnblogs.com/n/page/2/

第n(n>=2&n<=100)页链接:https://news.cnblogs.com/n/page/{$n}/

来分析数据项

需要爬取标题、内部内容和本地链接,如果需要以“下一篇”的形式做数据跳转,那你还需要爬取下一篇的链接地址

爬取数据格式如下:

import codecs

class News:

title = ""

info = ""

link = ""

def __init__(self,title,info,link):

self.title = title

self.info = info

self.link = link

def __toString__(self):

return self.title+"\t"+self.info+"\t"+self.link

def __toFile__(self,filePath):

f = codecs.open(filePath, "a+", 'utf-8')

f.write(self.__toString__() + "\n")

f.close()

News.py

数据处理以后对应格式如下:

import codecs

class KeyWords:

word = ""

link = ""

num = 0

def __init__(self,word,link,num):

self.word = word

self.link = link

self.num = num

def __toString__(self):

return self.word +"\t"+str(self.num)+"\t"+self.link

def __toFile__(self,filePath):

f = codecs.open(filePath, "a+", 'utf-8')

f.write(self.__toString__() + "\n")

f.close()

KeyWords.py

爬取工具编写:

这个工具写了很久,因为博客园爬取需要模拟验证码登录,但你以为我成功找到了自动输入验证码的工具了吗?不!我只是取巧了一下:Canvas的代码我还不太了解,不可能深入去学习的(因为今天必须要爬到数据),嗯,怎么解决呢?你想一下,步枪有全自动的也有半自动的啊!我就不能来个半自动爬取吗?诶!我还真就是这样做的,登录需要点击验证码,我们就使用time.sleep()方法让代码晚一点再执行,等到它模拟出来了验证码,咱们人工给它验证一下!再然后呢?就等着它的数据自动被爬了呗!当然,等待多少时间因你的主机情况和网速而定,网速较慢的话,就给等待时间长一点!

单个新闻页面爬取类

import parsel

from urllib import request

import codecs

from selenium import webdriver

import time

# [ 一次性网页爬取的对象 ]

from itWords.retire.Kord import News

# [ 对字符串的特殊处理方法-集合 ]

class StrSpecialDealer:

# 取得当前标签内的文本

@staticmethod

def getReaction(stri):

strs = StrSpecialDealer.simpleDeal(str(stri))

strs = strs[strs.find('>')+1:strs.rfind('

return strs

# 去除基本的分隔符

@staticmethod

def simpleDeal(stri):

strs = str(stri).replace(" ", "")

strs = strs.replace("\t", "")

strs = strs.replace("\r", "")

strs = strs.replace("\n", "")

return strs

# 删除所有标签标记

@staticmethod

def deleteRe(stri):

strs = str(stri)

st = strs.find('

while(st!=-1):

str_delete = strs[strs.find('')+1]

strs = strs.replace(str_delete,"")

st = strs.find('

return strs

# 删除带有 日期 的句子

@staticmethod

def de_date(stri):

lines = str(stri).split("。")

strs = ""

num = lines.__len__()

for i in range(0,num):

st = str(lines[i])

if (st.__contains__("年") | st.__contains__("月")):

pass

else:

strs += st + "。"

strs = strs.replace("。。", "。")

return strs

# 取得带有 日期 的句子之前的句子

@staticmethod

def ut_date(stri):

lines = str(stri).split("。")

strs = ""

num = lines.__len__()

for i in range(0, num):

st = str(lines[i])

if (st.__contains__("年")| st.__contains__("月")):

break

else:

strs += st + "。"

strs = strs.replace("。。","。")

return strs

@staticmethod

def beat(stri,num):

strs = str(stri)

for i in range(0,num):

strs = strs.replace("["+str(i)+"]","")

return strs

class Oranpick:

basicURL = ""

profile = ""

# ---[定义构造方法]

def __init__(self, url):

self.basicURL = url

self.profile = webdriver.Firefox()

self.profile.get("https://account.cnblogs.com/signin?returnUrl=https%3A%2F%2Fnews.cnblogs.com%2Fn%2F654191%2F")

self.profile.find_element_by_id("LoginName").send_keys("初等变换不改变矩阵的秩")

self.profile.find_element_by_id("Password").send_keys("password") # your password

time.sleep(2)

self.profile.find_element_by_id("submitBtn").click()

# 给予 15s 的验证码人工验证环节

time.sleep(15)

self.profile.get(url)

# 重新设置

def __reset__(self,url):

self.basicURL = url

self.profile.get(url)

# ---[定义释放方法]

def __close__(self):

self.profile.quit()

# 获取 url 的内部 HTML 代码

def getHTMLText(self):

a = self.profile.page_source

return a

# 获取基本数据

def getNews(self):

index_html = self.getHTMLText()

index_sel = parsel.Selector(index_html)

context = index_sel.css('#news_title a')[0].extract()

context = StrSpecialDealer.getReaction(context)

context = StrSpecialDealer.simpleDeal(context)

conform = index_sel.css('#news_body')[0].extract()

conform = StrSpecialDealer.deleteRe(conform)

conform = StrSpecialDealer.simpleDeal(conform)

news = News(title=context, info=conform, link=self.basicURL)

return news

def main():

url = "https://news.cnblogs.com/n/654221/"

ora = Oranpick(url)

# print(ora.getNews().__toString__())

# main()

Oranpick.py

新闻页面地址爬取类

import time

import parsel

from urllib import request

import codecs

from itWords.retire.Oranpick import Oranpick

# [ 连续网页爬取的对象 ]

class Surapity:

page = 1

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36'}

basicURL = ""

oran = ""

# ---[定义构造方法]

def __init__(self):

self.page = 1

self.basicURL = "https://news.cnblogs.com/"

self.oran = Oranpick("https://start.firefoxchina.cn/")

def __close__(self):

self.oran.__close__()

def __next__(self):

self.page = self.page + 1

self.basicURL = 'https://news.cnblogs.com/n/page/'+str(self.page)+'/'

# 获取 url 的内部 HTML 代码

def getHTMLText(self):

req = request.Request(url=self.basicURL, headers=self.headers)

r = request.urlopen(req).read().decode()

return r

# 获取页面内的基本链接

def getMop(self,filePath):

index_html = self.getHTMLText()

index_sel = parsel.Selector(index_html)

links = index_sel.css(".news_entry a::attr(href)").extract()

size = links.__len__()

for i in range(0,size):

link = "https://news.cnblogs.com"+links[i]

self.oran.__reset__(link)

self.oran.getNews().__toFile__(filePath)

def fileReset(filePath):

f = codecs.open(filePath, "w+", 'utf-8')

f.write("")

f.close()

def main():

filepath = "../../testFile/rc/news.txt"

s = Surapity()

fileReset(filepath)

s.getMop(filepath)

s.__next__()

s.getMop(filepath)

while s.page <= 100:

s.__next__()

s.getMop(filepath)

s.__close__()

main()

Surapity.py

这样就能够爬取到相关数据

3、利用 Python 的 开源 jieba 组件进行中文词频统计

我的下载方法:(确保电脑处于联机状态——就是你联网了,你也可以参照上述官网下载地址的下载方法)

(1)打开PyCharm

(2)在非菜单栏、非窗口、非代码演示部分鼠标右击,并选中"Open in Terminal"

(3) 输入命令(因你运行的 Python 环境而异)

easy_install jieba   无限制

pip install jieba     Python 2 & Python 3

pip3 install jieba   Python 3

(4)等待其下载完成,如图:

使用方法参照以下博客(本期博客非针对jieba,不再过多赘述):

小注:

其实我们对 jieba 组件的使用还有一些问题的,不过我们只要高频词,使用那三种模式应该无所谓了(还是推荐精准模式)

4、制作词语筛选部分,并进行封装

测试文件

《2019年OPPO开放平台年度总结》正式发布

近日,OPPO开放平台通过官微平台发布了《2019年OPPO开放平台年度总结》。

这份年度总结对OPPO智能服务新生态的用户属性、用户偏好、市场增长,以及OPPO开放平台的技术能力和服务能力进行了详细的介绍,帮助开发者及合作伙伴挖掘数据背后的衍生价值,携手共创更优质的用户体验。

ColorOS全球月活超3.2亿,以优质年轻群体为主

根据《2019年OPPO开放平台年度总结》显示,目前ColorOS全球月活跃用户数已超过3.2亿,覆盖国家和地区超过140个。而在国内用户中,25岁~34岁的优质年轻群体占比更是高达63%,24岁以下用户占比为21%,足见OPPO手机设备深受年轻群体所喜爱。

正因如此,OPPO无论是硬件端的产品创新,还是软件端的“黑科技”研发,也都始终迎合年轻群体偏好。如在2019年10月上市的OPPO Reno Ace,其配置为骁龙855 Plus、65W超级闪充、90Hz电竞屏、最高12GB+256GB存储组合,2999元起的高性价比优势,让其开售5分钟销售额破亿,斩获全平台手机单品销量&销售额双冠军。

此外,该产品搭载OPPO“五大系统能力开放引擎”之一的Hyper Boost,并与游戏厂商深度合作,更充分地发挥了硬件性能。OPPO Reno Ace高性价比的产品配置以及“黑科技”加持,让年轻消费者直呼“这很Ace!”。

OPPO开放平台携手合作伙伴共建智能服务新生态,打造优质用户体验

产品受到用户喜爱,同样也离不开智能服务新生态的建设。OPPO开放平台为了给用户带来更优质的产品体验,将其技术能力深度赋能给合作伙伴,携手合作伙伴合作共赢。

根据《2019年OPPO开放平台年度总结》显示,在OPPO开放平台的应用分发情况分析中,视频播放类、教育学习类、实用工具类APP是最受用户青睐的应用类别。

时代大环境下,OPPO积极建设视频功能迎合用户需求,OPPO短视频业务月活跃用户已突破6000万,每日人均使用时长超过50分钟,为优质的视频内容分发和应用分发,提供了可以结合用户手机操作偏好的又一大渠道。

在短视频类目的软件能力建设方面,OPPO也始终走在创新前沿。当抖音、快手等热门短视频类APP接入“五大系统能力开放引擎”之一的CameraUnit,调用OPPO手机核心功能“超级防抖”,就能够让用户直接拍摄出稳定、清晰的视频。

深度挖掘数据的衍生价值,OPPO早已不再是一家纯粹的手机公司

硬件产品受到年轻用户喜爱,软件能力不断创新,也让OPPO的业务线早已不再局限于手机制造。当前,OPPO已经建设了更为完善的开放生态,除了技术能力加持赋能合作伙伴,依托自身市场优势,也为应用、游戏、快应用、小游戏等产品分发推广和联运提供了更为广阔的发展空间,为各链端合作伙伴提供全方位的服务。

根据《2019年OPPO开放平台年度总结》显示,以OPPO软件商店和游戏中心的全球月活跃用户数已超过3亿,全球日分发次数也超过7.8亿次。同时,OPPO开放平台还在积极扩展自身的业务服务范围,并不断创新服务形式。以应用分发业务为例,通过数据赋能、活动赋能、素材A/B test、活动组建化赋能等形式,帮助开发者实现更加高效的APP运营。

除此之外,OPPO还在科技的各个领域积极探索。例如,在2019年12月19日的2019 OPPO开发者大会上发布IoT“启能行动”,将帮助更多品牌厂商快速实现产品的智能化。

此外,2020年OPPO将继续投入价值10亿资源,为应用、服务、内容、出海领域的优秀合作伙伴,提供开发、流量、营销推广等一系列的资源支持,全方位助力合作伙伴的业务发展;OPPO荣获中文机器阅读理解挑战赛DuReader 2019年度冠军,AI领域再次取得新突破……

由此可见,通过对多维度技术的持续、广泛的布局,OPPO早已不再是一家纯粹的手机公司。据OPPO创始人陈明永介绍,OPPO未来三年将投入500亿研发预算,持续关注5G、人工智能、AR、大数据等前沿技术,并着力构建底层硬件核心技术以及软件工程和系统能力。

OPPO开放平台作为B端业务的主要窗口,这份《2019年OPPO开放平台年度总结》的公布既能让行业窥见到OPPO综合能力的一方天地,也将吸引更多合作伙伴加入OPPO开放平台,合作共创新未来。

查看完整年度总结,请关注OPPO开放平台官方微信公众号“OPPO开发者”或微博“OPPO开放平台”。

ad.txt

标准规范类

# 新闻段落高频词分析器

import jieba

import jieba.analyse

class ToolToMakeHighWords:

test_str = ""

# 初始化

def __init__(self,test_str):

self.test_str = str(test_str)

pass

def buildWithFile(self,filePath,type):

file = open(filePath, encoding=type)

self.test_str = file.read()

def buildWithStr(self,test_str):

self.test_str = test_str

pass

# 统计词

def getWords(self,isSimple,isAll):

if(isSimple):

words = jieba.lcut_for_search(self.test_str)

return words

else:

# True - 全模式 , False - 精准模式

words = jieba.cut(self.test_str, cut_all=isAll)

return words

# 统计词频并排序

def getHighWords(self,words):

data = {}

for charas in words:

if len(charas) < 2:

continue

if charas in data:

data[charas] += 1

else:

data[charas] = 1

data = sorted(data.items(), key=lambda x: x[1], reverse=True) # 排序

return data

# 以频率要求数目为依据进行筛选

def selectObjGroup(self,num):

a = jieba.analyse.extract_tags(self.test_str, topK=num, withWeight=True, allowPOS=())

return a

def selectWordGroup(self,num):

b = jieba.analyse.extract_tags(self.test_str, topK=num, allowPOS=())

return b

def main():

file = open('../testFile/rc/ad.txt', encoding="utf-8")

file_context = file.read()

ttmhw = ToolToMakeHighWords(file_context)

li = ttmhw.selectWordGroup(2)

print(li)

main()

ToolToMakeHighWords.py

测试截图

5、相关类进行关联得到需要的数据

整理以上代码

对已经写好的Surapity.py文件进行修改:(使其在爬取的过程中,直接完成统计,并记录网址)

import time

import parsel

from urllib import request

import codecs

from itWords.retire.Kord import KeyWords

from itWords.retire.Oranpick import Oranpick

# [ 连续网页爬取的对象 ]

from itWords.retire.highWords import ToolToMakeHighWords

class Surapity:

page = 1

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.75 Safari/537.36'}

basicURL = ""

oran = ""

# ---[定义构造方法]

def __init__(self):

self.page = 1

self.basicURL = "https://news.cnblogs.com/"

self.oran = Oranpick("https://start.firefoxchina.cn/")

def __close__(self):

self.oran.__close__()

def __next__(self):

self.page = self.page + 1

self.basicURL = 'https://news.cnblogs.com/n/page/'+str(self.page)+'/'

# 获取 url 的内部 HTML 代码

def getHTMLText(self):

req = request.Request(url=self.basicURL, headers=self.headers)

r = request.urlopen(req).read().decode()

return r

# 获取页面内的基本链接

def getMop(self,filePath):

index_html = self.getHTMLText()

index_sel = parsel.Selector(index_html)

links = index_sel.css(".news_entry a::attr(href)").extract()

size = links.__len__()

for i in range(0,size):

link = "https://news.cnblogs.com"+links[i]

self.oran.__reset__(link)

news = self.oran.getNews()

ttm = ToolToMakeHighWords(news.getSimple())

words = ttm.getHighWords(ttm.getWords(False,False))

leng = words.__len__()

# 频数 要在 15次 以上

for i in range(0,leng):

if words[i][1]<=15:

break

keyw = KeyWords(word=words[i][0],link=link,num=words[i][1])

keyw.__toFile__(filePath)

def fileReset(filePath):

f = codecs.open(filePath, "w+", 'utf-8')

f.write("")

f.close()

def main():

filepath = "../../testFile/rc/news.txt"

s = Surapity()

fileReset(filepath)

s.getMop(filepath)

s.__next__()

s.getMop(filepath)

while s.page <= 100:

s.__next__()

s.getMop(filepath)

s.__close__()

main()

Surapity.py

对应测试截图:

小注:这只是中间过程,需要进一步统计(上述是实现了每一篇新闻的频数大于15的高频词)

上述结果已经可以导入MySql了,如果不想用文件导入,就用下面的Sql语句,别忘了输出之前先建表(words表)

有了文件sql语句可以由此生成:

import codecs

filePath = "../../testFile/rc/words_sql.txt"

f = codecs.open(filePath, "w+", 'utf-8')

f.write("")

f.close()

fw = open("../../testFile/rc/news.txt", mode='r', encoding='utf-8')

tmp = fw.readlines()

num = tmp.__len__()

for i in range(0,num):

group = tmp[i].split("\t")

group[0] = "'" + group[0] + "'"

group[2] = "'" + group[2][0:group[2].__len__()-1] + "'"

f = codecs.open(filePath, "a+", 'utf-8')

f.write("Insert into words values ("+group[0]+","+group[1]+","+group[2]+");"+"\n")

f.close()

SqlDeal.py

之后建立视图 keywords

视图定义如下:

SELECT

`words`.`word` AS `word`,

sum(`words`.`num`) AS `num`

FROM

`words`

GROUP BY

`words`.`word`

ORDER BY

`num` DESC

keywords(View)

视图展示:

然后,将第136期博客的 Servlet 修改一下:

package com.servlet;

import java.io.IOException;

import java.sql.SQLException;

import java.util.List;

import javax.servlet.ServletException;

import javax.servlet.ServletOutputStream;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.json.JSONArray;

import org.json.JSONObject;

import com.dblink.basic.utils.SqlUtils;

import com.dblink.basic.utils.sqlKind.MySql_s;

import com.dblink.basic.utils.user.UserInfo;

import com.dblink.bean.BeanGroup;

import com.dblink.sql.DBLink;

@SuppressWarnings("unused")

public class ServletForWords extends HttpServlet{

/**

*

*/

private static final long serialVersionUID = 1L;

//----------------------------------------------------------------------//

public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException

{

request.setCharacterEncoding("utf-8");

response.setCharacterEncoding("utf-8");

response.setContentType("application/json");

response.setHeader("Cache-Control", "no-cache");

response.setHeader("Pragma", "no-cache");

JSONArray jsonArray = new JSONArray();

DBLink dbLink = new DBLink(new SqlUtils(new MySql_s("rc"),new UserInfo("root","123456")));

BeanGroup bg = null;

try {

bg = dbLink.getSelect("Select * From keywords ").beans;//where num > 6

int leng = bg.size();

for(int i=0;i

{

JSONObject jsonObject = new JSONObject();

jsonObject.put("name",bg.get(i).get(0));

jsonObject.put("value",bg.get(i).get(1));

jsonArray.put(jsonObject);

}

} catch (SQLException e) {

// Do Nothing ...

}

dbLink.free();

ServletOutputStream os = response.getOutputStream();

os.write(jsonArray.toString().getBytes());

os.flush();

os.close();

}

//---------------------------------------------------------------------------------//

}

ServletForWords.java

对应截图:

Python 爬取 热词并进行分类数据分析-&lbrack;解释修复&plus;热词引用&rsqb;

日期:2020.02.02 博客期:141 星期日 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

Python 爬取 热词并进行分类数据分析-&lbrack;云图制作&plus;数据导入&rsqb;

日期:2020.01.28 博客期:136 星期二 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入](本期博客) ...

Python 爬取 热词并进行分类数据分析-&lbrack;简单准备&rsqb; (2020年寒假小目标05)

日期:2020.01.27 博客期:135 星期一 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备](本期博客) b.[云图制作+数据导入] ...

Python 爬取 热词并进行分类数据分析-&lbrack;热词分类&plus;目录生成&rsqb;

日期:2020.02.04 博客期:143 星期二   [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[ ...

Python 爬取 热词并进行分类数据分析-&lbrack;拓扑数据&rsqb;

日期:2020.01.29 博客期:137 星期三 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

Python 爬取 热词并进行分类数据分析-&lbrack;App制作&rsqb;

日期:2020.02.14 博客期:154 星期五 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

Python 爬取 热词并进行分类数据分析-&lbrack;JSP演示&plus;页面跳转&rsqb;

日期:2020.02.03 博客期:142 星期一 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

Python 爬取 热词并进行分类数据分析-&lbrack;热词关系图&plus;报告生成&rsqb;

日期:2020.02.05 博客期:144 星期三 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

Python爬取股票信息,并实现可视化数据

前言 截止2019年年底我国股票投资者数量为15975.24万户, 如此多的股民热衷于炒股,首先抛开炒股技术不说, 那么多股票数据是不是非常难找, 找到之后是不是看着密密麻麻的数据是不是头都大了? 今 ...

随机推荐

MySQL各逻辑模块工作配合

在了解了MySQL的各个模块之后(点击查看MySQL各个逻辑模块),我们再看看MySQL各个模块间是如何相互协同工作的.接下来,我们通过启动MySQL,客户端连接,请求query,得到返回结果,到最后 ...

今天考试的JAVA编程题

今天早上考了java, 题目感觉还不错, 共四道题,有一道定义类的没啥意思就没列出来. 这三道题目还是不错的,特别是第一道,大一上学期学linux的时候,那时还没学C语言呢,准确的来说,还不知道什么是 ...

c&num;4&period;0新特性之协变与逆变

1.C#3.0以前的协变与逆变 如果你是第一次听说这个两个词,别担心,他们其实很常见.C#4.0中的协变与逆变[1](Covariance and contravariance)有了进一步的完善,主要 ...

INDEX相关

1.索引应该建立在WHERE子句经常用到的表列上,如果在大表上频率使用某列或者某几列作为条件执行检索操作,并且检索的行数低于总行数的15%,那么应该考虑在该几行上添加索引. 2.为了提高多表连接的性能 ...

java&lowbar;eclipse&lowbar;maven&lowbar;svn&lowbar;主题彩色插件&lowbar;全屏插件

作为一名不算新手的猿猿,还来纠结IDE环境搭建实属不该,不过着实纠结了不少时间. target: eclipse + maven +svn + 设置默认编码+全屏 绕的路就不说了,直奔主题,由于mav ...

CF &num;349 div1 B&period; World Tour

题目链接:http://codeforces.com/problemset/problem/666/B 大意是给一张有向图,选取四个点,使得走这四个点,任意两个点之间走最短路,总距离最长. 3000个 ...

Charles手机抓包实用教程

一.Charles官网下载链接:https://www.charlesproxy.com/download/ 二.抓包步骤: 1.安装Charles,并打开 2.电脑设置代理端口:打开charles- ...

【Python】keras使用Lenet5识别mnist

原始论文中的网络结构如下图: keras生成的网络结构如下图: 代码如下: import numpy as np from keras.preprocessing import image from ...

ASP&period;NET Core Web API处理HttpResponseMessage类型返回值的问题

在将我们的 web api 从 .NET Framework 迁移至 .net core(asp.net core 1.1)之后,遇到一个问题. 之前返回值类型为 HttpResponseMessag ...

shell for 循环数组

name=(aa bb) ;i

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pythonallowpos_Python 爬取 热词并进行分类数据分析-[数据修复] 的相关文章

  • Python做曲线拟合(一元多项式拟合及任意函数拟合)

    目录 1 一元多项式拟合 使用方法 np polyfit x y deg 2 任意函数拟合 使用 curve fit 方法 实例 1 初始化 x 和 y 数据集 2 建立自定义函数 3 使用自定义的函数生成拟合函数绘图 1 一元多项式拟合
  • pip 常用命令及控制台怎么查看python 及pip 和已安装包版本号

    在使用python的时候 经常使用到pip这个工具 可以很方便的线上安装依赖库 当然pip还有很多参数都可以帮我们去查询一些库信息 在安装python的时候 下载带有pip的安装包就可以直接安装pip啦 当然没有带pip的 也可以通过下载安
  • [C] 跨平台使用Intrinsic函数范例2——使用SSE2、AVX指令集 处理 双精度浮点数组求和

    作者 zyl910 本文面对对SSE等SIMD指令集有一定基础的读者 以双精度浮点数组求和为例演示了如何跨平台使用SSE2 AVX指令集 支持vc gcc编译器 在Windows Linux Mac这三大平台上成功运行 一 关键讲解 前文
  • 90道渗透测试面试题(附答案)

    2023年已经快过去一半了 不知道小伙伴们有没有找到自己心仪的工作呀 最近后台收到不少小伙伴说要我整理一些渗透测试的面试题 今天它来了 觉得对你有帮助的话记得点个赞再走哦 1 什么是渗透测试 渗透测试是一种评估计算机系统 网络或应用程序的安
  • 四.javascript对象

    目录 一 对象的介绍 1 对象的概念 2 对象的属性 3 对象的方法 二 创建对象 1 使用构造函数创建内置对象 2 直接创建自定义对象 3 使用自定义构造函数创建对象 三 对象的属性 1 设置对象的属性 2 存取对象属性 3 属性的枚举
  • 使用gpt和mindshow快速制作PPT

    目录 准备工具 PPT制作大体流程 工具 步骤 获取PPT大纲 注意 要markdown格式 编辑 打开MindShow 找不到的可以私信我 编辑 创建ppt 编辑 选择ppt基本样式 编辑 点击下载 不过要提前登录一下就好 编辑 添加动画
  • Qt(c++)调用python一直报错slot、hypot等

    最近在Qt里调用python代码 参考教程 https blog csdn net a137748099 article details 119217197 引入python的include libs之后 在c 里写了简单的调用python
  • 各种通信方式对比

    各种通信方式对比 2011年11月09日 16 58 25 horatio2010 阅读数 444 通信名称 连接端 通信方式 传输顺序 通信速度 I2C scl sda 2 串行 高位 低位 标准模式速度100kbit s 快速模式
  • 前后端常见的几种鉴权方式

    本文链接 https blog csdn net wang839305939 article details 78713124 最近在重构公司以前产品的前端代码 摈弃了以前的session cookie鉴权方式 采用token鉴权 忙里偷闲
  • C#深拷贝和浅拷贝的区别

    先上代码 后解释 public class Person public int Age public DateTime BirthDate public string Name public IdInfo IdInfo
  • C++ Templates:实例化

    延迟实例化 当隐式实例化类模板时 同时也实例化了该模板的每个成员声明 但并没有实例化相应的定义 然而 存在例外 1 如果类模板包含了一个匿名的union 那么该union定义的成员同时也被实例化了 2 作为实例化类模板的结果 虚函数的定义可
  • react ref和组件API

    介绍 昨天学习到了生命周期 今天我们接着昨天的知识点继续学习 今天学习一下state setState以及ref和组件API 大家感兴趣的话可以跟随文章进行学习呦 state和setState state 组件自身状态 setState u
  • 【100%通过率 】【华为OD机试真题】模拟商场优惠打折(一)【2022 Q4

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 模拟商场优惠打折 有三种优惠券可以用 满减券 打折券和无门槛券 满减券 满100减10 满200减20 满300减30 满400减40 以此类推
  • 辛普森悖论

    本系列主要为大家带来一整套的博弈论问题 广义 因为在面试的过程中 除了常规的算法题目 我们经常也会被问到一些趣味题型来考察思维 而这类问题中 很多都有博弈论的影子存在 这些公司里以FLAG Facebook LinkedIn Amazon
  • webpack5.x性能优化之 代码分包 配置文件分离 多入口 SplitChunks cacheGroups runtimeChunk dynamic import(动态导入) 懒加载 魔法注释

    webpack优化 文章目录 webpack优化 代码分离 认识代码分离 多入口起点 Entry Dependencies 入口依赖 SplitChunks chunks 其他的splitChunks属性 很少手动配置 minSize和ma
  • java多线程---C++没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序的设计。

    多线程 Java 的特点之一就是内置对多线程的支持 多线程允许同时完成多个任务 实际上多线程使人产生多个任务在同时执行的错觉 因为目前的计算机的处理器在同一时刻只能执行一个线程 但处理器可以在不同的线程之间快速地切换 由于处理器速度非常快
  • uni-app 和 spring boot 实现通知栏消息推送 (第二版)

    背景 上次第一版打包上线后 无法使用推送失效 第一版使用的是 websocket h5puls 原因 估计是云打包后对这个做了一些编译处理 导致失效 解决方案 用官网的教程 走个推服务器 取消后端自己的websocket实现 虽然麻烦 但是
  • 深度学习入门(四):经典网络架构(Alexnet、Vgg、Resnet)

    一 经典网络架构 Alexnet 2012年ImageNet竞赛冠军 8层神经网络 5层卷积层 3层全连接 二 经典网络架构 Vgg 2014 年ImageNet 竞赛冠军 VGG 最大的特点就是它在之前的网络模型上 通过比较彻底地采用 3
  • Excutor线程池原理详解

    目录 一 线程池的创建以及参数 二 任务提交的方法 三 线程池参数解释 四 线程池原理 五 线程池原理图 六 execute方法执行流程图 一 线程池的创建以及参数 public ThreadPoolExecutor int corePoo

随机推荐

  • vue3.0版本给对象新增属性

    对象新增属性 Reflect set 目标对象 属性名 值 Reflect set val middle middle
  • Spring Cloud Alibaba 2021.0.1.0 版本发布啦

    01 什么是 Spring Cloud Alibaba Aliware Spring Cloud Alibaba 是由阿里巴巴 后文简称 阿里 中间件团队于 2018 年 7 月开源 为业界提供的一套基于阿里内部分布式技术的一站式微服务构建
  • JavaWeb学习-Servlet处理解析JSON文件导出Excel实例

    文章目录 前言 一 实例要求 二 主要问题点 1 保存请求中的文件 2 JSON的简单处理 3 Servlet共享数据 实现勾选信息导出为excel 三 源码 总结 前言 这里是javaweb小白第一次尝试写博客 主要是想记录一下自己在学习
  • vue 简单实现vuex原理

    效果图如下 1 准备好环境 使用 vue cil 初始化项目配置 npm install g vue cli 全局安装 vue cli vue create demo vue 创建项目 yarn add vuex安装vuex创建一个stor
  • 什么是区块链?区块链相关知识区入门

    初识区块链 1 区块链家族 一 去中心化 父亲 基本概念 中心化和去中心化就是集权与分权 去中心化是一种哲学中思想 在人类存在时即有 主旨为弱化中心 实现人与人之间的直接沟通 交易的一种方式 去中心化 不是不要中心 而是由节点来 自由选择中
  • 使用gdb调试出现 No debugging symbols found in a.out

    使用常规的gcc编译或者使用带调式信息 g的编译都有可能会在使用gdb工具的时候出现No debugging symbols found in a out错误 1 常规编译 使用常规编译生成的可执行文件正常一定会出现No debugging
  • 服务器强制关机后,无法开机

    服务器强制关机后 开不了机 开机后显示 dev sda1 recovering journal dev sda1 clean 3905813 58720032 files 193134708 234422272 blocks 经询问 是由强
  • 2014软专高级程序语言T4(三角形面积)

    平面有100个点 任意三个点可以构成一个三角形 编一个程序 输入100个点的坐标 输出在构成的所有三角形中 最大的三角形的面积 代码如下 include
  • 数据处理中的归一化与反归一化

    一 定义 数据归一化 标准化 是数据预处理的一项基础工作 不同评价指标往往具有不同的量纲和量纲单位 为避免影响数据分析结果 消除指标之间的量纲影响 须对数据进行标准化处理 数据的归一化 normalization 是将数据按比例缩放 使之落
  • redis必杀命令:键(key)

    语法 Redis 键命令的基本语法如下 redis 127 0 0 1 6379 gt COMMAND KEY NAME 例如 redis 127 0 0 1 6379 gt SET w3ckey redis OK redis 127 0
  • 使用UltraISO或Rufus制作U盘启动安装优麒麟19.04

    本文教你在Windows操作系统中使用UltraISO 软碟通 或Rufus制作U盘启动盘的方法 以优麒麟Ubuntu Kylin 19 04为例 适用于大多数Linux发行版 包括Ubuntu 18 04等 UltraISO和Rufus任
  • [网络安全自学篇] 三十八.hack the box渗透之BurpSuite和Hydra密码爆破及Python加密Post请求(二)

    这是作者的系列网络安全自学教程 主要是关于安全工具和实践操作的在线笔记 特分享出来与博友们学习 希望您们喜欢 一起进步 前文详细讲解了hack the box在线渗透平台获取邀请码 注册过程 本文将分享Web渗透三道入门题目 它们包括Pyt
  • python3 [爬虫入门实战] 爬虫之使用selenium 爬取百度招聘内容并存mongodb

    爬取的内容为百度招聘页面下的python 杭州地区 所要爬取的内容 一共爬取的是6个字段 1 招聘岗位 2 招聘城市 3 招聘公司 4 招聘薪资 5 招聘日期 6 招聘来源网站 用的是selenium beautifulsoup mongo
  • 餐饮开发项目有智能排菜算法遇到的问题

    说白了 智能排菜就是在用户下了订单之后自动的打印菜品 包含相同的菜品可以一起打出来 以提高饭店效率 个人的想法就是运行一个Timer 事实的检测智能排菜这个功能是否启用 若启用的话则自动打印菜品 Timer的用法就是要继承TimeTask把
  • 【无标题】Altium Designer 版本功能介绍收集

    尊敬的原文作者 感谢分享 如文章转载有冒犯之处 请您联系告知 鄙人将在第一时间删除 原文连接 Altium Designer更新得那么快 到底应该用哪个版本 电子发烧友网 AD19 0 6 显然 软件版本越高 功能越齐全 可能存在一些未知的
  • 使用JAVA实现语音朗读一段文本

    需求要用JAVA去调用windows自带的语音引擎去朗读一段文字 网上资料少得可怜 把百度和bing都翻遍了 总算找到一段代码 而且朗读起来还有感情色彩 win7测试 不过多音字还是暂时没解决 需要做的工作 1 下载jacob 1 17 M
  • 从源码出发浅析 Android TV 的焦点移动原理 (上篇)

    转自 https cloud tencent com developer article 1006289 焦点 焦点 Focus 可以理解为选中态 在Android TV上起很重要的作用 一个视图控件只有在获得焦点的状态下 才能响应按键的C
  • 安装Android Studio出现的问题--SDK Components Setup

    安装的时候遇到这样的问题 查了半天资料才解决 先看一看出错的地方 这一步是安装sdk 选择安装的位置 我选择直接安装到Android目录下 但是出问题了 换了其他的也不可以 再看一看我的文件夹安装目录 问题就出现在这里了 文件夹没弄对 解决
  • flex程序

    lt mx Application xmlns mx http www adobe com 2006 mxml layout absolute gt lt mx Script gt lt mx HTTPService id productS
  • pythonallowpos_Python 爬取 热词并进行分类数据分析-[数据修复]

    日期 2020 02 01 博客期 140 星期六 本博客的代码如若要使用 请在下方评论区留言 之后再用 就是跟我说一声 所有相关跳转 a 简单准备 c 拓扑数据 d 数据修复 本期博客 i App制作 j 安全性改造 今天问了一下老师 好