#python
俞泰鑫
这个作者很懒,什么都没留下…
展开
-
python 输入一个链表,反转链表后,输出新链表的表头
'''假设链表: None 100 200 300 400 None链表反转思路:两个游标pre和current,curent记录当前节点,pre一个记录当前节点的上一个节点'''class Node: '''节点类''' def __init__(self,value): self.value = value self.next = Noneclass Solut...原创 2020-02-12 12:46:24 · 2109 阅读 · 0 评论 -
python 两个栈实现队列入队出队功能
'''队列特点:先进先出,一端进一端出栈特点:先进后出,只从尾部出思路:栈1:作为队列的队尾,进行入队(入栈)操作: [100,200,300] ->append()入队栈1弹栈:让数据结构变成[300,200,100]栈2:作为队列的队头,先将栈1弹出来的元素入栈( [300,200,100] ->stack_b.append(stack_a.pop()),然后再进行出...原创 2020-02-12 11:06:43 · 846 阅读 · 0 评论 -
python 链式存储结构实现队列
'''1. 队列特点:先进先出,队尾入队操作,队头出队操作2. 使用单链表实现:尾部添加节点(入队),头部删除节点(出队)操作'''class Node: '''节点类''' def __init__(self,value): self.value = value self.next = Noneclass Queue: def __init__(self): ''...原创 2020-02-12 10:14:46 · 934 阅读 · 3 评论 -
scrapy middlewares.py中间件使用
1. 自建中间件类:用于fake_useragent生成随机代理from fake_useragent import UserAgent#自建随机生成User-Agent的类#任何一个被下载器中间件拦截的request,都得在这里执行随机生成user-agent,并赋值给headers中的参数User-Agentclass BaidumiddleRandomUaMiddleware(ob...原创 2020-01-01 21:56:14 · 1094 阅读 · 0 评论 -
python爬虫 爬取360图片(非结构化数据)
爬虫思路:先拼接json数据包的url,再从中提取图片链接域名:image.so.com抓包360图片是动态加载的数据点击图片分类中的清新美女 --> ctrl + shift + i --> Network --> xhr -->向下滑动鼠标加载图片抓包找到图片所在包,查看queryStringParametersch:beautyt1:595...原创 2020-01-01 15:03:11 · 1620 阅读 · 0 评论 -
scrapy使用流程 及 爬取猫眼电影排行榜 --存入mysql和mongodb
在shell中创建scrapy项目scrapy startproject Maoyan创建爬虫文件maoyan.pycd Maoyanscrapy genspiser maoyan maoyan.comitems.py中定义要抓取的数据结构:电影名、主演、上映时间import scrapyclass MaoyanItem(scrapy.Item) #名称+主演...原创 2019-12-29 21:16:43 · 478 阅读 · 0 评论 -
scrapy settings.py中常用变量详解
BOT_NAME = '项目名' #项目名SPIDER_MODULES = ['Baidu.spiders']NEWSPIDER_MODULE = 'Baidu.spiders' #爬虫文件所在位置USER_AGENT = 'Mozilla/5.0' #在这儿指定你的User-AgentROBOTSTXT_OBEY = False #是否遵循robot协议(君子协议),一般设置F...原创 2019-12-27 17:49:56 · 247 阅读 · 1 评论 -
ubuntu16.4安装scrapy遇到的问题记录
步骤shell中安装:sudo pip3 install Scrapy遇到报错报错:Exception: Version mismatch: this is the ‘cffi’ package version 1.13.2, located in ‘/usr/local/lib/python3.5/dist-packages/cffi/api.py’. When we impor...原创 2019-12-27 16:47:00 · 1080 阅读 · 0 评论 -
python爬虫 设置浏览器无头(无界面)模式
from selenium import webdriver#创建chrome浏览器的功能对象optins = webdriver.ChromeOptions()#添加无头参数options.add_argument('--headless')browser = webdriver.Chrome(options=options)...原创 2019-12-27 11:01:24 · 1734 阅读 · 0 评论 -
python爬虫 使用selenium抓取 猫眼电影网站排名页 电影信息
from selenium import webdriverimport timebrowser = webdriver.Chrome() #打开chromebrowser.get('http://maoyan.com/board/4') #进入主页,会等待页面加载完#获取一个页面的电影信息def get_one_page() #通过xpath表达式获取电影信息节点对象列表 d...原创 2019-12-27 10:44:19 · 698 阅读 · 0 评论 -
python爬虫 使用selenium操作浏览器
selenium提供的APIfrom selenium import webdriverbrowser = webdriver.Chrome(executable_path='path') #若已将浏览器驱动添加到环境变量:/usr/bin,就不需要参数browser.get(url) #进入页面browser.page_source #获取HTML页面源码browser.page_s...原创 2019-12-25 20:01:53 · 196 阅读 · 0 评论 -
django 分页功能及将页面数据导出为csv功能
models层from django.db import models#创建数据表class Book(models.Models): title = models.CharField(max_length=11,verbose_name='书名') def __str__(self): return self.title向数据库中添加10本书:title为书1,书2,...原创 2019-12-11 21:20:08 · 667 阅读 · 0 评论 -
django 自定义中间件简单使用流程
中间件类from django.http import HttpResponse, Http404from django.utils.deprecation import MiddlewareMixinclass MyMiddleWare(MiddlewareMixin): def process_request(self, request): ''' 位置:进入主路由urls....原创 2019-12-11 19:43:42 · 225 阅读 · 0 评论 -
python 开启多线程 在多资源情况下共同下载一个文件
import osfrom threading import Thread#假定一个资源目录列表urls = ['/home/桌面/', '/home/文档/', '/home/音乐/', '/home/下载/', '/home/视频/', ]filename = input('要下载的文件:')#判断资源库路径中文件是否存在,将存在的路径...原创 2019-12-09 16:55:17 · 719 阅读 · 0 评论 -
python 线程死锁示例
银行转账:两个账户同时给对方转账,模拟线程死锁from threading import Thread,Lockfrom time import sleep#账户类class Account: def __init__(self,_id,balance,lock): #每个账户自带一个锁,只要数字balance要变动,就要提前上锁 self.id = _id self.bala...原创 2019-12-09 17:42:06 · 150 阅读 · 0 评论 -
python线程对象属性
t.name 线程名称t.setName() 设置线程名称t.getName() 获取线程名称t.is_alive() 查看线程是否在生命周期内t.daemon 设置主线程和分支线程的退出关系t.setDaemon() 设置daemon属性值,设置主线恒退出分支线程也随之退出t.isDaemon() 查看daemon属性值from threading import Thread...原创 2019-12-09 14:56:32 · 267 阅读 · 0 评论 -
Python 进程池拷贝目录下所有普通文件,并实时打印拷贝的百分比速度
思路:有一个文件,就向进程池中去添加一个事件from multiprocessing import Poolimport os#创建消息队列,将子进程中各个文件的拷贝进度发送给父进程,否则父进程无法统计拷贝进度q = Queue()#拷贝文件事件函数,参数从功能出发:需要知道从哪个文件拷贝到哪个文件def copy_file(file,old_dir,new_dir): #以只读...原创 2019-12-09 13:55:36 · 272 阅读 · 0 评论 -
python 进程池
适用于有大量的事件,每个事件的执行时间不长的情况创建进程池,放入适当的进程from multiprocessing import PoolPool(processes)功能:创建进程池对象参数:指定进程数量,默认根据系统自动判定将事件加入进程池队列执行pool.apply_async(func,args,kwds)功能:使用进程池执行 func事件参数:func ...原创 2019-12-09 12:44:41 · 141 阅读 · 0 评论 -
python 基于tcp网络通信的多线程并发模型
服务端from socket import *from threading import Threadimport sys#全局变量HOST = '127.0.0.1'PORT = 8888ADDR = (HOST,PORT)#具体和客户端进行交互的函数def handle(c): while True: data = c.recv(1024) if not dat...原创 2019-12-09 11:18:02 · 396 阅读 · 0 评论 -
python避免产生僵尸进程的方式
子进程先于父进程退出,父进程又没有处理子进程大的退出状态,此时子进程会存留PCB在内存中,大量这样的子进程(僵尸进程)会浪费系统的内存资源以下为解决方式:wait()阻塞等待回收子进程缺点:父进程会阻塞,影响运行效率pid,status = os.wait()功能:在父进程中阻塞等待处理子进程退出返回值:pid 退出的子进程的PID status 子进程退出状态import ...原创 2019-12-08 14:54:36 · 1623 阅读 · 0 评论 -
python 进程相关函数
os.getpid()功能:获取一个进程PID返回值:返回当前进程的PIDos.getppid()功能:获取父进程的PID号返回值:返回父进程的PIDos._exit(status)功能:结束一个进程参数:进程的终止状态,一般传个0表示正常退出sys.exit([status])结束一个进程参数:整数表示退出状态,字符串表示退出时打印内容获取PID示例...原创 2019-12-08 12:13:37 · 267 阅读 · 0 评论 -
python os.fork()创建子进程详解
import os#父进程会打印,子进程不会打印这句,因为子进程从for()的下面开始执行print('=======================')#在内存中开辟了空间a = 1#父进程创建子进程,子进程完全复制父进程的代码段和内存空间,且子进程从这句代码的下面开始执行#父进程有的返回值num为子进程的PID,子进程的返回值num为0num = os.fork() #...原创 2019-12-08 11:54:15 · 296 阅读 · 0 评论 -
python 使用socket发送http响应
'''编写一个http服务端程序如果浏览器的请求内容为:/,服务端响应码为200,ok如果浏览器的请求是其他的,响应码为404 Not Found 内容为'Sorry''''from socket import *#与客户端交互def handle(connfd): #获取http请求,获取到的请求格式就是以请求行,请求头等组成的字符串(每一行是以/r/n结尾) data = ...原创 2019-12-07 21:16:16 · 1672 阅读 · 0 评论 -
python udp套接字
服务端流程#1. 创建数据报套接字sockfd = socket(AF_INET,SOCK_DGRAM)#2. 绑定地址sockfd.bind(addr)#3. 消息收发data,addr = sockfd.recvfrom(buffersize)#功能:接收udp消息#参数:每次最多接收多少字节#返回值:data 接收到的内容 #addr 消息发送地址n = sockfd...原创 2019-12-07 16:22:24 · 213 阅读 · 0 评论 -
使用socket将一个文件从客户端发送给服务端
#服务端:接收文件内容,将其写入到一个文件里from socket import *s = socket()s.bind('127.0.0.1',8888)s.listen(3)c,addr = s.accept()print('Connect from',addr)#打开文件f = open('xx.jpg','wb')#循环接收内容,写入文件while True:...原创 2019-12-07 15:27:42 · 565 阅读 · 0 评论 -
python tcp socket
1. 服务端流程#1. 创建套接字sockfd = socket.socket(socket_family=AF_INET,socket_type=SOCK_STREAM,proto=0)#参数:socket_family 网络地址类型,AF_INET表示ipv4,默认ipv4 #socket_type 套接字类型,SOCK_STREAM(流式)默认是流式套接字,SOCK_DGRA...原创 2019-12-07 14:59:05 · 99 阅读 · 0 评论 -
二叉树 --python描述
class Node: '''节点类''' def __init__(self,item): #item是保存的数据 self.elem = item self.lchild = None self.rchild = Noneclass Tree: '''二叉树''' def __init__(self): #根节点 self.root = None #添加...原创 2019-12-06 11:21:32 · 107 阅读 · 0 评论 -
python自带jwt库使用
import jwtimport time#加密jwt.encode({payload},key,algorithm)#key:自定义的字节串或字符串#payload:具体内容自己添加,分为公有声明和私有声明,字典类型#algorithm:使用的哈希算法#返回值为字节串#示例:key = xxxexp = yyynow_time = time.time()token = ...原创 2019-11-29 14:45:49 · 2246 阅读 · 0 评论 -
numpy ndarray对象的属性
import numpy as npary = np.arange(1,9)print(ary) #[1 2 3 4 5 6 7 8]#shape:维度print(ary.shape) #(8,):表示一维数组,有8个元素#修改维度ary.shape = (2,4)print(ary,ary.shape) #打印出:[[1 2 3 4] [5 6 7 8]] (2,4)#d...原创 2019-11-26 17:35:20 · 239 阅读 · 0 评论 -
单链表 --python描述
#创建节点类#一个节点需要两个内容:数据elem和下一个节点的地址class Node(object): '''节点类''' def __init__(self,elem): #数据 self.elem = elem #下一个节点的位置,初始化时先指向空 self.next = None#创建单链表类#需要创建节点,需要有操作单链表(实例)的方法class Sing...原创 2019-11-25 21:06:04 · 241 阅读 · 0 评论 -
python 计算向列表中插入数据所需时间
在列表中存储100万个整数,在第二个位置插入一个数,计算插入所用时间,1000万个呢?import time#创建列表l = [x for x in range(1000000)]st = time.time()l.insert(1,'007')print('time:',time.time - st)再比较下向1000万个整数中的第二个位置插入一个数,所用的时间发现向不同量级的...原创 2019-11-25 13:23:19 · 483 阅读 · 0 评论 -
如果a+b+c=1000,且a^2 + b^2= c^2(a,b,c为自然数),求出所有a,b,c可能的组合
如果a+b+c=1000,且a^2 + b^2= c^2(a,b,c为自然数),求出所有a,b,c可能的组合import timestart_time = time.time()for a in range(1,1001): for b in range(1,1001): for c in range(1,1001): if a+b+c==1000 and a**2 +b**...原创 2019-11-25 13:22:19 · 566 阅读 · 0 评论 -
django views层向templates层(html)传数据示例(django自己的方法)
views层def list_view(request): #取出session中uid,用于索引和确认身份 uid = request.session.get('uid') #从数据表中查询出数据 user = User.objects.get(id=uid) all_notes = user.note_set.filter(isActive=True) #渲染html页面并向...原创 2019-11-23 11:31:19 · 514 阅读 · 0 评论 -
python爬虫 腾讯招聘网岗位数据(requests版和scrapy版) --存入json
需求抓取职位名称,工作职责,岗位要求,发布时间,地点流程一级页面处理:目标:提取二级页面的链接上面有二级页面(具体岗位信息)的链接,看是静态页面还是动态页面(在源码中搜页面中的词),发现是动态页面,获取数据用json马不停蹄去抓包:Network -->preview -->找到一级页面的数据所在的包,在它们的Headers -->General -->Re...原创 2019-11-20 21:29:01 · 929 阅读 · 0 评论 -
python爬虫 多线程抓取小米应用商店全站应用信息(动态数据) --保存到csv文件
需求抓取所有分类下的所有应用步骤确认是否为动态页面在网页源码中搜索你要获取的数据中的关键词,发现源码中没有,确认为动态数据抓包进入控制台Network -->xhr多刷几次页面抓包后Preview,找到你要的那些数据包在Network – > xhr --> Headers --> General -->Request URL,将后端返给前端的接口取...原创 2019-11-20 16:11:37 · 885 阅读 · 0 评论 -
python爬虫 抓取豆瓣电影 电影分类排行榜的所有数据
准备流程确认是否为动态数据在页面源代码中搜你要的数据中的关键词,若搜不出来,就说明是动态数据只要是动态数据,直接去抓包控制台Network ->xhr -> 点击左下角各个数据包preview,找到你想要的数据所在的那些数据包后 -> Headers -> general ->request-URL:找到后端返给前端的接口电影总数的request-URL为...原创 2019-11-19 23:12:29 · 5509 阅读 · 4 评论 -
python 测试Mysql 有索引的查询和无索引查询 时间上的差异
测试Mysql 有索引的查询和无索引查询 时间上的差异使用pymysql向数据表中添加数据,并记录时间戳import pymysqlimport time#建立连接con = pymysql.connect('localhost','root','mysql密码','库名',charset='utf8')#游标cur = con.cursor()#准备200万条数据da...原创 2019-11-19 11:32:09 · 326 阅读 · 0 评论 -
python爬虫爬取民政局网中的行政区划带数据 并存入mysql
需求爬取明政局网中的行政区划带数据:行政区名&代号流程从一级页面中提取进入二级页面的链接xpath表达式为://table/tr[2]//a/@href(此处需要在源码中写xpath表达式,页面节点中查看的是错误的)注意:这个网站访问进去有个反爬虫操作:二级页面重定向到了其他页面(真正存放数据的页面),导致你从一级页面获取的二级页面链接的错误的,还需从重定向前的二级页面中获取...原创 2019-11-18 21:42:27 · 951 阅读 · 0 评论 -
python爬虫 抓取可用的开放代理(proxy)或私密代理IP 并存入代理IP池
import requestsclass Proxypool: def __init__(self): self.url = 'http://xxx' #网站生成的给你的代理IP表的链接(格式为一个页面上每行都是代理IP) self.headers = {'User-Agent':'Monzilla/5.0'} #打开文件proxyip用来保存能用的代理IP self...原创 2019-11-18 16:03:07 · 838 阅读 · 0 评论 -
python爬取百度贴吧帖子内图片 -- xpath
需求进入某贴吧,爬取贴吧内每个帖子里的图片,不包含广告图片流程找某贴吧url规律,规律如下:http://tieba.baidu.com/f?kw={}&pn={}pn = (page-1)*50获取某贴吧首页(一级页面)每个帖子的链接的xpath表达式,如下://li[@class=“j_thread_list clearfix”]/div/div/div/div/...原创 2019-11-18 15:19:34 · 369 阅读 · 0 评论