前言: 这是一个帮忙做的毕业论文设计相关的爬虫,爬取美团的评论后,进行词云分析,倒是不复杂,我花半个小时写好了爬虫相关的代码,然后又花了近两个小时录制了教程视频,如果大家想看的话,等我到学校有网络了,可以发给大家学习,这个视频由于在录制的过程收到了干扰,分为了4个部分,分别为(抓包分析,美团爬虫,IP代理,词云流程),里面都是我个人积累的爬虫实战经验,可以作为一个很好的入门项目。
文章目录
1、抓包分析
2、美团爬虫
2.1、如何提取json()数据?
2.2、正式爬取信息
3、IP代理
3.1、爬取存入CSV代码汇总
3.1、爬取存入TXT代码汇总
4、词云流程
4.1、打开txt文本做词云图
4.1.1、对jieba分词的简单了解
4.1.2、词云基础
4.1.3、加入背景图片
4.2、打开CSV文本做词云图
4.2.1、导入数据
4.2.2、读取表格中的评论文本
4.2.2.1、单独把文本读取出来
4.2.2.2、数据清洗
4.3、转化为文本
开发环境: window10,python37,jupyter notebook 爬取结果及流程文档下载: https://www.lanzous.com/i9m0sfe
1、抓包分析
按照需求,我随便选择了一家花溪大学城评论多的点评点评信息进行爬取 商铺链接: https://www.meituan.com/meishi/193383554/
1.1、分析网页
对于网络爬虫,我拿到的第一件事就是分析它的网页数据的加载方式,再决定我请求服务器的方式。
从上面的文字看出,它并没有对字体进行加密,这样我们就省心一点儿了。
它的这些评论都可以直接查看,不需要登陆,这样的话反爬措施又少了一层。
点击下一页,它的URL并没有发生变化,可以初步判断它是ajax加载的数据,所以我们可以抓包来看看了。
1.2、如何进行抓包?
浏览器的中的每一条信息的加载都离不开 Network ,这就意味着我们可以通过它来查看网页加载出来的内容。
抓包的步骤:
鼠标右击,打开检查功能
选择Network
选择All
刷新网页
查看加载的数据
如何更好的查看加载的内容是什么?
我们的目的只是找到自己需要的内容,没有必要全部都查看一遍,只需要知道一些关键的数据进行查看就好了。 最重要的是注意 Network 中的Type(加载的文件类型) 和 size(加载的文件大小) 这两个要素,如我们要查看的目标是文字文件,带有图片类型的文件都可以不用查看了,其二就是它的大小,上面的很多文件都没有显示大小,我们几乎可以把它忽略了。对于网页不是很了解的同学,不建议直接使用筛选功能。
查看内容: 也可以把这些信息复制到一个json数据解析的网站上解析一下,就可以看到格式化的内容了。
从上面信息中,可以发现一共有10个用户在评论,说明每次它只加载10个评论与回复。
我们再来看它请求数据的方式,把它点在headers这里查看它的请求头 注意看这上面的信息,完全和它这个路径的信息相同,我们把这个链接复制到浏览器打开试试
如果出现了这样的结果,说明这个链接已经自带请求参数了,这样我们就方便很多了,可以直接拿来就用。
现在点击第二页,找到它的这个路径,复制过来,粘贴到编辑器里,然后再点击下一页,复制第三来进行对比 从上面的结果发现,它们的参数只有 offset=
不同,并且间隔为10,接下来我们直接生成对应的这个数据通道就ok了。
这样抓包就算完成了,接下了就可以请求服务器,提取数据了。
2、美团爬虫
2.1、如何提取json()数据?
json数据的模块拥有包含关系,它们的级别可以互相包含,拥有层次感,如: 具体提取和美化的方法可以转至我的另一篇博客学习 python爬虫爬取微博之战疫情用户评论及详情
2.2、正式爬取信息
import requests
from fake_useragent import UserAgent
for page in range ( 0 , 371 , 10 ) :
url = "https://www.meituan.com/meishi/api/poi/getMerchantComment?uuid=2ff7056c-9d76-424c-b564-b7084f7e16e4&platform=1&partner=126&originUrl=https%3A%2F%2Fwww.meituan.com%2Fmeishi%2F193383554%2F&riskLevel=1&optimusCode=10&id=193383554&userId=&offset={}&pageSize=10&sortType=1" . format ( page)
headers = {
"User-Agent" : UserAgent( ) . chrome
}
respone = requests. get( url = url, headers = headers)
for item in respone. json( ) [ 'data' ] [ 'comments' ] :
userId = item[ 'userId' ]
userName = item[ 'userName' ]
avgPrice = item[ 'avgPrice' ]
comment = item[ 'comment' ]
merchantComment = item[ 'merchantComment' ]
data = ( userId, userName, avgPrice, comment, merchantComment)
print ( data)
爬取到几条以后,它就这样报错了: 突然间就说找不到 data
了,这是为什么呢?来打印一下我们最后这一次请求看看结果: 正常情况下,不可能上一个还是正常的,下一个网络就有问题的,推断应该是服务器已经识别出来这是一个爬虫程序在向它发起的请求,我们再来浏览器中打开它评论的这个页面来看看,发现它出现了一个验证码,我们输入验证码后重新请求,程序又可以正常跑一会儿,然后就会挂掉,估计是它禁止某个IP不断的访问它的信息,接下来去弄一堆 IP 代理来访问它试试
3、IP代理
下去爬一个 IP代理网站的 IP来供我们使用代理,具体方法可以到 学习python爬虫看一篇就足够了之爬取《太平洋汽车》论坛及点评实战爬虫大全 观看 第3部分:requests + IP代理
,我在这里有详细的介绍,这个代码也是直接从那里复制过来的。
3.1、爬取存入CSV代码汇总
import requests, json, re, random, time, csv
from fake_useragent import UserAgent
starttime = time. time( )
ips = [ ]
for i in range ( 1 , 6 ) :
headers = {
"User-Agent" : UserAgent( ) . chrome
}
ip_url = 'http://www.89ip.cn/index_{}.html' . format ( i)
html = requests. get( url= ip_url, headers= headers) . text
res_re = html. replace( " " , "" ) . replace( "\n" , "" ) . replace( "\t" , "" )
r = re. compile ( '(.*?) (.*?) ')
result = re. findall( r, res_re)
for i in range ( len ( result) ) :
ip = "http://" + result[ i] [ 0 ] + ":" + result[ i] [ 1 ]
proxies = { "http" : ip}
baidu = requests. get( "https://www.baidu.com/" , proxies = proxies)
if baidu. status_code == 200 :
ips. append( proxies)
print ( "正在准备IP代理,请稍后。。。" )
fp = open ( './美团_大学城.csv' , 'a' , newline= '' , encoding= 'utf-8-sig' )
writer = csv. writer( fp)
writer. writerow( ( '用户ID' , '用户名' , '平均价' , '评论' , '回复' ) )
for page in range ( 0 , 371 , 10 ) :
url = 'https://www.meituan.com/meishi/api/poi/getMerchantComment?uuid=9f45527e-2983-40c9-bc92-f58a8290c947&platform=1&partner=126&originUrl=https%3A%2F%2Fwww.meituan.com%2Fmeishi%2F193383554%2F&riskLevel=1&optimusCode=10&id=193383554&userId=&offset={}&pageSize=10&sortType=1' . format ( page)
try :
headers = {
"User-Agent" : UserAgent( ) . chrome
}
rep = requests. get( url= url, headers= headers, proxies= ips[ random. randint( 0 , len ( ips) - 1 ) ] )
print ( "爬取条数:" , page)
for info in rep. json( ) [ 'data' ] [ 'comments' ] :
userId = info[ 'userId' ]
userName = info[ 'userName' ]
avgPrice = info[ 'avgPrice' ]
comment = info[ 'comment' ]
merchantComment = info[ 'merchantComment' ]
data = ( userId, userName, avgPrice, comment, merchantComment)
writer. writerow( ( data) )
except :
print ( "这里发生异常:" , url)
pass
fp. close( )
endtime = time. time( )
sumTime = endtime - starttime
print ( "一共用的时间是%s秒" % sumTime)
3.1、爬取存入TXT代码汇总
import requests, json
from fake_useragent import UserAgent
import requests, re, random
from lxml import etree
from fake_useragent import UserAgent
ips = [ ]
for i in range ( 1 , 6 ) :
print ( "正在准备IP代理,请稍等。。。" )
headers = {
"User-Agent" : UserAgent( ) . chrome
}
ip_url = 'http://www.89ip.cn/index_%s.html' % i
res = requests. get( url= ip_url, headers= headers) . text
res_re= res. replace( '\n' , '' ) . replace( '\t' , '' ) . replace( ' ' , '' )
re_c = re. compile ( '(.*?) (.*?) ')
result = re. findall( re_c, res_re)
for i in range ( len ( result) ) :
ip = 'http://' + result[ i] [ 0 ] + ':' + result[ i] [ 1 ]
proxies= { "http" : ip}
html = requests. get( 'https://www.baidu.com/' , proxies= proxies)
if html. status_code == 200 :
ips. append( proxies)
headers = {
"User-Agent" : UserAgent( ) . chrome
}
for page in range ( 0 , 371 , 10 ) :
url = 'https://www.meituan.com/meishi/api/poi/getMerchantComment?uuid=9f45527e-2983-40c9-bc92-f58a8290c947&platform=1&partner=126&originUrl=https%3A%2F%2Fwww.meituan.com%2Fmeishi%2F193383554%2F&riskLevel=1&optimusCode=10&id=193383554&userId=&offset={}&pageSize=10&sortType=1' . format ( page)
try :
rep = requests. get( url= url, headers= headers, proxies= ips[ random. randint( 0 , len ( ips) - 1 ) ] )
print ( "爬取条数:" , page)
for info in rep. json( ) [ 'data' ] [ 'comments' ] :
with open ( "./美团文本.txt" , "a" , encoding= 'utf-8' ) as f:
comment = str ( info[ 'comment' ] )
merchantComment = str ( info[ 'merchantComment' ] )
f. write( comment)
f. write( merchantComment)
f. close( )
except :
pass
4、词云流程
4.1、打开txt文本做词云图
import jieba
from wordcloud import WordCloud
4.1.1、对jieba分词的简单了解
精准模式:
cut_text = jieba. cut( "信息管理与信息系统" , cut_all= False )
cut_text = ' ' . join( cut_text)
cut_text
'信息管理 与 信息系统'
全能模式:
cut_text = jieba. cut( "信息管理与信息系统" , cut_all= True )
cut_text = ' ' . join( cut_text)
cut_text
4.1.2、词云基础
f = open ( "./美团文本.txt" , "r" , encoding= "utf-8" )
txt = f. read( )
cut_text = jieba. cut( txt, cut_all= False )
cut_text = ' ' . join( cut_text)
word_cloud = WordCloud( font_path= "C:/Windows/Fonts/simhei.ttf" ,
background_color= "white" ,
max_words= 800 ,
max_font_size= 180 ,
min_font_size= 40 ,
width= 1920 ,
height= 1080 ) . generate( cut_text)
plt. figure( figsize= ( 16 , 9 ) )
plt. imshow( word_cloud, interpolation= "bilinear" )
plt. axis( "off" )
word_cloud. to_file( 'output.png' )
plt. show( )
4.1.3、加入背景图片
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
from matplotlib. image import imread
import matplotlib. pyplot as plt
import jieba. analyse
back_img = imread( "bg_pic1.jpg" )
img_colors = ImageColorGenerator( back_img)
file = open ( "./美团文本.txt" , encoding= "utf-8" )
txt = file . read( )
tags = jieba. analyse. extract_tags( txt, topK = 1000 , withWeight = True , allowPOS= ( ) )
data = { item[ 0 ] : item[ 1 ] for item in tags}
word_cloud = WordCloud( font_path= "c:\windows\Fonts\simhei.ttf" ,
background_color= "white" ,
max_words= 1000 ,
max_font_size= 100 ,
width= 1920 ,
mask= back_img,
height= 1080 ) . generate_from_frequencies( data)
file . close( )
wc_color = word_cloud. recolor( color_func= img_colors)
plt. figure( figsize= ( 12 , 12 ) )
plt. imshow( word_cloud, interpolation= 'bilinear' )
plt. axis( "off" )
word_cloud. to_file( 'output1.png' )
plt. show( )
4.2、打开CSV文本做词云图
我们在做词云图的时候,是对文本进行分词,再统计词频;对于储存在表格中的数据,我们可以先把它提取出来,再进行上面的操作就可以了.
import pandas as pd
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
from matplotlib. image import imread
import matplotlib. pyplot as plt
import jieba. analyse
4.2.1、导入数据
data = pd. read_csv( "./美团_大学城.csv" )
data
4.2.2、读取表格中的评论文本
4.2.2.1、单独把文本读取出来
for pl in data[ '评论' ] :
print ( pl)
4.2.2.2、数据清洗
str(pl) 把pl转化为字符串
strip() 移除首尾的空格
replace(“nan”, “”) 替换掉空值nan
replace("\n", “”) 替换掉换行符
for pl in data[ '评论' ] :
comment = str ( pl) . strip( ) . replace( "nan" , "" ) . replace( "\n" , "" )
print ( comment)
4.3、转化为文本
txts = [ ]
txts = [ ]
for pl in data[ '评论' ] :
txts. append( str ( pl) . strip( ) . replace( "nan" , "" ) . replace( "\n" , "" ) )
for hf in data[ '回复' ] :
txts. append( str ( hf) . strip( ) . replace( "nan" , "" ) . replace( "\n" , "" ) )
text = ' ' . join( txts)
print ( text)
现在的文本已经去掉了换行和间隔, 可以直接使用上面的方法生成词云图了, 文本数据就在text中
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
from matplotlib. image import imread
import matplotlib. pyplot as plt
import jieba. analyse
back_img = imread( "bg_pic1.jpg" )
img_colors = ImageColorGenerator( back_img)
tags = jieba. analyse. extract_tags( text, topK = 1000 , withWeight = True , allowPOS= ( ) )
data = { item[ 0 ] : item[ 1 ] for item in tags}
word_cloud = WordCloud( font_path= "c:\windows\Fonts\simhei.ttf" ,
background_color= "white" ,
max_words= 1000 ,
max_font_size= 100 ,
width= 1920 ,
mask= back_img,
height= 1080 ) . generate_from_frequencies( data)
wc_color = word_cloud. recolor( color_func= img_colors)
plt. figure( figsize= ( 12 , 12 ) )
plt. imshow( word_cloud, interpolation= 'bilinear' )
plt. axis( "off" )
word_cloud. to_file( 'output1.png' )
plt. show( )
词云所用的数据全部来自于上面的爬虫,结果和 html流程文档 已经全部放在上面的链接中,需要的话可以自行下载使用
你可能感兴趣的:(爬虫项目实战)
项目实战系列三: 家居购项目 第五部分
~ 小团子
# 家居购项目 python 开发语言
显示订单[订单管理]暂时缺货需求分析1.如果某家居库存为0,首页的"AddtoCart"按钮显示为"暂时缺货"2.后台也加上校验.只有在库存>0时,才能添加到购物车代码实现1.修改web/views/customer/index.jspAddToCart[缺货]0}">AddToCart2.修改src/com/zzw/furns/web/CartServlet.java,当添加购物车时,要保证商品
Rust模块std::thread
夏天又到了
Rust编程与项目实战 rust java 算法
【图书介绍】《Rust编程与项目实战》-CSDN博客《Rust编程与项目实战》(朱文伟,李建英)【摘要书评试读】-京东图书(jd.com)Rust到底值不值得学,之一-CSDN博客Rust到底值不值得学,之二-CSDN博客Rust多线程编程概述-CSDN博客12.3.2等待所有线程完成在前面的实例中,主线程没等到派生线程执行完毕就结束了,从而整个进程就会结束。那么怎么让派生线程执行完毕呢?答案是通
Android-Jetpack架构组件(二)带你了解Lifecycle,给2021的移动开发一些建议
flutter架构师
程序员 面试 移动开发 android
@OverrideprotectedvoidonResume(){super.onResume();myPresenter.onResume();}@OverrideprotectedvoidonPause(){super.onPause();myPresenter.onPause();}}classMyPresenter{《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战
《洋葱阅读法》- 训练你的海盗大脑
完美的熊
一阅读的4种途径——人,事,网,书阅读的本质就是大脑的应用,我们要学习大脑的运作原理,如何锻炼我们的大脑,学习时如何保持专注力,怎样提高记忆力,阅读就是在可以利用的时间里,以自己能理解的程度去学习。二大脑的结构与阅读第一层是原始脑,又称为爬虫脑,是我们在爬行动物的时代发育出来的大脑;第二层是我们基于爬虫脑慢慢发育成的哺乳动物脑;第三层是我们人类经过几万年的时间进化出来的新大脑皮层,也称为皮质脑。科
总结50位大咖运营项目实战经验,这5大条件缺一不可,实用所有行业
1bdcc660f394
文:轻腾创者圈子不同,认知不同。思维不同,行为所异。一位大咖在他的博客中说:想要学习一项技能,最好的方法就是选择这个行业比较优秀的人对标,然后把他们所有的朋友圈及文章文案,全部从头到尾研究一篇。不得不说,从这句话,我真实的去学习和研究很多大咖他们的内容,确实学到不少东西。每一次学习,都可以从中吸取自己想要的内容,然后自己总结应用,就可以形成自己的体系。今年我至少有总结过50位大咖运营项目的实战经验
nginx过滤爬虫访问
梓沂
nginx 爬虫 运维
思路来自ai:Nginx可以通过多种方式来限制爬虫的行为:1.**User-Agent限制**:可以通过检查HTTP请求的User-Agent头部来识别并限制某些爬虫。例如,可以在Nginx配置文件中使用`if`语句来检查User-Agent,并使用`return`指令拒绝特定的User-Agent。```nginxif($http_user_agent~*(BadCrawler|AnotherB
自然语言处理系列六十六》对话机器人项目实战》对话机器人原理与介绍
陈敬雷-充电了么-CEO兼CTO
python 人工智能 算法 自然语言处理 机器人 人工智能 AIGC chatgpt gpt ai
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】文章目录自然语言处理系列六十六对话机器人项目实战》对话机器人原理与介绍对话机器人项目代码实战总结自然语言处理系列六十六对话机器人项目实战》对话机器人原理与介绍对话机器人是一个用来模拟人类对话或聊天的计算机程序,本质上是通过机器学习和人工智能等技术让
使用 RecursiveUrlLoader 实现递归网页爬取:深入解析与实践指南
qq_37836323
python 前端 数据库
使用RecursiveUrlLoader实现递归网页爬取:深入解析与实践指南1.引言在当今的数字时代,网络爬虫已成为获取和分析大量在线信息的重要工具。LangChain提供的RecursiveUrlLoader是一个强大的工具,能够递归地爬取网页内容,并将其转换为易于处理的文档格式。本文将深入探讨RecursiveUrlLoader的使用方法、特性以及实际应用场景。2.RecursiveUrlLo
利用PHP和Selenium自动化采集数据、实现爬虫抓取
IT大数据小助手
php selenium 自动化
随着互联网时代的到来,抓取互联网上的数据成为越来越重要的工作。在web前端开发领域,我们经常需要获取页面中的数据来完成一系列的交互操作,为了提高效率,我们可以将这个工作自动化。本文将介绍如何利用PHP和Selenium进行自动化数据采集和爬虫抓取。一、什么是SeleniumSelenium是一个免费的开源自动化测试工具,主要用于自动化测试Web应用程序,可以模拟真实的用户行为,实现自动交互。使用S
Python爬虫基础总结
醉蕤
Python python 爬虫
活动地址:CSDN21天学习挑战赛学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。学习日记目录学习日记一、关于爬虫1、爬虫的概念2、爬虫的优点3、爬虫的分类4、重要提醒5、反爬和反反爬机制6、协议7、常用请求头和常用的请求方法8、常见的响应状态码9、url的详解二、爬虫基本流程三、可能需要的库四、小例1、requests请求网页2、python解析网页源码(使用Be
2024年最新初面蚂蚁金服,Python爬虫实战:爬取股票信息(1),面试题解析已整理成文档怎么办
imtokenmax合约众筹
2024年程序员学习 python 爬虫 开发语言
收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!由于文件比较多,这里只是将部分目录截图出来如果你需要这些资料,可以添加V无偿获取:hxbc188(备注666)正文首先要爬取股票数据
基础爬虫 requests selenium aiohttp BeautifulSoup pyQuery Xpath&CssSelector
肯定是疯了
http://47.101.52.166/blog/back/python/%E7%88%AC%E8%99%AB.html请求requestsseleniumaiohttp*处理BeautifulSouppyQueryXpath&CssSelector*存储pymysqlPyMongoredisaiomysql*Scrapy
SprinBoot+Vue动漫交流与推荐平台的设计与实现
赵广陆
project vue.js 前端 javascript
目录1项目介绍2项目截图3核心代码3.1Controller3.2Service3.3Dao3.4application.yml3.5SpringbootApplication3.5Vue4数据库表设计5文档参考6计算机毕设选题推荐7源码获取1项目介绍博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+粉丝,超300w访问量,专注于大学生项目实战开发、讲解和答疑辅导
Python怎么去抓取公众号的文章?Python爬虫爬取微信公众号方法
快乐星球没有乐
python 爬虫 微信
很多小伙伴在学习了爬虫之后都能够使用它去抓取一些网页上的数据了,但是最近有小伙伴问我微信公众号上的文章要怎么去抓取出来。那这一篇文章将会以实际的代码示例来介绍如何去使用python爬虫抓取微信公众号的文章。1.下载wkhtmltopdf1这个应用程序,它可以将HTML格式的数据转换成PDF格式的。2.打开python编辑器,新建一个python项目命名为wxgzhPDF并在里面创建一个空白的pyt
WebView交互架构项目实战(三),androidstudio地图开发
wq221aas
程序员 架构 移动开发 android
不过根据官方文档,AppCache已经不推荐使用了,标准也不会再支持。现在主流的浏览器都是还支持AppCache的,以后就不太确定了。同样给出Android端启用AppCache的代码。WebViewmyWebView=(WebView)findViewById(R.id.webview);WebSettingswebSettings=myWebView.getSettings();webSett
WebView交互架构项目实战(三),史上超级详细
m0_66264881
程序员 架构 移动开发 android
returnsplashTargetPath+“/”;}***1:常用JS本地化及延迟加载*******资源等文件(不需要更新)本地存储,在需要的时候直接从本地获取。哪些资源需要我们去存储在本地呢,当然是一些不会被更新的资源,例如图片文件,js文件,css文件,比预加载更粗暴的优化方法是直接将常用的JS脚本本地化,直接打包放入apk中。比如H5页面获取用户信息,设置标题等通用方法,就可以直接写入一
Django5+Vue3:OA系统前后端分离项目实战-后端登录功能实现(7)
Fender的web学习路程
Django5+Vue3 python django vue web
Django5+Vue3系列文章前言本节开始,全文仅对会员开放。若点赞和收藏数量超过100,全文将免费开放。此项目采用Django框架的5.0.7版本进行开发。Django5.0支持的Python版本为3.10、3.11和3.12。OA系统系列文章将持续更新,直至项目的Docker部署阶段。专栏链接:~快捷传送门:留个赞再走呗!~个人博客:~所有文章尽在简客免费阅读~文章目录目录Django5+V
WebView交互架构项目实战(三):多进程WebView使用实践
2401_84433924
交互 架构
prompt(“settitle”,JSON.stringify(params))},‘params’:{},‘callback’:function(res){}},}catch(e){alert(‘demo.jserror:’+e);}varreadyEvent=document.createEvent(‘Events’);readyEvent.initEvent(‘JSBridgeReady’
项目实战 ---- 商用落地视频搜索系统(6)---UI 结构及与service互动
PhoenixAI8
AI落地项目设计与实现 ui flask python vector db 人工智能 milvus
目录背景技术问题描述Jinja2概述特性问题解决手段问题1问题2问题3代码实现前端代码python代码解释页面展示home上传视频搜索视频背景通过1-5我们已经搭建好完整的后台功能,service,及准备与UI交互的路由及接口。下面就是UI部分的搭建。UI部分,这次我选择了Flask作为搭建载体,他的使用非常方便,router清晰,调用也非常简洁。不再需要tomcat等单独的container运行
爬虫代理IP池的实现
小温侯
代理池的思路之前写过一篇关于代理的文档:爬虫和IP代理,里面介绍了一些代理的基本知识,后半部分我也见到那说了下如何用Python抓取免费的代理IP并检验其有效性。这篇文章就是在其基础上尝试完整实现了一个代理IP池:后端用的是sqlite3,因为之前爬网易云音乐评论时后端就是用的它,最后存了大概一万条评论,读取写入时间都很不错,我估计代理池里的IP最后也只会是这个量级。还有就是sqlite3用起来非
Python 协程 & 异步编程 (asyncio) 入门介绍
linmeiyun
后端 python python 爬虫 学习 开发语言 机器学习
在近期的编码工作过程中遇到了async和await装饰的函数,查询资料后了解到这种函数是基于协程的异步函数。这类编程方式称为异步编程,常用在IO较频繁的系统中,如:Tornadoweb框架、文件下载、网络爬虫等应用。协程能够在IO等待时间就去切换执行其他任务,当IO操作结束后再自动回调,那么就会大大节省资源并提供性能。接下来便简单的讲解一下异步编程相关概念以及案例演示。1.协程简介1.1协程的含义
python爬取上市公司年报信息_python3爬取巨潮资讯网的年报数据
Tsy.H
需要用到的库:importrequestsimportrandom#随机生成爬虫休眠时间importtime前期准备:巨潮资讯网有反爬虫机制,所以先打开巨潮资讯网的年报板块,看看有什么解决办法。巨潮咨询年报板块网页向服务器发送的数据请求可以通过这样的方式获取单页年报的数据,数据格式为json。其中包括年报名称,地址等数据。所以思路就是,先通过单页的数据,然后在对每页中的年报数据进行下载。完整代码:
python网络爬虫(五)——爬取天气预报
光电的一只菜鸡
python python 爬虫 开发语言
1.注册高德天气key 点击高德天气,然后按照开发者文档完成key注册;作为爬虫练习项目之一。从高德地图json数据接口获取天气,可以获取某省的所有城市天气,高德地图的这个接口还能获取县城的天气。其天气查询API服务地址为https://restapi.amap.com/v3/weather/weatherInfo?parameters,若要获取某城市的天气推荐2.安装MongoDB Mong
Python爬虫——使用JSON库解析JSON数据_爬虫json解析
Java老杨
程序员 python 爬虫 json
文章目录1如何在网页中获取JSON数据?2Python内置的JSON库这几天在琢磨爬取动态网页,发现需要爬取js内容,虽然说最后还是没有用上JSON库进行解析,不过笔记写的都写了,就发出来记录一下吧。1如何在网页中获取JSON数据?打开一个具有动态渲染的网页,按F12打开浏览器开发工具,点击“网络”,再刷新一下网页,观察是否有新的数据包。发现有js后缀的文件,这就是我们想要的json数据了。2Py
python正则表达式(.*?)以及compile的用法示例
测试老孔
python python 正则表达式
在Python开发爬虫过程中经常会遇到正则表达式,其中(.*?)的使用概率较高,那么这个正则表达式到底什么意思呢?“.*?”表示非贪心算法,表示要精确的配对“.*”表示贪心算法,表示要尽可能多的匹配“()”表示要获取括弧之间的信息Python提供re模块,包含所有正则表达式的功能。由于Python的字符串本身也用\转义,所以要特别注意:s='ABC\\-001'#Python的字符串#对应的正则表
这家公司靠爬虫窃取简历,年收入4个亿!现被一窝端了
编程鸭
来源:程序猿近日,有网友爆料称简历大数据公司北京巧达科技所有员工被警察带走,公司办公室也被查封。据TechWeb报道该公司早已被封,封条显示时间为3月14日,距今天已有两周的时间,但封条并非警察所贴,封条由中钢国际广场保安部张贴。有网友回答问题爆料巧达科技全员被带走的原因是,非法收集他人简历获取简历、数据变现,年收4个亿根据公开信息,巧达科技号称拥有中国最大的简历数据库,其主要数据来源为“乔大招”
顶级的python入门教程!小白到大师,从这篇教程开始!
马大哈(Python)
python pycharm 开发语言 学习 青少年编程
1.为什么要学习Python?学习Python的原因有很多,以下是几个主要的原因:广泛应用:Python被广泛应用于Web开发、数据科学、人工智能、机器学习、自动化运维、网络爬虫、科学计算、游戏开发等多个领域。掌握Python意味着你可以在这些领域中找到丰富的职业机会。入门简单:Python的语法简洁明了,易于学习和理解,对于编程初学者来说非常友好。它的代码风格一致,可读性强,有助于培养良好的编程
python项目实战之基于深度学习的电影评论情感分析系统
什么任性
python 深度学习 开发语言 django flask html5 javascript
一、引言在信息爆炸的时代,用户生成的内容(UGC)如社交媒体、博客和论坛上的评论等,已经成为产品或服务口碑的重要来源。情感分析是一种自然语言处理(NLP)技术,用于识别和提取文本中的情感信息,从而理解大众对特定话题的态度。基于深度学习的电影评论情感分析系统能够自动分类评论的情感倾向,如正面、负面或中性,为电影制片人、营销人员和观众提供有价值的见解。二、技术栈和框架前端HTML/CSS:用于构建静态
【Python】爬虫实战03:自动化抢票脚本【某麦网】
Ustinian_310
python 自动化 开发语言 selenium
1.脚本介绍1.1背景介绍在这个数字化时代,演唱会、体育赛事和各种活动的门票销售往往在线上进行。由于热门活动的高需求和门票的有限供应,抢票成为了一场激烈的竞争。许多粉丝和爱好者经常因为手速不够快或网络延迟而错失购票机会。为了提高抢票的成功率,自动化抢票脚本应运而生。以下这个脚本是一个用Python编写的自动化抢票程序,利用Selenium库来模拟用户在网页上的操作。下面是脚本的详细功能和结构介绍:
分享一个基于微信小程序的智慧校园服务平台(源码、调试、LW、开题、PPT)
计算机源码社
微信小程序 微信小程序 毕业设计项目 计算机毕设源码 计算机毕设 毕设选题 课程设计源码 毕业设计答辩
作者:计算机源码社个人简介:本人八年开发经验,擅长Java、Python、PHP、.NET、Node.js、Android、微信小程序、爬虫、大数据、机器学习等,大家有这一块的问题可以一起交流!学习资料、程序开发、技术解答、文档报告如需要源码,可以扫取文章下方二维码联系咨询Java项目微信小程序项目Android项目Python项目PHP项目ASP.NET项目Node.js项目选题推荐项目实战|基
web报表工具FineReport常见的数据集报错错误代码和解释
老A不折腾
web报表 finereport 代码 可视化工具
在使用finereport制作报表,若预览发生错误,很多朋友便手忙脚乱不知所措了,其实没什么,只要看懂报错代码和含义,可以很快的排除错误,这里我就分享一下finereport的数据集报错错误代码和解释,如果有说的不准确的地方,也请各位小伙伴纠正一下。
NS-war-remote=错误代码\:1117 压缩部署不支持远程设计
NS_LayerReport_MultiDs=错误代码
Java的WeakReference与WeakHashMap
bylijinnan
java 弱引用
首先看看 WeakReference
wiki 上 Weak reference 的一个例子:
public class ReferenceTest {
public static void main(String[] args) throws InterruptedException {
WeakReference r = new Wea
Linux——(hostname)主机名与ip的映射
eksliang
linux hostname
一、 什么是主机名
无论在局域网还是INTERNET上,每台主机都有一个IP地址,是为了区分此台主机和彼台主机,也就是说IP地址就是主机的门牌号。但IP地址不方便记忆,所以又有了域名。域名只是在公网(INtERNET)中存在,每个域名都对应一个IP地址,但一个IP地址可有对应多个域名。域名类型 linuxsir.org 这样的;
主机名是用于什么的呢?
答:在一个局域网中,每台机器都有一个主
oracle 常用技巧
18289753290
oracle常用技巧 ①复制表结构和数据 create table temp_clientloginUser as select distinct userid from tbusrtloginlog ②仅复制数据 如果表结构一样 insert into mytable select * &nb
使用c3p0数据库连接池时出现com.mchange.v2.resourcepool.TimeoutException
酷的飞上天空
exception
有一个线上环境使用的是c3p0数据库,为外部提供接口服务。最近访问压力增大后台tomcat的日志里面频繁出现
com.mchange.v2.resourcepool.TimeoutException: A client timed out while waiting to acquire a resource from com.mchange.v2.resourcepool.BasicResou
IT系统分析师如何学习大数据
蓝儿唯美
大数据
我是一名从事大数据项目的IT系统分析师。在深入这个项目前需要了解些什么呢?学习大数据的最佳方法就是先从了解信息系统是如何工作着手,尤其是数据库和基础设施。同样在开始前还需要了解大数据工具,如Cloudera、Hadoop、Spark、Hive、Pig、Flume、Sqoop与Mesos。系 统分析师需要明白如何组织、管理和保护数据。在市面上有几十款数据管理产品可以用于管理数据。你的大数据数据库可能
spring学习——简介
a-john
spring
Spring是一个开源框架,是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只能由EJB完成的事情。然而Spring的用途不仅限于服务器端的开发,从简单性,可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。其主要特征是依赖注入、AOP、持久化、事务、SpringMVC以及Acegi Security
为了降低Java开发的复杂性,
自定义颜色的xml文件
aijuans
xml
<?xml version="1.0" encoding="utf-8"?> <resources> <color name="white">#FFFFFF</color> <color name="black">#000000</color> &
运营到底是做什么的?
aoyouzi
运营到底是做什么的?
文章来源:夏叔叔(微信号:woshixiashushu),欢迎大家关注!很久没有动笔写点东西,近些日子,由于爱狗团产品上线,不断面试,经常会被问道一个问题。问:爱狗团的运营主要做什么?答:带着用户一起嗨。为什么是带着用户玩起来呢?究竟什么是运营?运营到底是做什么的?那么,我们先来回答一个更简单的问题——互联网公司对运营考核什么?以爱狗团为例,绝大部分的移动互联网公司,对运营部门的考核分为三块——用
js面向对象类和对象
百合不是茶
js 面向对象 函数创建类和对象
接触js已经有几个月了,但是对js的面向对象的一些概念根本就是模糊的,js是一种面向对象的语言 但又不像java一样有class,js不是严格的面向对象语言 ,js在java web开发的地位和java不相上下 ,其中web的数据的反馈现在主流的使用json,json的语法和js的类和属性的创建相似
下面介绍一些js的类和对象的创建的技术
一:类和对
web.xml之资源管理对象配置 resource-env-ref
bijian1013
java web.xml servlet
resource-env-ref元素来指定对管理对象的servlet引用的声明,该对象与servlet环境中的资源相关联
<resource-env-ref>
<resource-env-ref-name>资源名</resource-env-ref-name>
<resource-env-ref-type>查找资源时返回的资源类
Create a composite component with a custom namespace
sunjing
https://weblogs.java.net/blog/mriem/archive/2013/11/22/jsf-tip-45-create-composite-component-custom-namespace
When you developed a composite component the namespace you would be seeing would
【MongoDB学习笔记十二】Mongo副本集服务器角色之Arbiter
bit1129
mongodb
一、复本集为什么要加入Arbiter这个角色 回答这个问题,要从复本集的存活条件和Aribter服务器的特性两方面来说。 什么是Artiber? An arbiter does
not have a copy of data set and
cannot become a primary. Replica sets may have arbiters to add a
Javascript开发笔记
白糖_
JavaScript
获取iframe内的元素
通常我们使用window.frames["frameId"].document.getElementById("divId").innerHTML这样的形式来获取iframe内的元素,这种写法在IE、safari、chrome下都是通过的,唯独在fireforx下不通过。其实jquery的contents方法提供了对if
Web浏览器Chrome打开一段时间后,运行alert无效
bozch
Web chorme alert 无效
今天在开发的时候,突然间发现alert在chrome浏览器就没法弹出了,很是怪异。
试了试其他浏览器,发现都是没有问题的。
开始想以为是chorme浏览器有啥机制导致的,就开始尝试各种代码让alert出来。尝试结果是仍然没有显示出来。
这样开发的结果,如果客户在使用的时候没有提示,那会带来致命的体验。哎,没啥办法了 就关闭浏览器重启。
结果就好了,这也太怪异了。难道是cho
编程之美-高效地安排会议 图着色问题 贪心算法
bylijinnan
编程之美
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;
public class GraphColoringProblem {
/**编程之美 高效地安排会议 图着色问题 贪心算法
* 假设要用很多个教室对一组
机器学习相关概念和开发工具
chenbowen00
算法 matlab 机器学习
基本概念:
机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。
它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
开发工具
M
[宇宙经济学]关于在太空建立永久定居点的可能性
comsci
经济
大家都知道,地球上的房地产都比较昂贵,而且土地证经常会因为新的政府的意志而变幻文本格式........
所以,在地球议会尚不具有在太空行使法律和权力的力量之前,我们外太阳系统的友好联盟可以考虑在地月系的某些引力平衡点上面,修建规模较大的定居点
oracle 11g database control 证书错误
daizj
oracle 证书错误 oracle 11G 安装
oracle 11g database control 证书错误
win7 安装完oracle11后打开 Database control 后,会打开em管理页面,提示证书错误,点“继续浏览此网站”,还是会继续停留在证书错误页面
解决办法:
是 KB2661254 这个更新补丁引起的,它限制了 RSA 密钥位长度少于 1024 位的证书的使用。具体可以看微软官方公告:
Java I/O之用FilenameFilter实现根据文件扩展名删除文件
游其是你
FilenameFilter
在Java中,你可以通过实现FilenameFilter类并重写accept(File dir, String name) 方法实现文件过滤功能。
在这个例子中,我们向你展示在“c:\\folder”路径下列出所有“.txt”格式的文件并删除。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
C语言数组的简单以及一维数组的简单排序算法示例,二维数组简单示例
dcj3sjt126com
c array
# include <stdio.h>
int main(void)
{
int a[5] = {1, 2, 3, 4, 5};
//a 是数组的名字 5是表示数组元素的个数,并且这五个元素分别用a[0], a[1]...a[4]
int i;
for (i=0; i<5; ++i)
printf("%d\n",
PRIMARY, INDEX, UNIQUE 这3种是一类 PRIMARY 主键。 就是 唯一 且 不能为空。 INDEX 索引,普通的 UNIQUE 唯一索引
dcj3sjt126com
primary
PRIMARY, INDEX, UNIQUE 这3种是一类PRIMARY 主键。 就是 唯一 且 不能为空。INDEX 索引,普通的UNIQUE 唯一索引。 不允许有重复。FULLTEXT 是全文索引,用于在一篇文章中,检索文本信息的。举个例子来说,比如你在为某商场做一个会员卡的系统。这个系统有一个会员表有下列字段:会员编号 INT会员姓名
java集合辅助类 Collections、Arrays
shuizhaosi888
Collections Arrays HashCode
Arrays、Collections
1 )数组集合之间转换
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
a)Arrays.asL
Spring Security(10)——退出登录logout
234390216
logout Spring Security 退出登录 logout-url LogoutFilter
要实现退出登录的功能我们需要在http元素下定义logout元素,这样Spring Security将自动为我们添加用于处理退出登录的过滤器LogoutFilter到FilterChain。当我们指定了http元素的auto-config属性为true时logout定义是会自动配置的,此时我们默认退出登录的URL为“/j_spring_secu
透过源码学前端 之 Backbone 三 Model
逐行分析JS源代码
backbone 源码分析 js学习
Backbone 分析第三部分 Model
概述: Model 提供了数据存储,将数据以JSON的形式保存在 Model的 attributes里,
但重点功能在于其提供了一套功能强大,使用简单的存、取、删、改数据方法,并在不同的操作里加了相应的监听事件,
如每次修改添加里都会触发 change,这在据模型变动来修改视图时很常用,并且与collection建立了关联。
SpringMVC源码总结(七)mvc:annotation-driven中的HttpMessageConverter
乒乓狂魔
springMVC
这一篇文章主要介绍下HttpMessageConverter整个注册过程包含自定义的HttpMessageConverter,然后对一些HttpMessageConverter进行具体介绍。
HttpMessageConverter接口介绍:
public interface HttpMessageConverter<T> {
/**
* Indicate
分布式基础知识和算法理论
bluky999
算法 zookeeper 分布式 一致性哈希 paxos
分布式基础知识和算法理论
BY
[email protected]
本文永久链接:http://nodex.iteye.com/blog/2103218
在大数据的背景下,不管是做存储,做搜索,做数据分析,或者做产品或服务本身,面向互联网和移动互联网用户,已经不可避免地要面对分布式环境。笔者在此收录一些分布式相关的基础知识和算法理论介绍,在完善自我知识体系的同
Android Studio的.gitignore以及gitignore无效的解决
bell0901
android gitignore
github上.gitignore模板合集,里面有各种.gitignore : https://github.com/github/gitignore
自己用的Android Studio下项目的.gitignore文件,对github上的android.gitignore添加了
# OSX files //mac os下 .DS_Store
成为高级程序员的10个步骤
tomcat_oracle
编程
What
软件工程师的职业生涯要历经以下几个阶段:初级、中级,最后才是高级。这篇文章主要是讲如何通过 10 个步骤助你成为一名高级软件工程师。
Why
得到更多的报酬!因为你的薪水会随着你水平的提高而增加
提升你的职业生涯。成为了高级软件工程师之后,就可以朝着架构师、团队负责人、CTO 等职位前进
历经更大的挑战。随着你的成长,各种影响力也会提高。
mongdb在linux下的安装
xtuhcy
mongodb linux
一、查询linux版本号:
lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noa