您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦 。 1. 社区逛一逛,周周有福利,周周有惊喜。码农飞哥社区,飞跃计划 2. Python基础专栏,基础知识一网打尽。 Python从入门到精通 ❤️ 3. Ceph实战,从原理到实战应有尽有。 Ceph实战 ❤️ 4. Java高并发编程入门,打卡学习Java高并发。 Java高并发编程入门 干货满满,建议收藏,需要用到时常看看。 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。
为什么写这篇文章?
已经好久没有更新爬虫类的文章了,从入门到入狱的好技术怎能不好好学习呢。所以,今天我继续来卷了。本文将从实战的角度介绍一个完整的爬虫。希望读者朋友们能有所启发,有所收获。
文章目录
为什么写这篇文章?
0. 首先分析下
2. 爬取列表页
2.1. 找出列表页的url的特点
2.2. 找出总页数
2.3. 找出详情页的url
3.爬取详情页数据
3.1获取dianying标题
获取dianying片名&导yan&主yan等信息
多线程操作
保存数据
最终完整源代码
最后说点
粉丝专属福利
0. 首先分析下
我总觉得在进行爬虫之前我们首先需要明确要爬取的内容,接着就是分析爬取的步骤,先爬取啥,后爬取啥;然后通过Xpath匹配待提取的内容;最后就是编写爬虫代码。
1.明确待爬取的内容
这里我们爬取的内容就是最新栏目下每个dianying的详细信息以及下载链接 。 这里以xxxx英雄这个dianying为例,该dianying的详细详细信息,包括片名,导yan,yan员等信息都是我们需要爬取的内容。
2. 分析爬取步骤
毫无疑问在这个场景下我们首先需要爬取最新dianying栏目下列表页的数据,在该页面主要爬取的是每部dianying详情页的链接。 然后就是根据详情页的链接爬取详情页的详细数据。
2. 爬取列表页
首先就是爬取列表页获取详情的地址。在Chrome浏览器上通过按下F12按钮打开调试窗口简单的分析下。
2.1. 找出列表页的url的特点
首页的地址是:[/dyzz/index.html] 我们找不出任何特点。 接着我们点击第二页可以看到第二页url变成了/dyzz/list_23_2.html 在点击第三页发现第三页的url变成了/dyzz/list_23_3.html 依次类推我们可以得出第n页的页面地址是:/dyzz/list_23_n.html。
2.2. 找出总页数
打开xpathhelper插件,然后通过分析可以得到//div[@class="x"]
可以获取到包含总页数的div标签,然后通过 //div[@class="x"]//text()
可以获取到我们想要的内容。表达式解释://div[@class="x"]
表示从整个页面中匹配class属性是x的div标签。 //text()
表示获取该标签下的所有文本。
total_pages_element = html. xpath( '//div[@class="x"]//text()' ) [ 1 ] . strip( )
start_index = total_pages_element. find( '共' )
end_index = total_pages_element. find( '页' )
total_pages = total_pages_element[ start_index + 1 : end_index]
2.3. 找出详情页的url
同样的我们在列表页面选中某个dianying标题,通过调试可以知道每个dianying详情页面的链接在标签下的标签下的标签下的
标签中。这样说起来是不是有点绕。没关系的,通过xpath表达式只需要这样就可以了//a[@class="ulink"]/@href
表达式。表达式解释://a[@class="ulink"]
表示从整个页面中匹配class属性是ulink的a标签。/@href
表示获取该标签下href的属性值。 当然也通过//table[@class="tbspan"]//a/@href
表达式,这两个表达式都可以提取到我们想要的数据。对xpath表达式还不熟悉的小伙伴可以看下这篇文章 浅识XPath(熟练掌握XPath的语法)【python爬虫入门进阶】(03)。
这里需要注意的是href标签中的链接不是一个完整的链接,完整的链接需要加上域名。所以,链接的代码是:
BASE_DOMAIN = ''
resp = requests. get( page_url, headers= headers)
html = etree. HTML( resp. content. decode( BASE_ENCODING) )
detail_url_list = html. xpath( '//table[@class="tbspan"]//a/@href' )
new_detail_url_list = [ BASE_DOMAIN + detail_url for detail_url in detail_url_list]
3.爬取详情页数据
拿到详情页地址之后就是获取详情页的详细数据了。这同样比较简单。首先,还是打开详情页面进行分析。 这里还是以[「xxx英雄」]为例,还是跟列表页类似的分析步骤。
3.1获取dianying标题
通过//div[@class="title_all"]//font/text()
,表达式解释://div[@class="title_all"]
表示从整个页面中匹配class属性是title_all的div标签。 //div[@class="title_all"]//font
从标签第一步获取的div标签中获取font标签。text()
方法依然是获取标签内容。
dianying的发布时间以及获取dianying海报的获取跟dianying标题类似,在此就不在赘述了。
获取dianying片名&导yan&主yan等信息
通过调试可以得知dianying片名&导yan&主yan等信息均是在标签下。
其他的基本信息均被
标签分割。所以获取到//div[@id="Zoom"]
标签下的所有文本信息就可以获取到我们想要的数据了,然后就是对获取的数据进行匹配处理。下面就是完整代码。
movie = {
}
zoomE = html. xpath( '//div[@id="Zoom"]' ) [ 0 ]
infos = zoomE. xpath( './/text()' )
for info in infos:
info = info. strip( )
if info. startswith( '◎译 名' ) :
movie[ 'translate_name' ] = info. replace( '◎译 名' , "" )
elif info. startswith( '◎片 名' ) :
movie[ 'name' ] = info. replace( '◎片 名' , "" )
elif info. startswith( '◎年 代' ) :
movie[ 'year' ] = info. replace( '◎年 代' , "" )
elif info. startswith( '◎产 地' ) :
movie[ 'place' ] = info. replace( '◎产 地' , "'" )
elif info. startswith( '◎上映日期' ) :
movie[ 'release_time' ] = info. replace( '◎上映日期' , "" )
elif info. startswith( '◎豆瓣评分' ) :
movie[ 'score' ] = info. replace( '◎豆瓣评分' , "" )
elif info. startswith( '◎片 长' ) :
movie[ 'film_time' ] = info. replace( '◎片 长' , "" )
elif info. startswith( '◎导 yan' ) :
movie[ 'director' ] = info. replace( '◎导 yan' , "" )
elif info. startswith( '◎主 yan' ) :
index = infos. index( info)
info = info. replace( '◎主 yan' , "" )
actors = [ info]
for x in range ( index + 1 , len ( infos) ) :
actor = infos[ x] . strip( )
if actor. startswith( "◎" ) :
break
actors. append( actor)
movie[ 'actors' ] = actors
elif info. startswith( '◎标 签' ) :
movie[ 'label' ] = info. replace( '◎标 签' , "" )
elif info. startswith( '◎简 介' ) :
try :
index = infos. index( info)
for x in range ( index + 1 , len ( infos) ) :
profile = infos[ x] . strip( )
if profile. startswith( '磁力链' ) :
break
movie[ 'profile' ] = profile
except Exception:
pass
这里定义了一个movie字典用于存放所获取到的dianying详细信息。这里遍历获取到的所有数据,通过字符串匹配的方法获取每一行数据。 以译名为例,首先,匹配当前的字符串是否是以◎译 名
开头。如果是话的,则将◎译 名
替换掉,就得到我们想要的数据REBORN
了。 其他的片名,产地也是一样的原理,在此就不在赘述了。 重点需要说下的是:主yan的信息,因为主yan不止一个,所有需要特殊的处理下。
elif info. startswith( '◎主 yan' ) :
index = infos. index( info)
info = info. replace( '◎主 yan' , "" )
actors = [ info]
for x in range ( index + 1 , len ( infos) ) :
actor = infos[ x] . strip( )
if actor. startswith( "◎" ) :
break
actors. append( actor)
movie[ 'actors' ] = actors
首先是获取当前信息info在infos列表中的位置index,就是定义一个列表,列表中的第一个元素就是排名在第一的主yan姓名。 接着遍历infos中的元素。遍历的起始位置是index+1,结束位置是 len(infos) 不包括该位置。 当匹配到下一个◎ 符号是该循环结束。
多线程操作
正如标题所说,为了提高爬虫效率,这里将每个页面的数据爬取任务交给一个单独的线程来执行。这些线程由线程池来管理。具体代码是:
from multiprocessing. pool import ThreadPool
page_pool = ThreadPool( processes= 20 )
page_pool. apply_async( func= get_current_page_detail_url,
args= (
BASE_DOMAIN + '/dyzz/' + 'list_23_' + str (
current_page) + '.html' , ) )
保存数据
这里将爬取的数据简单的保存到txt文本中。保存数据的代码是:
def save_data ( content) :
content_json = json. dumps( content, ensure_ascii= False )
with open ( file = 'content.txt' , mode= 'a' , encoding= 'utf-8' ) as f:
f. write( content_json + '\n' )
最终完整源代码
"""
@url: https://blog.csdn.net/u014534808
@Author: 码农飞哥
@File: list.py
@Time: 2021/12/3 10:15
@Desc: 爬取列表页
"""
from lxml import etree
import requests
from multiprocessing. pool import ThreadPool
import threading
import json
BASE_DOMAIN = ''
headers = {
'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.55 Safari/537.36' ,
'Cookie' : 'XLA_CI=f6efcd6e626919703161043f280f26e6'
}
BASE_ENCODING = 'gbk'
page_pool = ThreadPool( processes= 20 )
def get_total_page ( ) :
url = '/dyzz/index.html'
resp = requests. get( url, headers= headers)
html = etree. HTML( resp. content. decode( BASE_ENCODING) )
total_pages_element = html. xpath( '//div[@class="x"]//text()' ) [ 1 ] . strip( )
start_index = total_pages_element. find( '共' )
end_index = total_pages_element. find( '页' )
total_pages = total_pages_element[ start_index + 1 : end_index]
for current_page in range ( 1 , int ( total_pages) ) :
page_pool. apply_async( func= get_current_page_detail_url,
args= (
BASE_DOMAIN + '/dyzz/' + 'list_23_' + str (
current_page) + '.html' , ) )
def get_current_page_detail_url ( page_url) :
resp = requests. get( page_url, headers= headers)
html = etree. HTML( resp. content. decode( BASE_ENCODING) )
detail_url_list = html. xpath( '//table[@class="tbspan"]//a/@href' )
new_detail_url_list = [ BASE_DOMAIN + detail_url for detail_url in detail_url_list]
movies = [ ]
for detail_url in new_detail_url_list:
print ( threading. current_thread( ) . getName( ) + " " + detail_url)
movies. append( get_movie_detail( detail_url) )
save_data( movies)
return movies
def get_movie_detail ( movie_url) :
resp = requests. get( movie_url, headers)
html = etree. HTML( resp. content. decode( BASE_ENCODING) )
movie = {
}
movie_title = html. xpath( '//div[@class="title_all"]//font/text()' ) [ 0 ] . strip( )
movie[ 'movie_title' ] = movie_title
publish_time = html. xpath( '//div[@class="co_content8"]/ul/text()' ) [ 0 ] . strip( )
movie[ 'publish_time' ] = publish_time
movie_poster_url = html. xpath( '//div[@class="co_content8"]//img/@src' ) [ 0 ] . strip( )
movie[ 'movie_poster_url' ] = movie_poster_url
zoomE = html. xpath( '//div[@id="Zoom"]' ) [ 0 ]
infos = zoomE. xpath( './/text()' )
for info in infos:
info = info. strip( )
if info. startswith( '◎译 名' ) :
movie[ 'translate_name' ] = info. replace( '◎译 名' , "" )
elif info. startswith( '◎片 名' ) :
movie[ 'name' ] = info. replace( '◎片 名' , "" )
elif info. startswith( '◎年 代' ) :
movie[ 'year' ] = info. replace( '◎年 代' , "" )
elif info. startswith( '◎产 地' ) :
movie[ 'place' ] = info. replace( '◎产 地' , "'" )
elif info. startswith( '◎上映日期' ) :
movie[ 'release_time' ] = info. replace( '◎上映日期' , "" )
elif info. startswith( '◎豆瓣评分' ) :
movie[ 'score' ] = info. replace( '◎豆瓣评分' , "" )
elif info. startswith( '◎片 长' ) :
movie[ 'film_time' ] = info. replace( '◎片 长' , "" )
elif info. startswith( '◎导 yan' ) :
movie[ 'director' ] = info. replace( '◎导 yan' , "" )
elif info. startswith( '◎主 yan' ) :
index = infos. index( info)
info = info. replace( '◎主 yan' , "" )
actors = [ info]
for x in range ( index + 1 , len ( infos) ) :
actor = infos[ x] . strip( )
if actor. startswith( "◎" ) :
break
actors. append( actor)
movie[ 'actors' ] = actors
elif info. startswith( '◎标 签' ) :
movie[ 'label' ] = info. replace( '◎标 签' , "" )
elif info. startswith( '◎简 介' ) :
try :
index = infos. index( info)
for x in range ( index + 1 , len ( infos) ) :
profile = infos[ x] . strip( )
if profile. startswith( '磁力链' ) :
break
movie[ 'profile' ] = profile
except Exception:
pass
return movie
def save_data ( content) :
content_json = json. dumps( content, ensure_ascii= False )
with open ( file = 'content.txt' , mode= 'a' , encoding= 'utf-8' ) as f:
f. write( content_json + '\n' )
if __name__ == '__main__' :
get_total_page( )
page_pool. close( )
page_pool. join( )
最终运行效果
最后说点
本文以某网站为例,主要是运用所学的xpath表达式,requests库的相关知识点进行爬虫。
粉丝专属福利
软考资料:实用软考资料
面试题:5G 的Java高频面试题
学习资料:50G的各类学习资料
脱单秘籍:回复【脱单】
并发编程:回复【并发编程】
验证码 可通过搜索下方 公众号 获取
你可能感兴趣的:(爬虫,python,爬虫,java)
搜索算法之斐波那契搜索详细解读(附带Java代码解读)
南城花随雪。
算法分析 算法 数据结构 排序算法
斐波那契搜索(FibonacciSearch)详细介绍1.基本概念斐波那契搜索是一种高效的查找算法,用于在已排序的数组中查找目标值。它使用斐波那契数列来确定中间点,避免了二分搜索中的中点计算问题。斐波那契数列是由F(n)=F(n-1)+F(n-2)定义的,初始值为F(0)=0和F(1)=1。2.工作原理斐波那契搜索的基本步骤如下:初始化:计算斐波那契数列中适合当前数组长度的最大值F(k),其中F(
动态规划算法之最长公子序列详细解读(附带Java代码解读)
南城花随雪。
算法分析 算法 动态规划 java
最长公共子序列(LongestCommonSubsequence,LCS)问题是动态规划中另一个经典问题,广泛用于比较两个序列的相似度。它的目标是找到两个序列之间最长的公共子序列(不是连续的),使得这个子序列同时出现在两个序列中。1.问题定义给定两个序列X和Y,要找到它们的最长公共子序列,即一个序列Z,它同时是X和Y的子序列,且Z的长度最大。例如:对于序列X="ABCBDAB"和Y="BDCAB"
如何使用Spring Boot进行单元测试
好哈优学编程
spring boot 单元测试 java
1.添加依赖:确保pom.xml中包含spring-boot-starter-test依赖。它包括JUnit、AssertJ、Hamcrest等测试框架。org.springframework.bootspring-boot-starter-testtest2.编写测试类:在src/test/java目录下创建一个测试类。确保该类位于与待测试类相同的包或其子包中。@SpringBootTestpu
Spring boot 项目作为客户端调用 服务端websocket
心之语歌
spring boot websocket 后端
文章目录java客户端请求websocketSpringboot导入包客户端调用方法测试执行方法connectWebSocketHandshakeMessagesendHandshakeWebSocketConfig.queue.take方法对应实体类配置yaml资源WebSocketConfig配置类注入配置websocketUrl:LinkedBlockingQueueLinkedBlocki
推荐一个跨平台的Unity插件——UnityPython
夏磊讳
推荐一个跨平台的Unity插件——UnityPythonunity-pythonPythonpluginforUnity3D.项目地址:https://gitcode.com/gh_mirrors/un/unity-python在游戏开发领域,尤其是Unity引擎的爱好者中,能够灵活运用多种编程语言进行创作无疑是提高效率和创新力的一大助力。今天要向大家介绍的UnityPython,正是这样一个能让
UnityPython:在Unity中无缝运行Python代码
岑晔含Dora
UnityPython:在Unity中无缝运行Python代码unity-pythonPythonpluginforUnity3D.项目地址:https://gitcode.com/gh_mirrors/un/unity-python注意:这个项目已不再维护。但如果你想了解过去如何在Unity中集成Python的方案,那么请继续阅读。项目介绍UnityPython是一个为Unity3D开发的游戏引
Unity-Python 项目使用指南
秋或依
Unity-Python项目使用指南unity-pythonPythonpluginforUnity3D.项目地址:https://gitcode.com/gh_mirrors/un/unity-python项目介绍Unity-Python是一个开源项目,旨在为Unity游戏引擎提供Python脚本支持。该项目通过集成Python解释器,使得开发者可以在Unity中使用Python进行游戏逻辑的编
探索Unity3D的新边界:Unity3D-Python-Editor
孔岱怀
探索Unity3D的新边界:Unity3D-Python-Editor1、项目介绍在游戏开发的世界中,Unity3D以其强大的功能和易用性赢得了开发者们的青睐。然而,当我们的开发需求变得越来越复杂时,内置的C#语言可能无法满足所有需求。Unity3D-Python-Editor是一个创新的开源项目,它将Python集成到Unity3D环境中,利用IronPython库提供了一个友好且高效的Pyth
2022年自学Java就业全面学习路线
正等正觉*
Java java 开发语言 spring 编程语言 后端
很多人私信问我们公司的技术栈是什么,如果今年打算学习Java应该主要学习哪些内容,这篇文章我就以一线互联网大厂的标准,为大家罗列出2022年的Java学习的主要内容,内容可能有点多,因为我是以我们公司年薪30万的Java工程师标准写的,如果需要这些知识点的各种资料,我可以免费分享给大家使用,都是我们公司内部培训员工的高质量资料。需要以下全部视频教程以及文字资料可以在文章末尾处添加我微信名片获取。J
精准打击:Conda中conda remove命令的高效使用指南
2401_85743969
conda
精准打击:Conda中condaremove命令的高效使用指南在Python项目开发中,Conda作为Anaconda发行版中的包管理器,不仅用于安装和管理包,还提供了强大的环境管理功能。随着项目的发展,有时需要从环境中移除不再需要的包。condaremove命令是Conda提供的一个关键工具,它允许用户从当前环境中移除特定的包。本文将详细介绍如何在Conda中使用condaremove命令,并通
在Docker容器中部署Flask应用:一步步的实践指南
2401_85743969
算法 dnn 学习
引言Docker是一种流行的容器化技术,它允许开发者将应用及其依赖打包到一个轻量级、可移植的容器中。Flask是一个用Python编写的轻量级Web应用框架。Gunicorn是一个PythonWSGIHTTP服务器,用于生产环境。本文将详细介绍如何在Docker容器中运行Flask应用,包括使用Gunicorn作为服务器。Docker容器化的优势环境一致性:确保应用在不同环境中的一致性。开发与生产
动态规划算法之背包问题详细解读(附带Java代码解读)
南城花随雪。
算法分析 算法 动态规划
动态规划中的背包问题(KnapsackProblem)是经典问题之一,通常用来解决选择一组物品放入背包使得背包的价值最大化的问题。根据问题条件的不同,背包问题有很多种变体,如0-1背包问题、完全背包问题、多重背包问题等。这里,我们详细介绍最经典的0-1背包问题,并提供代码的详细解读。1.0-1背包问题简介在0-1背包问题中,有一个容量为C的背包和n件物品。每件物品有两个属性:重量w[i]和价值v[
如何快速上手Python,成为一名数据分析师
Want595
# 图书推荐 python 数据分析 开发语言
目录写在前面推荐图书推荐理由粉丝福利写在最后写在前面520快乐!喜欢Python的小伙伴有福啦,本期博主给大家推荐一本入门Python的热门书籍,快来看看吧~推荐图书《Python数据分析快速上手》(王靖,商艳红,张洪波,卢军)【摘要书评试读】-京东图书编辑推荐Python作为一种强大且易于学习的编程语言,已经成为数据分析的首选工具。《Python数据分析快速上手》是一本为初学者、职场人士以及对数
探索Unity3D与Python的无缝结合:一个创新的游戏开发新视角
毕艾琳
探索Unity3D与Python的无缝结合:一个创新的游戏开发新视角Unity3D-Python在Unity里使用Python脚本项目地址:https://gitcode.com/gh_mirrors/un/Unity3D-Python在这个数字化时代,游戏开发已经成为一项集技术、艺术和创新于一体的热门领域。Unity3D作为业界广泛使用的跨平台游戏引擎,为我们提供了强大的工具来创造精彩纷呈的互动
【python】最新版小红书js逆向拿到数据,非常详细教程(附完整代码)
景天科技苑
爬虫副业实战 零基础 进阶教学 python js逆向 小红书逆向 python爬虫
✨✨欢迎大家来到景天科技苑✨✨养成好习惯,先赞后看哦~作者简介:景天科技苑《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。《博客》:Python全栈,前后端开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,linux,shell脚本等实操经验,网站搭
python字符串 字节串
xiaogeldx
python
文章目录字符串str字符串方法:增使用+join字符串的格式化利用%格式化用format格式化删stripreplace改upperlowercapitalizetitle查countfindtypeisdigitisalphastartswithendswithisupperislowersplit转义字符转义字符用法原始字符串None字节串例字符串str-用来表示一串文字信息-表示:单引号,双
2-JavaObjectOriented
Goinhn
Java面向对象设计类与对象、封装、构造方法类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。属性:就是该事物的状态信息。行为:就是该事物能够做什么。对象:是一类事物的具体体现。对象是类的一个实例,必然具备该类事物的属性和行为。类与对象的关系:类是对一类事物的描述,是抽象的。对象是一类事物的实例,是具体的。类是对象的模板,对象是类的实体。类的定义
python实验过程心得体会_web实训心得体会
weixin_39814378
python实验过程心得体会
篇一:JAVAWEB实训心得体会jsp+servlet+mysql论坛项目实训总结实训人:程路峰学号:11103303通过为期10天的实训,我学习了很多关于javaweb的知识。在老师的正确指导下,顺利的完成了我的实训内容。在此,也有同学的帮助,在他们的帮助下我也受益匪浅。最终,能顺利完成实训的任务也很高兴。在实训生活中,我了解开发项目的需求、设计、实现、确认以及维护等活动整个过程,让自己开始懂得
Android 利用OkHttp进行文件下载操作
淼森007
Android基础
上回我的博客中讲了如何使用OkHttp封装一套自己的网路请求框架,这次说说文件下载。其实我们APP中还是很多地方会用到文件下载的。比如版本更新的时候,比如图片本地缓存的时候,都会用到文件下载,那么我们如何使用这个功能呢?首先我们要引入框架implementation'com.squareup.okhttp3:okhttp:3.6.0'接着创建类DownloadUtil.java,内容如下publi
python贪吃蛇游戏设计答辩_python编写贪吃蛇游戏
罗-Moline
python贪吃蛇游戏设计答辩
关于编写游戏,是博主非常向往的东西(博主喜爱游戏),编写游戏得一步一步的走!今天我简单的编写一下非常经典的游戏贪吃蛇!!!!效果图:首先引入pygame模块pipinstallpygame关于编写贪吃蛇有如下几个步骤!依次思考1,设置背景大小,即游戏框大小,---像素(px)2,设置颜色,蛇的颜色,背景颜色,豆子的颜色#pygame游戏库,sys操控python运行的环境importpygame,
python dict字典
ducode
java python 数据库
当我基本能从事Django框架来对网站进行开发的时候,发现对Python的知识了解得太少了,甚至到了知识匮乏的阶段。看来,我得温习一下Python知识了。据我个人的理解,Python中有三种内置的数据类型。dictionary(字典)、List(列表)和tuple(元组)。下面我将对这几个内置的数据类型进行总结。Dictionary(字典)首先,什么是字典呢?通俗地来讲,字典无非就是很多的数据,但
python字串节对象Bytes
局外人LZ
python python
一、简介字节串(bytes)是二进制数据的一种表示形式。它由一系列的字节组成,每个字节都是一个范围为0-255的整数。字节串可以用来表示二进制数据,例如图像、音频、视频、网络数据等。字节串与字符串(str)类型不同,字符串是由Unicode字符组成的文本数据。而字节串是原始的二进制数据,它不具备字符编码的概念,而是将数据以字节的形式进行存储和处理。在处理二进制数据时,字节串是非常有用的数据类型。它
Javaweb项目-调用接口-如何在服务器端跳转网页后显示并弹出对话框代码
海海不掉头发
Java面试 习题 Java基础 java
Webapp项目中在java包下新建一个服务端类使用JOptionPane框架组件调用showMessageDialog的方法实现四个参数null,"这是一个信息对话框","信息",JOptionPane.INFORMATION_MESSAGE还有确认对话框的代码showConfirmDialogpackageservlet;importjavafx.scene.control.Alert;imp
【深度学习实战】行人检测追踪与双向流量计数系统【python源码+Pyqt5界面+数据集+训练代码】YOLOv8、ByteTrack、目标追踪、双向计数、行人检测追踪、过线计数
阿_旭
AI应用软件开发实战 深度学习实战 深度学习 python 行人检测 行人追踪 过线计数
《博主简介》小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~感谢小伙伴们点赞、关注!《------往期经典推荐------》一、AI应用软件开发实战专栏【链接】项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体
WebKit 简介及工作流程深度解析
不知名靓仔
webkit chrome safari edge
WebKit是一个开源的浏览器引擎,最初由苹果公司为Safari浏览器开发,后来被多个浏览器和应用采纳,如早期的Chrome和众多移动平台上的浏览器。WebKit不仅仅是一个渲染引擎,它集成了HTML、CSS、JavaScript的解析与渲染能力,以及网络资源加载、图形处理、排版布局等功能,为用户提供丰富的网页浏览体验。本文将深入探讨WebKit的核心组件以及其复杂的工作流程。WebKit核心架构
Biopython从pdb文件中提取蛋白质链的信息
qq_27390023
开发语言 python
使用Biopython的PDB模块可以方便地解析PDB文件并提取你需要的信息。下面是一个示例代码,用于提取PDB文件中的链名称、序列和长度:示例代码fromBioimportPDB#读取PDB文件pdb_file="/Users/zhengxueming/Downloads/1a0h.pdb"parser=PDB.PDBParser(QUIET=True)structure=parser.get_
python打包成mac可执行文件,python如何打包程序
number_516
人工智能
大家好,小编为大家解答mac系统python程序打包成exe的问题。很多人还不知道python打包成mac可执行文件,现在让我们一起来看看吧!大家好,小编为大家解答mac系统python程序打包成exe的问题。很多人还不知道python打包成mac可执行文件,现在让我们一起来看看吧!文章目录前言一、pyinstaller是什么?二、使用步骤1.安装库2.pyInstaller生成可执行程序2.1带
Redis的incr命令引发的反序列化异常和ERR value is not an integer or out of range异常
臣妾写不来啊
Java编码技巧 redis 数据库 缓存
在Java中使用inc命令的时候发现redis中的值被反序列化后居然不是数字,检查后发现可能是序列化器没对,在redis配置的地方将序列化器设置为Jackson2JsonRedisSerializer后使用整成,贴上代码@Bean(name="RedisTemplate")@SuppressWarnings("all")publicRedisTemplateredisTemplate(RedisC
Python八大主要应用领域,你都知道吗?
TOP级别安卓开发
程序员 python 开发语言
随着NumPy,SciPy,Matplotlib等众多程序库的开发和完善,Python越来越适合于做科学计算和数据分析了。它不仅支持各种数学运算,还可以绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python比Matlab所采用的脚本语言的应用范围更广泛,可以处理更多类型的文件和数据。4、人工智能当前最热工资最高的IT工作就是从事人工智能领域的工程师了。Python
python matplotlib三维绘图不显示图像以及标题不显示
m0_55287294
python 开发语言 matplotlib
师姐的环境版本比较旧,在我的电脑上运行程序时三维图像如下所示:尝试:(这部分尝试以后出错可以直接跳过)参考python3.10Axes3D绘制3d图不出图解决办法_python绘制3d图不显示-CSDN博客在ax=Axes3D(fig)后面加上fig.add_axes(ax)。即原本为:ax=Axes3D(fig)改为:ax=Axes3D(fig)fig.add_axes(ax)但是修改后虽然能显
web前段跨域nginx代理配置
刘正强
nginx cms Web
nginx代理配置可参考server部分
server {
listen 80;
server_name localhost;
spring学习笔记
caoyong
spring
一、概述
a>、核心技术 : IOC与AOP
b>、开发为什么需要面向接口而不是实现
接口降低一个组件与整个系统的藕合程度,当该组件不满足系统需求时,可以很容易的将该组件从系统中替换掉,而不会对整个系统产生大的影响
c>、面向接口编口编程的难点在于如何对接口进行初始化,(使用工厂设计模式)
Eclipse打开workspace提示工作空间不可用
0624chenhong
eclipse
做项目的时候,难免会用到整个团队的代码,或者上一任同事创建的workspace,
1.电脑切换账号后,Eclipse打开时,会提示Eclipse对应的目录锁定,无法访问,根据提示,找到对应目录,G:\eclipse\configuration\org.eclipse.osgi\.manager,其中文件.fileTableLock提示被锁定。
解决办法,删掉.fileTableLock文件,重
Javascript 面向对面写法的必要性?
一炮送你回车库
JavaScript
现在Javascript面向对象的方式来写页面很流行,什么纯javascript的mvc框架都出来了:ember
这是javascript层的mvc框架哦,不是j2ee的mvc框架
我想说的是,javascript本来就不是一门面向对象的语言,用它写出来的面向对象的程序,本身就有些别扭,很多人提到js的面向对象首先提的是:复用性。那么我请问你写的js里有多少是可以复用的,用fu
js array对象的迭代方法
换个号韩国红果果
array
1.forEach 该方法接受一个函数作为参数, 对数组中的每个元素
使用该函数 return 语句失效
function square(num) {
print(num, num * num);
}
var nums = [1,2,3,4,5,6,7,8,9,10];
nums.forEach(square);
2.every 该方法接受一个返回值为布尔类型
对Hibernate缓存机制的理解
归来朝歌
session 一级缓存 对象持久化
在hibernate中session一级缓存机制中,有这么一种情况:
问题描述:我需要new一个对象,对它的几个字段赋值,但是有一些属性并没有进行赋值,然后调用
session.save()方法,在提交事务后,会出现这样的情况:
1:在数据库中有默认属性的字段的值为空
2:既然是持久化对象,为什么在最后对象拿不到默认属性的值?
通过调试后解决方案如下:
对于问题一,如你在数据库里设置了
WebService调用错误合集
darkranger
webservice
Java.Lang.NoClassDefFoundError: Org/Apache/Commons/Discovery/Tools/DiscoverSingleton
调用接口出错,
一个简单的WebService
import org.apache.axis.client.Call;import org.apache.axis.client.Service;
首先必不可
JSP和Servlet的中文乱码处理
aijuans
Java Web
JSP和Servlet的中文乱码处理
前几天学习了JSP和Servlet中有关中文乱码的一些问题,写成了博客,今天进行更新一下。应该是可以解决日常的乱码问题了。现在作以下总结希望对需要的人有所帮助。我也是刚学,所以有不足之处希望谅解。
一、表单提交时出现乱码:
在进行表单提交的时候,经常提交一些中文,自然就避免不了出现中文乱码的情况,对于表单来说有两种提交方式:get和post提交方式。所以
面试经典六问
atongyeye
工作 面试
题记:因为我不善沟通,所以在面试中经常碰壁,看了网上太多面试宝典,基本上不太靠谱。只好自己总结,并试着根据最近工作情况完成个人答案。以备不时之需。
以下是人事了解应聘者情况的最典型的六个问题:
1 简单自我介绍
关于这个问题,主要为了弄清两件事,一是了解应聘者的背景,二是应聘者将这些背景信息组织成合适语言的能力。
我的回答:(针对技术面试回答,如果是人事面试,可以就掌
contentResolver.query()参数详解
百合不是茶
android query()详解
收藏csdn的博客,介绍的比较详细,新手值得一看 1.获取联系人姓名
一个简单的例子,这个函数获取设备上所有的联系人ID和联系人NAME。
[java]
view plain
copy
public void fetchAllContacts() {
 
ora-00054:resource busy and acquire with nowait specified解决方法
bijian1013
oracle 数据库 kill nowait
当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait specified这样的错误。主要是因为有事务正在执行(或者事务已经被锁),所有导致执行不成功。
1.下面的语句
web 开发乱码
征客丶
spring Web
以下前端都是 utf-8 字符集编码
一、后台接收
1.1、 get 请求乱码
get 请求中,请求参数在请求头中;
乱码解决方法:
a、通过在web 服务器中配置编码格式:tomcat 中,在 Connector 中添加URIEncoding="UTF-8";
1.2、post 请求乱码
post 请求中,请求参数分两部份,
1.2.1、url?参数,
【Spark十六】: Spark SQL第二部分数据源和注册表的几种方式
bit1129
spark
Spark SQL数据源和表的Schema
case class
apply schema
parquet
json
JSON数据源 准备源数据
{"name":"Jack", "age": 12, "addr":{"city":"beijing&
JVM学习之:调优总结 -Xms -Xmx -Xmn -Xss
BlueSkator
-Xss -Xmn -Xms -Xmx
堆大小设置JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5.0下测试,最大可设置为1478m。典型设置:
java -Xmx355
jqGrid 各种参数 详解(转帖)
BreakingBad
jqGrid
jqGrid 各种参数 详解 分类:
源代码分享
个人随笔请勿参考
解决开发问题 2012-05-09 20:29 84282人阅读
评论(22)
收藏
举报
jquery
服务器
parameters
function
ajax
string
读《研磨设计模式》-代码笔记-代理模式-Proxy
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/*
* 下面
应用升级iOS8中遇到的一些问题
chenhbc
ios8 升级iOS8
1、很奇怪的问题,登录界面,有一个判断,如果不存在某个值,则跳转到设置界面,ios8之前的系统都可以正常跳转,iOS8中代码已经执行到下一个界面了,但界面并没有跳转过去,而且这个值如果设置过的话,也是可以正常跳转过去的,这个问题纠结了两天多,之前的判断我是在
-(void)viewWillAppear:(BOOL)animated
中写的,最终的解决办法是把判断写在
-(void
工作流与自组织的关系?
comsci
设计模式 工作
目前的工作流系统中的节点及其相互之间的连接是事先根据管理的实际需要而绘制好的,这种固定的模式在实际的运用中会受到很多限制,特别是节点之间的依存关系是固定的,节点的处理不考虑到流程整体的运行情况,细节和整体间的关系是脱节的,那么我们提出一个新的观点,一个流程是否可以通过节点的自组织运动来自动生成呢?这种流程有什么实际意义呢?
这里有篇论文,摘要是:“针对网格中的服务
Oracle11.2新特性之INSERT提示IGNORE_ROW_ON_DUPKEY_INDEX
daizj
oracle
insert提示IGNORE_ROW_ON_DUPKEY_INDEX
转自:http://space.itpub.net/18922393/viewspace-752123
在 insert into tablea ...select * from tableb中,如果存在唯一约束,会导致整个insert操作失败。使用IGNORE_ROW_ON_DUPKEY_INDEX提示,会忽略唯一
二叉树:堆
dieslrae
二叉树
这里说的堆其实是一个完全二叉树,每个节点都不小于自己的子节点,不要跟jvm的堆搞混了.由于是完全二叉树,可以用数组来构建.用数组构建树的规则很简单:
一个节点的父节点下标为: (当前下标 - 1)/2
一个节点的左节点下标为: 当前下标 * 2 + 1
&
C语言学习八结构体
dcj3sjt126com
c
为什么需要结构体,看代码
# include <stdio.h>
struct Student //定义一个学生类型,里面有age, score, sex, 然后可以定义这个类型的变量
{
int age;
float score;
char sex;
}
int main(void)
{
struct Student st = {80, 66.6,
centos安装golang
dcj3sjt126com
centos
#在国内镜像下载二进制包
wget -c http://www.golangtc.com/static/go/go1.4.1.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.4.1.linux-amd64.tar.gz
#把golang的bin目录加入全局环境变量
cat >>/etc/profile<
10.性能优化-监控-MySQL慢查询
frank1234
性能优化 MySQL慢查询
1.记录慢查询配置
show variables where variable_name like 'slow%' ; --查看默认日志路径
查询结果:--不用的机器可能不同
slow_query_log_file=/var/lib/mysql/centos-slow.log
修改mysqld配置文件:/usr /my.cnf[一般在/etc/my.cnf,本机在/user/my.cn
Java父类取得子类类名
happyqing
java this 父类 子类 类名
在继承关系中,不管父类还是子类,这些类里面的this都代表了最终new出来的那个类的实例对象,所以在父类中你可以用this获取到子类的信息!
package com.urthinker.module.test;
import org.junit.Test;
abstract class BaseDao<T> {
public void
Spring3.2新注解@ControllerAdvice
jinnianshilongnian
@Controller
@ControllerAdvice,是spring3.2提供的新注解,从名字上可以看出大体意思是控制器增强。让我们先看看@ControllerAdvice的实现:
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface Co
Java spring mvc多数据源配置
liuxihope
spring
转自:http://www.itpub.net/thread-1906608-1-1.html
1、首先配置两个数据库
<bean id="dataSourceA" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close&quo
第12章 Ajax(下)
onestopweb
Ajax
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/
BW / Universe Mappings
blueoxygen
BO
BW Element
OLAP Universe Element
Cube Dimension
Class
Charateristic
A class with dimension and detail objects (Detail objects for key and desription)
Hi
Java开发熟手该当心的11个错误
tomcat_oracle
java 多线程 工作 单元测试
#1、不在属性文件或XML文件中外化配置属性。比如,没有把批处理使用的线程数设置成可在属性文件中配置。你的批处理程序无论在DEV环境中,还是UAT(用户验收
测试)环境中,都可以顺畅无阻地运行,但是一旦部署在PROD 上,把它作为多线程程序处理更大的数据集时,就会抛出IOException,原因可能是JDBC驱动版本不同,也可能是#2中讨论的问题。如果线程数目 可以在属性文件中配置,那么使它成为
推行国产操作系统的优劣
yananay
windows linux 国产操作系统
最近刮起了一股风,就是去“国外货”。从应用程序开始,到基础的系统,数据库,现在已经刮到操作系统了。原因就是“棱镜计划”,使我们终于认识到了国外货的危害,开始重视起了信息安全。操作系统是计算机的灵魂。既然是灵魂,为了信息安全,那我们就自然要使用和推行国货。可是,一味地推行,是否就一定正确呢?
先说说信息安全。其实从很早以来大家就在讨论信息安全。很多年以前,就据传某世界级的网络设备制造商生产的交