python数据抓取
一、页面分析
二、网页抓取方法
1、正则表达式方法
2、BeautifulSoup 模块
3、lxml 模块
4、各方法的对比总结
三、Xpath选择器
四、CSS选择器
五、数据抓取总结
六、性能测试源码
一、页面分析
所谓的分析网页,就是理解一个网页的结构如何,了解需要字段的位置和形式。方便后期提取。了解页面最好的方法就是查看源代码。在大多数浏览器中,都可以使用开发者工具或者直接按F12,获取网页的源代码,下面以之前的文章做个示例: 上面例子中,很容易找到我们想要的阅读数和收藏数,只有这样分析清楚了,你才在后面通过class="read-count"和class="get-collection"获得想要的数据。当然,实际中的数据肯定是相对复杂的,不像例子这个简单。
二、网页抓取方法
现在我们已经了解了该网页的结构,下面将会介绍 3 种抓取其中数据的方法。首先是正则表达式,然后是流行的 BeautifulSoup 模块,最后是强大的 lxml 模块。
1、正则表达式方法
在通过正则表达式进行示例之前,假设你已经知道并且会使用python的正则表达式进行简单的提取,当然,你不会也没关系,请查看笔者之前的文章python的正则表达式 进行学习。 好嘛,相信你又温习了一下正则的使用,下面通过一个例子了解正则表达式在数据抓取时的方法。
例子:抓取文章的阅读数
url = 'https://blog.csdn.net/Itsme_MrJJ/article/details/124836797'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}
res = requests.get(url, headers=headers)
pattern = re.compile(r'class="read-count">(.*?)<')
read_count = re.findall(pattern,res.text)
read_count
['60']
可以看到,我们需要的数据已经获取到了,但是需要说明已下几个问题;
上例使用的时findall,其他也可以获得结果,但实际中的抓取数据不止一个,所以都用findall
实际中,网页页面会变化,导致数据抓取不到,需要重新修改正则匹配规则
正则找规律相对复杂,尤其是页面复杂、提取的数据很多时
2、BeautifulSoup 模块
Beautiful Soup 是一个非常流行的 Python 库,它可以解析网页,并提供了定位内容的便捷接口。当然,如果你还不知道,那么请看笔者之前的文章BeautifulSoup解析网页 ,当然也可以直接查看其官方文档。
好的,假设你已经安装、了解BeautifulSoup 模块了,并通过里面的讲解,知道了大概的html的结构释义,那么请接着看下面通过BeautifulSoup 模块获取阅读数的例子。
url = 'https://blog.csdn.net/Itsme_MrJJ/article/details/124836797'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}
res = requests.get(url, headers=headers)
soup = BeautifulSoup(res.text,features="lxml")
soup.find_all(class_='read-count')[0].string
'60'
同样的,我们通过上面的例子也得到了想要的数据,而且比之前的正则表达式简洁了很多且抗干扰能力(前端编写时乱用的空格等)强了很多。但它也有一些需要注意的地方。
该模块可以使用多个解析内核,之间又些许差异,使用时需要注意
soup的定位又多种,也时根据哪种得心应手用哪种,其中遍历树最麻烦,且往往得不到想要的
改模块会补充、规范不规整的前端页面
3、lxml 模块
Lxml 是基于 libxml2 这一 XML 解析库构建的 Python 库,它使用 C 语言编写,解析速度比 Beautiful Soup 更快,不过安装过程也更为复杂,尤其是在 Windows中。若是安装未成功,可以使用 Anaconda 。 当然,也许你可能对 Anaconda 不太熟悉,它是由 Continuum Analytics 公司员工创建的主要专注于开源数据科学包的包和环境管理器。可以直接去其官网下载安装。 和 Beautiful Soup 一样,使用 lxml 模块的第一步也是将有可能不合法的HTML 解析为统一格式。然后接着才是需求数据的抓取,对于数据的抓取,lxml 有几种不同的方法,比如 XPath 选择器和类似 Beautiful Soup 的 find()方法。但这里我们使用CSS 选择器。
from lxml.html import fromstring, tostring
tree = fromstring(res.text) # parse the HTML
td = tree.cssselect('.read-count')[0]
td.text
'60'
由于 cssselect 返回的是一个列表,我们需要获取其中的第一个结果,并调用 text方法,以迭代所有子元素并返回每个元素的相关文本。在本例中,尽管我们只有一个元素,但是该功能对于更加复杂的抽取示例来说非常有用。
4、各方法的对比总结
关于每种抓取方法的优缺点。如下图:
如果对你来说速度不是问题,并且更希望只使用 pip 安装库的话,那么使用较慢的方法(如 Beautiful Soup)也不成问题,但其实也没那么慢 。如果只需抓取少量数据,并且想要避免额外依赖的话,那么正则表达式可能更加适合。不过,通常情况下,lxml 是抓取数据的最佳选择,这是因为该方法既快速又健壮,而正则表达式和 Beautiful Soup 或是速度不快,或是修改不易。
三、Xpath选择器
原本写到这里是要结束的,但是考虑涉及到的CSS选择器和Xpath选择器知识没涉及到,且我之前也没写相关的东西,所以,作为补充的知识点再写点。在开始之前,先看看常用的页面属性。
属性
示例
说明
id
id=“MathJax_Message”
id 属性在 HTML 文档中必须是唯一的,这类似于公民的身份证号,具有很强的唯一性
name
name=“keywords”
name 来指定元素的名称,像是人的姓名,不唯一
class
class=“read-count”
class 来指定元素的类名。其用法与 id、name 类似
tag
类似
link
link 定位与前面介绍的几种定位方法有所不同,它专门用来定位文本链接
XPath 是一种在 XML 文档中定位元素的语言。因为 HTML 可以看作 XML 的一种实现,所以我们可以通过Xpath定位抓取数据。 相比BeautifulSoup,xpath所需要的依赖更少,只需要lxml这个解析器就可。并且xpath也可以在java,c++等多种语言中使用,使得爬虫不再局限于python语言。而Xpath处理的对象是一个etree对象,该对象由lxml生成。有两种生成方式:
# 本地文件
from lxml import etree
# 实例化好了一个etree对象,且将被解析的源码加载到了该对象中
tree = etree.parse('alice.html')
# 网络文件
import requests
from lxml import etree
url = 'https://blog.csdn.net/Itsme_MrJJ/article/details/124836797'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}
res = requests.get(url, headers=headers)
# 实例化好了一个etree对象,且将被解析的源码加载到了该对象中
tree = etree.HTML(res.text)
生成之后就是提取,xpath的常用规则及基本方法如下:
表达式
描述
nodename
选取此节点的所有子节点。
/
从根节点(标签)选取且必须从根节点开始
//
从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。
.
选取当前节点。
..
选取当前节点的父节点。
@
选取属性。
from lxml import etree
import requests
url = 'https://blog.csdn.net/Itsme_MrJJ/article/details/124836797'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}
res = requests.get(url, headers=headers)
tree = etree.HTML(res.text)
tree.xpath('//span[@class="read-count"]/text()')
['61']
说明: //span[@class=“read-count”]:从class属性等于read-count的span节点开始的所有text 因为使用的是//,所以不必指出前面的层级,这也是Xpath的强大之处,不需要一层层的找
四、CSS选择器
CSS(Cascading Style Sheets)是一种语言,它用来描述 HTML 和 XML 文档的表现。CSS 使用选择器来为页面元素绑定属性。 CSS 可以较为灵活地选择控件的任意属性,一般情况下定位速度要比 XPath 快,但对于初学者来说学习起来稍微有点难度,我们这里只介绍 CSS 在BeautifulSoup中的语法与使用。
使用CSS选择器,只需要调用select()方法,并结合CSS选择器语法就可以定位元素的位置。具体语法规则如下表:
类型
表示
示例
说明
id选择器
#
soup.select(‘#content_views’)
选择id值为content_views的所有内容
类选择器
.
soup.select(‘.read-count’)
选择class值为read-count的所有内容
标签选择器
tag
soup.select(‘h1’)
选择所有h1标签的内容
混合选择器
综上
soup.select(‘span.read-count’)
选择class值为read-count的所有span标签数据
我们以已经了解了Xpath和CSS选择器,那两者关于定位的区别如下:
五、数据抓取总结
写了这么多,总感觉有些乱,做一个图来整理思绪。
六、性能测试源码
import re
import requests
from bs4 import BeautifulSoup
import lxml. html
import time
def download ( url, user_agent= 'wswp' , proxy= None , num_retries= 2 ) :
print ( 'Downloading:' , url)
headers = { 'User-Agent' : user_agent}
try :
resp = requests. get( url, headers= headers, proxies= proxy)
html = resp. text
if resp. status_code >= 400 :
print ( 'Download error:' , resp. text)
html = None
if num_retries and 500 <= resp. status_code < 600 :
return download( url, num_retries - 1 )
except requests. exceptions. RequestException as e:
print ( 'Download error:' , e. reason)
html = None
return html
def re_scraper ( html) :
results= { }
results[ 'area' ] = re. search( '.*?(.*?) ', html) . groups( ) [ 0 ]
return results
def bs_scraper ( html) :
soup= BeautifulSoup( html)
results= { }
results[ 'area' ] = soup. find( 'table' ) . find( 'tr' , id = 'places_area__row' ) . find( 'td' , class_= 'w2p_fw' ) . string
return results
def lxml_scraper ( html) :
tree= lxml. html. fromstring( html)
results= { }
conf= tree. cssselect( 'table > tr#places_area__row > td.w2p_fw' ) [ 0 ] . text_content( )
results[ 'area' ] = conf
return results
NUM_ITERATIONS= 1000
html= download( 'http://example.python-scraping.com/view/-1' )
for name, scraper in [ ( 'Re' , re_scraper) , ( 'Bs' , bs_scraper) , ( 'Lxml' , lxml_scraper) ] :
start= time. time( )
for i in range ( NUM_ITERATIONS) :
if scraper== re_scraper:
re. purge( )
result= scraper( html)
assert ( result[ 'area' ] == '647,500 square kilometres' )
end= time. time( )
print ( '%s: %.2f seconds' % ( name, end- start) )
你可能感兴趣的:(python,爬虫,正则表达式)
PHP爬虫:获取直播间弹幕数据实战指南
Jason-河山
PHP php 爬虫 开发语言
在数字化时代,直播间弹幕作为观众与主播互动的重要方式,其数据的获取与分析对于理解观众行为、优化直播内容具有重要意义。然而,由于技术限制和法律合规性要求,直接获取直播间弹幕数据并非易事。本文将介绍如何使用PHP爬虫技术,合法合规地获取直播间弹幕API返回值,并进行实战分析。1.环境准备与法律合规性在开始之前,确保您的开发环境中已安装PHP和必要的cURL扩展。同时,必须确保您的爬虫行为遵守相关法律法
【python】将word文档内容转换为excel表格
师兄师兄怎么办
python word excel python
在日常工作中,我们经常需要将Word文档中的内容提取并转换为Excel表格,以便进行数据分析和处理。本文将介绍如何使用Python编写一个简单的程序,将Word文档中的内容转换为Excel表格。一.实例使用以下word文档作为例子:工具界面如下:第一个弹窗选择对应的文档后选择打开:第二个弹窗选择保存路径以及excel表格的名字:生成后的效果如下:二.环境准备我们将使用tkinter库创建一个图形用
Python中LLM的稀疏Transformer架构:Longformer与BigBird
二进制独立开发
非纯粹GenAI GenAI与Python python transformer 架构 开发语言 分布式 人工智能 自然语言处理
文章目录1.Transformer架构的挑战2.稀疏Transformer架构的提出2.1Longformer2.1.1局部注意力2.1.2全局注意力2.1.3实现2.2BigBird2.2.1随机注意力2.2.2局部注意力2.2.3全局注意力2.2.4实现3.稀疏Transformer架构的优势4.稀疏Transformer架构的挑战5.未来发展方向5.1更高效的稀疏注意力机制5.2自适应稀疏注
【Pydantic】Pydantic:新的Python 数据验证库
无糖气泡WU
Python python
Python数据验证:PydanticPydantic简介Pydantic的主要特性Pydantic安装Pydantic使用Pydantic基本操作Field对象数据转换模型类转换为字典模型类转换为JSONPydantic简介Pydantic是一个在Python中用于数据验证和解析的第三方库。它提供了一种简单且直观的方式来定义数据模型,并使用这些模型对数据进行验证和转换。Pydantic的主要特性
一个财务做的python代码--PDF发票文件信息提取
宾不可
pdf python 职场和发展
一、引言(我为什么做)随着国家不断推行数字发票,现在工作中越来越多的电子发票被收取和开具。这给财务人员高效登记大量发票信息提供了充足的环境。日常中,手动从每张发票中提取关键信息并录入Excel表格不仅耗时费力,还容易出错。本文提出了一种基于Python的自动化解决方案,该方案利用pdfplumber库从PDF格式的电子发票中提取文本信息,并结合正则表达式进行信息匹配和清洗,最后将整理好的数据自动写
Pydantic:强大的Python 数据验证库
霍格沃兹测试开发学社
Python语法基础 python 开发语言 单元测试
PydanticPydantic是一个在Python中用于数据验证和解析的第三方库。它提供了一种简单且直观的方式来定义数据模型,并使用这些模型对数据进行验证和转换。Pydantic的一些主要特性:类型注解:Pydantic使用类型注解来定义模型的字段类型。你可以使用Python内置的类型、自定义类型或者其他Pydantic提供的验证类型。数据验证:Pydantic自动根据模型定义进行数据验证。它会
python与c的md5运算速度对比
在学02
python 开发语言 c语言 hash 密码学 性能优化
计算0-50000000(5千万)的u64数字的md5值的第一个字节为0的数字的个数。pythonfromhashlibimportmd5importtimet1=time.time()n=0foriinrange(50000000):#print(md5(i.to_bytes(16)).hexdigest())ifmd5(i.to_bytes(8,byteorder='little')).dig
探索Python数组工具类 ArrayUtils:功能强大的数组操作助手
FinkGO小码
Python python 开发语言 程序人生 numpy pycharm 课程设计 经验分享
引言在Python编程的世界里,数组(通常以列表list形式呈现)是一种极为常用的数据结构。无论是数据处理、算法实现还是日常的编程任务,对数组进行高效且便捷的操作都是必不可少的。然而,Python内置的数组操作方法虽然丰富,但在实际开发中,我们可能需要将一些常用的操作封装起来,以提高代码的复用性和可维护性。今天,我们就来详细介绍一个自定义的Python数组工具类ArrayUtils,它将众多实用的
Python学习(二)----turtle库的基本功能
Tiny1420
Python学习 python
importturtle#设置画布大小turtle.screensize(canvwidth=None,canvheight=None,bg=None)#参数分别为画布的宽(单位像素),高,背景颜色。turtle.setup(width=0.75,height=0.75,startx=None,starty=None)'''width,height:输入宽和高为整数时,表示像素;为小数时,表示占据
python 登录接口_python-oauth2:Python的OAuth登录接口
weixin_39812065
python 登录接口
新浪微博Python客户端接口OAuth2!/usr/bin/envpython--coding:utf-8--version=‘1.04’author=‘LiaoXuefeng(
[email protected] )’”’PythonclientSDKforsinaweiboAPIusingOAuth2.”’try:importjsonexceptImportErr使用Python实现OAu
python 登录接口_(转载)Python 的 OAuth 登录接口 python-oauth2
weixin_39923110
python 登录接口
前言python-oauth2是Python语言的OAuth2的实现,包括客户端和服务器端。该项目经过完整的测试。它拥有一下特点:100%单元测试覆盖。完全去掉了DataStore对象。所有的类名不再带有OAuth前缀。Request类生产字典对象。不再支持Python2.3。Client类是在httplib2基础上进行的扩展。文档中的示例全用的是Twitter,包括以下内容:基本的Twitter
FastAPI开发与运维最佳实践
ivwdcwso
开发 运维 fastapi 运维 数据库 开发 python
FastAPI是一个现代、快速(高性能)的Web框架,用于构建API,基于Python3.6+标准。它不仅易于使用,而且具有出色的性能和可扩展性。本文将探讨FastAPI的开发最佳实践,以及如何有效地部署和维护FastAPI应用。1.项目结构一个良好组织的项目结构对于长期维护至关重要。以下是一个推荐的FastAPI项目结构:myproject/│├──app/│├──__init__.py│├──
Python关键字终极指南:36个核心关键词详解+实战示例,带你彻底掌握
编程梦想记
python 开发语言
以下是Python中的关键字(基于Python3.11版本,共**36个**),按功能分类解释它们的核心用途和常见场景。每个关键字都会用通俗易懂的语言和代码示例说明。一、控制程序流程的关键字1.**`if`/`elif`/`else`**-**用途**:条件判断。-**示例**:```pythonage=18ifage=18andage<=60:print("成年人")```14.**`is`**
FastAPI:解锁高性能API开发的密钥,轻松构建现代Web服务
醉心编码
人工智能基础 fastapi 前端
FastAPI:解锁高性能API开发的密钥,轻松构建现代Web服务一、核心特点二、应用场景三、技术优势四、安装与基本用法五、社区与文档FastAPI是一个基于Python的现代、快速(高性能)的Web框架,专门用于构建APIs,特别是基于Python的RESTfulAPIs。它以其高性能、易用性和可扩展性而闻名,适合开发者、数据科学家和机器学习工程师等多种岗位使用。以下是对FastAPI的详细介绍
使用DeepSeek+本地知识库,尝试从0到1搭建高度定制化工作流(数据分析篇)
代码轨迹
Python 数据分析 人工智能 deepseek
7.3.数据监控与生成本地知识库目的:监控新生成的小红书文案,记录每一次生成的小红书文案风格。后续根据输入topic,检索与某一topic有关的文案,可以根据先前的文案风格,生成类似风格的文案。实现思路:1.要实现文件监控功能,需要使用watchdog库。watchdog是一个Python库,用于监控文件系统的变化。它提供了多种事件类型,如文件创建、修改、删除等,可以用来监控文件的变化。启动一个线
Python-OAuth2 教程
房耿园Hartley
Python-OAuth2教程项目地址:https://gitcode.com/gh_mirrors/pyt/python-oauth21.项目目录结构及介绍在python-oauth2项目中,目录结构通常包括以下几个部分:src/:主要代码存放的地方,包含了OAuth2的核心模块和实现。tests/:测试用例,用于确保代码的功能正确性。docs/:文档目录,包含项目的README和其他相关说明。
Python-OAuth2:一款Python实现的OAuth 2.0认证框架
束辉煊Darian
Python-OAuth2:一款Python实现的OAuth2.0认证框架python-oauth2[UNMAINTAINED]OAuth2.0providerwritteninpython项目地址:https://gitcode.com/gh_mirrors/pyth/python-oauth21.项目基础介绍Python-OAuth2是一个开源项目,旨在为开发者提供一个简单易用的OAuth2.
Python OAuth2库
邹澜鹤Gardener
PythonOAuth2库python-oauth2Afullytested,abstractinterfacetocreatingOAuthclientsandservers.项目地址:https://gitcode.com/gh_mirrors/py/python-oauth2PythonOAuth2库是一个简单易用的库,可以让你在Python应用中轻松地实现OAuth2认证。什么是OAuth
Python Web 开发:利用 FastAPI 构建 OAuth2 授权与认证系统
Switch616
Python Web python 前端 fastapi 数据库 开发语言 sql
PythonWeb开发:利用FastAPI构建OAuth2授权与认证系统目录OAuth2协议概述与工作原理FastAPI中实现OAuth2登录的基础流程在FastAPI中集成Google登录(OAuth2)使用GitHub登录与FastAPIOAuth2集成OAuth2Token的管理与认证⚙️OAuth2授权的安全性考量与最佳实践1.OAuth2协议概述与工作原理OAuth2(开放授权2.0)是
Python的`turtle`库来模拟满屏烟花效果
go5463158465
python python 开发语言
以下是使用Python的turtle库来模拟满屏烟花效果的代码示例,运行代码后会在一个图形窗口中呈现出不断绽放的烟花场景,希望你能喜欢哦。importturtleimportrandomimporttime#初始化屏幕screen=turtle.Screen()screen.bgcolor("black")screen.title("FireworksShow")screen.setup(widt
PyInstaller在Linux环境下的打包艺术
黑金IT
python linux 运维 服务器
PyInstaller是一款强大的工具,能够将Python应用程序及其所有依赖项打包成独立的可执行文件,支持Windows、macOS和Linux等多个平台。在Linux环境下,PyInstaller打包的可执行文件具有独特的特点和优势。本文将详细介绍PyInstaller在Linux环境下的应用,包括安装、准备项目、打包过程、打包后的可执行文件、常见问题与解决方法、进阶技巧、案例分析以及总结与展
python编写mapreduce job教程
weixin_49526058
python mapreduce hadoop
在Python中实现MapReduce作业,通常可以使用mrjob库,这是一个用于编写和执行MapReduce作业的Python库。它可以运行在本地模式或Hadoop集群上。以下是一个简单的MapReduce示例,它计算文本文件中每个单词的出现次数。安装mrjob首先,你需要安装mrjob库。可以通过pip安装:pipinstallmrjobMapReduce示例:计算单词频率1.创建一个MapR
Python_IMAP自动收取邮件脚本
FM黎明之前
Python python 脚本语言
Python自动收取邮件脚本文献:https://cloud.tencent.com/developer/section/1368355功能:收取腾讯企业邮箱邮件写入CSV文件条件:筛选固定期限与固定发件人/收件人说明:1.此脚本采用imaplib协议;不支持授权码登陆方式(163imap授权码)等,有想法的可以重构,收取邮件脚本大同小异,只不过是获取之后编码问题有点棘手,读者花费点时间精力根据不
IDA pro 的Python环境变量设置
weixin_30291791
python
推荐使用IDAPRO6.1+Python2.6安装完毕Python2.6后,添加如下的环境变量:PYTHONHOME=C:\Python26PATH=%PATH%;C:\Python26LIB=%LIB%;C:\Python26\Lib转载于:https://www.cnblogs.com/micro-chen/p/4770303.html
使用python imapclient访问163邮箱
锅炉房刘大爷
python2.7 imapclient
#coding=utf8"""python2.7"""importreimportosimportsysimporttimeimportjsonimportemailimportloggingfromimapclientimportIMAPClientlogging.basicConfig(level=logging.DEBUG,format='[%(asctime)s][%(levelname)
【python自用函数】负数向下取整,正数向上取整
一只小白跳起来
Python常用函数 python 开发语言 pycharm 经验分享 笔记 numpy
1.最终结果array=np.array([[1.2,-1.2],[2.5,-2.5]])expanded_array=expand(array)print(expanded_array)[[2.-2.][3.-3.]]2.取整知识2.1.向上取整取大于或等于给定数的最小整数importmath#示例number=4.1result=math.ceil(number)print(result)#输
【python】用IMAP获取电子邮件
胡 亥
python入门与自动化操作 python ssl https
大家好,我是胡亥大魔王。今天介绍python中用IMAP获取电子邮件前面讲过了SMTP是用来发送邮件的协议,于此相对应的取回发送到你电子邮件地址的电子邮件也有一个协议,即因特网消息访问协议(IMAP)。python自带了一个imaplib模块,但实际上第三方的imapclient模块更好用,本文主要介绍如何使用IMAPClient,完整的文档在https://imapclient.readthed
豆瓣电影TOP250爬虫项目
诚信爱国敬业友善
爬虫 爬虫 python
以下是一个基于Python的豆瓣电影TOP250爬虫项目案例,包含完整的技术原理说明、关键知识点解析和项目源代码。本案例采用面向对象编程思想,涵盖反爬机制处理、数据解析和存储等核心内容。豆瓣电影TOP250爬虫项目一、项目需求分析目标网站:https://movie.douban.com/top250爬取内容:电影名称导演和主演信息上映年份制片国家电影类型评分评价人数短评金句技术挑战:请求头验证分
推荐学习图像处理的入门书:《Python图像处理实战》
天飓
学习感悟 学习 图像处理 python
《Python图像处理实战》是一本全面介绍Python图像处理技术的实用指南,是由人民邮电出版社于2020年12月出版。这本书的作者桑迪潘·戴伊是一位兴趣广泛的数据科学家,主要研究机器学习、深度学习、图像处理和计算机视觉。在《Python图像处理实战》一书中,作者主要介绍了如何用Python图像处理库(如PIL、python-opencv、Scipy等),机器学习库(scikit-learn)和深
IDA 配置python环境,可执行python脚本
ayxh0058
python 操作系统
注意事项下面几点关系到安装是否成功IDA必须是安装版的,我以前用的是免安装版的。python版本、IDA版本,IDAPyhton版本必须匹配。python、IDA、IDAPython必须都是32位的或者都是64位的。安装关键点下面这些东西必备,缺一不可:python27.dll(我安装的是python2.7,如果安装的是pyhton2.6那就是python26.dll)。python.cfg文件。
SAX解析xml文件
小猪猪08
xml
1.创建SAXParserFactory实例
2.通过SAXParserFactory对象获取SAXParser实例
3.创建一个类SAXParserHander继续DefaultHandler,并且实例化这个类
4.SAXParser实例的parse来获取文件
public static void main(String[] args) {
//
为什么mysql里的ibdata1文件不断的增长?
brotherlamp
linux linux运维 linux资料 linux视频 linux运维自学
我们在 Percona 支持栏目经常收到关于 MySQL 的 ibdata1 文件的这个问题。
当监控服务器发送一个关于 MySQL 服务器存储的报警时,恐慌就开始了 —— 就是说磁盘快要满了。
一番调查后你意识到大多数地盘空间被 InnoDB 的共享表空间 ibdata1 使用。而你已经启用了 innodbfileper_table,所以问题是:
ibdata1存了什么?
当你启用了 i
Quartz-quartz.properties配置
eksliang
quartz
其实Quartz JAR文件的org.quartz包下就包含了一个quartz.properties属性配置文件并提供了默认设置。如果需要调整默认配置,可以在类路径下建立一个新的quartz.properties,它将自动被Quartz加载并覆盖默认的设置。
下面是这些默认值的解释
#-----集群的配置
org.quartz.scheduler.instanceName =
informatica session的使用
18289753290
workflow session log Informatica
如果希望workflow存储最近20次的log,在session里的Config Object设置,log options做配置,save session log :sessions run ;savesessio log for these runs:20
session下面的source 里面有个tracing 
Scrapy抓取网页时出现CRC check failed 0x471e6e9a != 0x7c07b839L的错误
酷的飞上天空
scrapy
Scrapy版本0.14.4
出现问题现象:
ERROR: Error downloading <GET http://xxxxx CRC check failed
解决方法
1.设置网络请求时的header中的属性'Accept-Encoding': '*;q=0'
明确表示不支持任何形式的压缩格式,避免程序的解压
java Swing小集锦
永夜-极光
java swing
1.关闭窗体弹出确认对话框
1.1 this.setDefaultCloseOperation (JFrame.DO_NOTHING_ON_CLOSE);
1.2
this.addWindowListener (
new WindowAdapter () {
public void windo
强制删除.svn文件夹
随便小屋
java
在windows上,从别处复制的项目中可能带有.svn文件夹,手动删除太麻烦,并且每个文件夹下都有。所以写了个程序进行删除。因为.svn文件夹在windows上是只读的,所以用File中的delete()和deleteOnExist()方法都不能将其删除,所以只能采用windows命令方式进行删除
GET和POST有什么区别?及为什么网上的多数答案都是错的。
aijuans
get post
如果有人问你,GET和POST,有什么区别?你会如何回答? 我的经历
前几天有人问我这个问题。我说GET是用于获取数据的,POST,一般用于将数据发给服务器之用。
这个答案好像并不是他想要的。于是他继续追问有没有别的区别?我说这就是个名字而已,如果服务器支持,他完全可以把G
谈谈新浪微博背后的那些算法
aoyouzi
谈谈新浪微博背后的那些算法
本文对微博中常见的问题的对应算法进行了简单的介绍,在实际应用中的算法比介绍的要复杂的多。当然,本文覆盖的主题并不全,比如好友推荐、热点跟踪等就没有涉及到。但古人云“窥一斑而见全豹”,希望本文的介绍能帮助大家更好的理解微博这样的社交网络应用。
微博是一个很多人都在用的社交应用。天天刷微博的人每天都会进行着这样几个操作:原创、转发、回复、阅读、关注、@等。其中,前四个是针对短博文,最后的关注和@则针
Connection reset 连接被重置的解决方法
百合不是茶
java 字符流 连接被重置
流是java的核心部分,,昨天在做android服务器连接服务器的时候出了问题,就将代码放到java中执行,结果还是一样连接被重置
被重置的代码如下;
客户端代码;
package 通信软件服务器;
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.O
web.xml配置详解之filter
bijian1013
java web.xml filter
一.定义
<filter>
<filter-name>encodingfilter</filter-name>
<filter-class>com.my.app.EncodingFilter</filter-class>
<init-param>
<param-name>encoding<
Heritrix
Bill_chen
多线程 xml 算法 制造 配置管理
作为纯Java语言开发的、功能强大的网络爬虫Heritrix,其功能极其强大,且扩展性良好,深受热爱搜索技术的盆友们的喜爱,但它配置较为复杂,且源码不好理解,最近又使劲看了下,结合自己的学习和理解,跟大家分享Heritrix的点点滴滴。
Heritrix的下载(http://sourceforge.net/projects/archive-crawler/)安装、配置,就不罗嗦了,可以自己找找资
【Zookeeper】FAQ
bit1129
zookeeper
1.脱离IDE,运行简单的Java客户端程序
#ZkClient是简单的Zookeeper~$ java -cp "./:zookeeper-3.4.6.jar:./lib/*" ZKClient
1. Zookeeper是的Watcher回调是同步操作,需要添加异步处理的代码
2. 如果Zookeeper集群跨越多个机房,那么Leader/
The user specified as a definer ('aaa'@'localhost') does not exist
白糖_
localhost
今天遇到一个客户BUG,当前的jdbc连接用户是root,然后部分删除操作都会报下面这个错误:The user specified as a definer ('aaa'@'localhost') does not exist
最后找原因发现删除操作做了触发器,而触发器里面有这样一句
/*!50017 DEFINER = ''aaa@'localhost' */
原来最初
javascript中showModelDialog刷新父页面
bozch
JavaScript 刷新父页面 showModalDialog
在页面中使用showModalDialog打开模式子页面窗口的时候,如果想在子页面中操作父页面中的某个节点,可以通过如下的进行:
window.showModalDialog('url',self,‘status...’); // 首先中间参数使用self
在子页面使用w
编程之美-买书折扣
bylijinnan
编程之美
import java.util.Arrays;
public class BookDiscount {
/**编程之美 买书折扣
书上的贪心算法的分析很有意思,我看了半天看不懂,结果作者说,贪心算法在这个问题上是不适用的。。
下面用动态规划实现。
哈利波特这本书一共有五卷,每卷都是8欧元,如果读者一次购买不同的两卷可扣除5%的折扣,三卷10%,四卷20%,五卷
关于struts2.3.4项目跨站执行脚本以及远程执行漏洞修复概要
chenbowen00
struts WEB安全
因为近期负责的几个银行系统软件,需要交付客户,因此客户专门请了安全公司对系统进行了安全评测,结果发现了诸如跨站执行脚本,远程执行漏洞以及弱口令等问题。
下面记录下本次解决的过程以便后续
1、首先从最简单的开始处理,服务器的弱口令问题,首先根据安全工具提供的测试描述中发现应用服务器中存在一个匿名用户,默认是不需要密码的,经过分析发现服务器使用了FTP协议,
而使用ftp协议默认会产生一个匿名用
[电力与暖气]煤炭燃烧与电力加温
comsci
在宇宙中,用贝塔射线观测地球某个部分,看上去,好像一个个马蜂窝,又像珊瑚礁一样,原来是某个国家的采煤区.....
不过,这个采煤区的煤炭看来是要用完了.....那么依赖将起燃烧并取暖的城市,在极度严寒的季节中...该怎么办呢?
&nbs
oracle O7_DICTIONARY_ACCESSIBILITY参数
daizj
oracle
O7_DICTIONARY_ACCESSIBILITY参数控制对数据字典的访问.设置为true,如果用户被授予了如select any table等any table权限,用户即使不是dba或sysdba用户也可以访问数据字典.在9i及以上版本默认为false,8i及以前版本默认为true.如果设置为true就可能会带来安全上的一些问题.这也就为什么O7_DICTIONARY_ACCESSIBIL
比较全面的MySQL优化参考
dengkane
mysql
本文整理了一些MySQL的通用优化方法,做个简单的总结分享,旨在帮助那些没有专职MySQL DBA的企业做好基本的优化工作,至于具体的SQL优化,大部分通过加适当的索引即可达到效果,更复杂的就需要具体分析了,可以参考本站的一些优化案例或者联系我,下方有我的联系方式。这是上篇。
1、硬件层相关优化
1.1、CPU相关
在服务器的BIOS设置中,可
C语言homework2,有一个逆序打印数字的小算法
dcj3sjt126com
c
#h1#
0、完成课堂例子
1、将一个四位数逆序打印
1234 ==> 4321
实现方法一:
# include <stdio.h>
int main(void)
{
int i = 1234;
int one = i%10;
int two = i / 10 % 10;
int three = i / 100 % 10;
apacheBench对网站进行压力测试
dcj3sjt126com
apachebench
ab 的全称是 ApacheBench , 是 Apache 附带的一个小工具 , 专门用于 HTTP Server 的 benchmark testing , 可以同时模拟多个并发请求。前段时间看到公司的开发人员也在用它作一些测试,看起来也不错,很简单,也很容易使用,所以今天花一点时间看了一下。
通过下面的一个简单的例子和注释,相信大家可以更容易理解这个工具的使用。
2种办法让HashMap线程安全
flyfoxs
java jdk jni
多线程之--2种办法让HashMap线程安全
多线程之--synchronized 和reentrantlock的优缺点
多线程之--2种JAVA乐观锁的比较( NonfairSync VS. FairSync)
HashMap不是线程安全的,往往在写程序时需要通过一些方法来回避.其实JDK原生的提供了2种方法让HashMap支持线程安全.
Spring Security(04)——认证简介
234390216
Spring Security 认证 过程
认证简介
目录
1.1 认证过程
1.2 Web应用的认证过程
1.2.1 ExceptionTranslationFilter
1.2.2 在request之间共享SecurityContext
1
Java 位运算
Javahuhui
java 位运算
// 左移( << ) 低位补0
// 0000 0000 0000 0000 0000 0000 0000 0110 然后左移2位后,低位补0:
// 0000 0000 0000 0000 0000 0000 0001 1000
System.out.println(6 << 2);// 运行结果是24
// 右移( >> ) 高位补"
mysql免安装版配置
ldzyz007
mysql
1、my-small.ini是为了小型数据库而设计的。不应该把这个模型用于含有一些常用项目的数据库。
2、my-medium.ini是为中等规模的数据库而设计的。如果你正在企业中使用RHEL,可能会比这个操作系统的最小RAM需求(256MB)明显多得多的物理内存。由此可见,如果有那么多RAM内存可以使用,自然可以在同一台机器上运行其它服务。
3、my-large.ini是为专用于一个SQL数据
MFC和ado数据库使用时遇到的问题
你不认识的休道人
sql C++ mfc
===================================================================
第一个
===================================================================
try{
CString sql;
sql.Format("select * from p
表单重复提交Double Submits
rensanning
double
可能发生的场景:
*多次点击提交按钮
*刷新页面
*点击浏览器回退按钮
*直接访问收藏夹中的地址
*重复发送HTTP请求(Ajax)
(1)点击按钮后disable该按钮一会儿,这样能避免急躁的用户频繁点击按钮。
这种方法确实有些粗暴,友好一点的可以把按钮的文字变一下做个提示,比如Bootstrap的做法:
http://getbootstrap.co
Java String 十大常见问题
tomcat_oracle
java 正则表达式
1.字符串比较,使用“==”还是equals()? "=="判断两个引用的是不是同一个内存地址(同一个物理对象)。 equals()判断两个字符串的值是否相等。 除非你想判断两个string引用是否同一个对象,否则应该总是使用equals()方法。 如果你了解字符串的驻留(String Interning)则会更好地理解这个问题。
SpringMVC 登陆拦截器实现登陆控制
xp9802
springMVC
思路,先登陆后,将登陆信息存储在session中,然后通过拦截器,对系统中的页面和资源进行访问拦截,同时对于登陆本身相关的页面和资源不拦截。
实现方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23