首页 文章 精选 留言 我的

精选列表

搜索[Python],共10000篇文章
优秀的个人博客,低调大师

python爬取糗事百科

闲来无事,找点段子一乐呵,就逛到糗事百科,这次爬取没有什么难度,唯一值得说道的是增加了一点点的代码健壮性。 import requests from lxml import etree class Spider(): def __get_page(self,url,headers): try: response = requests.get(url,headers=headers) if response.status_code == 200: return response.text else: return None except Exception: return None def __parse_page(self,html): results = [] data = etree.HTML(html) items = data.xpath('//div[@id="content-left"]/div') for item in items: #获取作者 author = item.xpath('./div[1]/a[2]/h2/text()') if author: results.append(author[0].strip()) else: results.append('匿名用户') #获取内容 content = item.xpath('./a[1]/div/span/text()') if content: results.append(''.join(content).replace('\n','')) else: results.append('此用户没有内容') #获取好笑数 number = item.xpath('./div[2]/span[1]/i/text()') if number: results.append(number[0]) else: results.append('0') return results def __save_to_txt(self,data): with open('data.txt','w',encoding='utf-8') as f: f.write(data) def run(self): for i in range(1,13): url ='https://www.qiushibaike.com/text/page/' + str(i) headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)' ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' } html = self.get_page(url,headers) result = self.parse_page(html) self.save_to_txt(str(result)) #实例化类 spider = Spider() spider.run() 其中类里的方法是私有方法,外部不可调用。 解析网页部分增加了判断获取字段为空的处理方法。 欢迎大家跟我交流学习。

优秀的个人博客,低调大师

python元组,集合类型,及字典补充

一、元组 元组与列表基本相同,不同之处在于元组只能存不能取,当多个值没有改的需求时,用元组更合适 元组的基本操作 1.创建元组: t = (1, 2, 3, 4, 2,4,) t = (1,) #单个元组的命名要加上逗号,否则识别为int型 2.需要掌握的操作: print(t.count(4))#返回4在元组中出现的次数 print(t.index(2,3,7))#返回2在元组中,从索引3开始查找到7所出现位置的索引 修改元组: 直接通过元组下标修改元组是非法的,不过可以通过凭借完成。 t = (1, 2, 3, ) t1 = (3, 4, 5,) t = t + t1 print(t)#结果(1, 2, 3, 4, 5) 删除元组:元组是无法删除的,只能通过del(会报错) 作业:将用户输入的菜名添加到元组中 思路:元组不可以直接添加内容,但是元组与元组之间是可以拼接的,通过将接受到的数据转换成元组,然后与一个空元组进行拼接。 # foods = () # for i in range(5): # food = tuple(input('请输入菜名:').strip()) # foods = foods+food # print(foods) 二、字典类型 键必须是唯一的,但值则不必。键重名时,后面声明的会覆盖前面的值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。 声明字典的几种方法: # 1. # dic = { # 'name': 'zfj', # 'age': 18, # 'sex': 'male', # } # print(dic) # 2. # dic1 = dict(name='zfj', age=18, sex='male',) # dic1 = dict(name='zfj', age=18, 2='male',)# 必须保证key为字符串类型,否则会报错 # print(dic1) # 3. # dic2 = dict([['name', 'zfj', ], ('age', 18, ), ('sex', 'male')]) # print(dic2) # 4.所有键的值都相同或者赋予初始值 # dic3 = {} # dic3 = dic3.fromkeys(('name', 'age', 'sex'), 'value1') # print(dic3) 访问字典:字典通过key访问值,要是访问不存在的key则会报错 dic = { 'name': 'zfj', 'age': 18, 'sex': 'male', } print(dic['job'])# 出错 修改字典: dic = { 'name': 'zfj', 'age': 18, 'sex': 'male', } dic['job'] = 'SH' print(dic) # 向字典中添加'job':'SH' dic['name'] = 'ZFJ' print(dic)# 修改字典中的'zfj'为'ZFJ' print(dic.get('name')) #get是获得键值为name的value dic1 = {'xxx': '111'} dic.update(dic1)# update 是将dic1中的内容添加到dic中 print(dic) setdefault的用法: dic.setdefault('name', 'dsb')#如果字典中已经存在key(‘name’)那么不修改原值 print(dic) dic.setdefault('job', 'SH')#如果字典中没有存在key(‘job’)那么添加内容置字典 print(dic) 删除字典: # dic.pop('age') # print(dic)# 按键值删除 # dic.popitem() # print(dic)# 随机返回并删除字典中的一对键和值(一般删除末尾对)。 # dic.clear() # print(dic)# 清空字典 三、集合 是一个无序不重复元素的序列 特点:1.每一个值都是不可变类型 2.元素不能重复 3.集合内的元素无序 用处:关系运算,去重 定义:在{}内用逗号分隔开的多个值或者set()函数创建集合。 注:创建一个空集合必须用set()而不是{ },因为{ }是用来创建一个空字典。 集合去重也具有局限性:1.无法保证原数据的顺序。2.当某一个数据中包含多个值全部为不可变类型才能使用集合 集合基本操作: # a = {'小明', '小李', '小王', 'abc'} # b = {'abc', 'qwe', 'fgh', '小李'} # print(a & b) # 交集 # print(a | b) #合集 # print(a ^ b) #对称差集 不包含交集的所有部分 # print(a - b)# a与b的差集 就是输出a中除了包含b中有的内容 # print(b - a)# b与a的差集 就是输出b中除了包含a中有的内容 添加,删除: # a.add('xiaowang') #添加,如果元素已存在,则不进行任何操作 # a.update('s') # a.update('b')# update不仅可以添加字符串还可以添加列表,元组,字典 # a.remove('小明')#删除'小明' 不存在则报错 # a.discard('小明')#删除, 不存在不会报错 # a.pop()#随机删除 print(a) 加油! 焚膏油以继晷,恒兀兀以穷年。

优秀的个人博客,低调大师

python字符串,列表常用操作

24天养成一个好习惯,第五天! 一、字符串需要掌握的操作 1.取值(索引取值)需要注意的是只能取,不能改 1 msg = 'hello world' 2 print(msg[4]) 2.切片(顾头不顾尾) 1 msg='hello world'#就是从一个大的字符串中切出一个全新的字符 2 print(msg[0:5]) 3 print(msg[::-1])#倒着取字符串里的数 3.长度len 1 msg = 'hello world' 2 print(len(msg))#len就是取字符串中所有字符的长度 4.成员运算 in和not in(判断一个字符串是否在一个大字符串中) 1 print('dsb' in 'xxx is dsb')#结果为True, 2 print('xxx' not in 'abc is dsb')#结果为True 5.strip,lstrip,rstrip 默认是去除字符串两边的空格,注意中间的空格无法去除 除了去除空格还可以去除别的内容 lstrip和rstrip与strip的区别就是,rstrip是去除右边需要去除的字符,而lstrip是去除左边需要去除的字符 6.切分split和join 将一个字符串按特定的符号切分成多个列表的形式,后面的数字代表切分的个数,至于,split和rsplit的区别就是从左切和从右切的区别 join:将切分的字符串再次拼接再一起 7.lower,upper,title lower:将字符串中的所有字母变为小写 upper:将字符串中的所有字母变为大写 title:将字符串中的所有字母变为首字母大写 8,startwith,endwith startswith()函数判断文本是否以某个字符开始,endswith()函数判断文本是否以某个字符结束。 9.replace replace中有三个参数,第一个为old(要替换的字符),第二个为new(替换成什么字符),第三个为需要替换的个数 10.isdigit 判断这个字符串是否为纯数字 需要了解的内容: 1.find,rfind,index,rindex 1 #find 2 str1 = "Zfj adf id tedafd!!!" 3 str2 = "id" 4 print(str1.find(str2)) 5 print(str1.find(str2, 5)) 6 print(str1.find(str2, 10)) 7 print(str1.rfind(str2)) 8 #index 9 str1 = "Zfj adf id tedafd!!!" 10 str2 = "id" 11 print(str1.index(str2)) 12 print(str1.rindex(str2)) 13 print(str1.index(str2,10))#错误,与find方法大致一样,只是index方法str不在str1中会报一个异常。 2.center,ljust,rjust,zfill 1 name = '123' 2 print(name.center(20, '*')) 3 print(name.ljust(20, '*')) 4 print(name.rjust(20, '*')) 5 print(name.zfill(20))#返回指定长度的字符串,原字符串右对齐,前面填充0。 3.expandtabs:把字符串中的 tab 符号('\t')转为空格,tab 符号('\t')默认的空格数是 8。 captalize:把字符串里的首字母变为大写 swapcase:把字符串里的字母大小写转换 4.其它is 1 name = 'zfj1234中' 2 print(name.isalnum()) #字符串由字母或数字组成 True 3 print(name.isalpha()) #字符串只由字母组成 True 4 n1 = '123' 5 n2 = '叁' 6 n3 = 'Ⅳ' 7 8 print(n1.isnumeric()) #True 9 print(n2.isnumeric()) #True 10 print(n3.isnumeric()) #True 二、列表常见操作 1.按索引取值 l1 = ['abc', 'cdf'] print(l[11]) 2.切片 l1 = ['abc', 'cdf', 'sdf', '11'] print(l1[2:5]) 3.in,not in ,len 与字符串大致无异 4.追加 通过append和insert添加数据至列表,append只能添加至列表的末尾,而insert可以指定位置添加 5.删除 通过del和remove删除列表中的数据,del通过索引删除,remove直接通过列表中的值删除 l1 = ['abc', 'cdf', 'sdf', '11'] # del l1[0] # print(l1) l1.remove('abc') print(l1)l1.pop()#默认最后一个,可以根据索引删除 6.改 l1 = ['abc', 'cdf', 'sdf', '11'] l1[0] = 'zfj' print(l1) 补充: #队列:先进先出 l = [] # 入队 # l.append('first') # l.append('second') # l.append('third') # print(l) # 出队 # print(l.pop(0)) # print(l.pop(0)) # print(l.pop(0)) #堆栈:先进后出 # 入栈: # l.append('first') # l.append('second') # l.append('third') # 出栈: # print(l.pop()) # print(l.pop()) # print(l.pop()) everyday learning! 焚膏油以继晷,恒兀兀以穷年。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册