自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 Scrapy框架(二)

items的导入需要Mark Directory as(第一个选项)item={} 字典item=SpiderItem()对象古诗文案例练习第一步:创建scrapy框架scrapy startproject gsw第二步:创建爬虫项目scrapy genspider gs gs.org第三步:打开settings中的几个要素1.LOG_LEVEL = ‘WARNING’ #log等级2.ROBOTSTXT_OBEY = False #robots协议改为False3.

2021-04-23 21:34:51 142 1

原创 Scrapy框架(一)

为什么学习scrapy?1.爬虫必备 面试2.可以让爬虫更加强大scrapy简介希望爬虫更快更强大异步爬虫框架优点:可配置可扩展性高异步twisted速度快scrapy工作流程简便图具体图scrapy engine(引擎):负责数据和信号在不同模块间的传递scheduler(调度器):一个队列,存放引擎发过来的requests请求downloader(下载器):下载引擎发过来的requests请求,并返回给引擎spider(爬虫):处理引擎发过来的requests,提

2021-04-11 16:26:53 120

原创 我的第十四篇python爬虫博客《多线程二》

Queue线程:在线程中,访问一些全局变量,加锁是一个经常的过程。如果你是想把一些数据存储到某个队列中,那么python内置了一个线程安全的模块叫做queue模块初始化Queue():创建一个先进先出的队列empty():判断队列是否为空full():判断队列是否满了get () :从队列中取最后一个数据put():将一个数据放到队列中当队列出现堵塞是,可以用timeout put_nowait() get_nowait()生产者和消费者:生产者和消费者是多线程开发中常见的一种模式。

2021-04-02 07:55:09 190 2

原创 我的第十三篇博客《多线程一》

多线程基本介绍:有很多的场景中的事情是同时进行的,比如开车的时候手和脚共同来驾驶汽车,再比如唱歌跳舞也是可以同时进行的在python中有一个内置模块可以专门来实现多线程 threading多线程的创建:1.通过函数创建:使用threading模块中的thread类,有一个target参数,这个参数需要我们传递一个函数对象,这个函数可以实现子线程的逻辑2.通过类来创建主线程和子线程的关系1.主线程会等待子线程执行结束后,主线程在结束2.threading.join()会使主线程等待子线程

2021-03-22 17:30:14 104

原创 我的第十二篇python爬虫博客《seleni实战》

12306购买学生票(由于本人是学生,所以有个学生票提示需要关闭,由于本人学术不精,所以采用了二维码登录,)from selenium import webdriverimport csvfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom selenium.webdriver.common.by impo

2021-03-19 15:28:07 153

原创 我的第十一篇python爬虫博客《selenium下》

页面等待现在的网页越来越采用了Ajax技术,这样程序员便不能确定何时某个元素完全加载出来了。如果实际页面等待时间过长导致某个元素还没出来,但你的代码又需要使用这个元素,那么就会抛出NullPointer异常。为了解决这个问题,所以Selenium提供了两种等待方式:一种是隐式等待,一种是显式等待隐式等待:调用driver.implicitly_wait 在获取不可用的元素之前,会先等待设置的时间,如果获取到就不用等待显式等待:显式等待是表明某个条件成立后才执行获取元素的操作。也可以在等待的时候指定一

2021-03-16 19:25:19 138 1

原创 我的第十篇python爬虫博客《selenium中》

操作表单元素:send_keys()设置内容click()点击clear()清空内容操作select标签*注意如果在页面无法获取元素(你认为代码是真确的)你要查看一下这个页面是否有iframe标签iframe标签是一个HTML标签,作用是文档中的文档如果iframe标签嵌套了你需要的标签元素,那么需要先切换iframe driver.swith_to_frame(需要切换的iframe标签的定位)选择select下拉select元素不能直接点击,因为点击后还需要选择元素,这时候s

2021-03-14 21:39:24 195 1

原创 我的第九篇python爬虫博客《selenium上》

小案例复习:爬取贵阳最近一周的天气状况selenium背景:前期我们爬取的数据大多数是一些静态网页,可以在网页源码中直接去解析网页源码;然而有一些动态页面它的一部分数据并不在网页源码中,那么这些数据就可能是通过ajax加载出来的什么是ajax?ajax是可以使网页实现异步更新,可以在不重新加载真个网页的情况下,对网页的一部分进行更新对于页面中有我们需要的数据,但网页源码中没有,该如何解决?1.直接分析network中ajax的接口(XHR),通过代码来请求这个接口获取真实的数据然而分析数据

2021-03-13 22:54:05 116

原创 我的第八篇python爬虫博客《bs4》

bs4bs4的概念: 如何学?是什么?能够做什么?学习这个技术有什么意义?bs4(BeautifulSoup美味的汤)BeautifulSoup是一个可以从HTML或XML文件中提取数据的网页信息提取库网页信息提取库:BeautifulSoup pyquery lxml解析网页的时候,因为每个网页的结构都不一样,所以采用最适合解析网页的技术bs4快速入门安装第三方库:pip install bs4pip install lxml模块的导入:import bs4(不建议用)

2021-03-11 14:13:08 126

原创 我的第七篇python爬虫博客《xpath》

xpathxpath基本概念:xpath(xml language path)文档节点中通过元素节点和属性节点进行导航xml 可拓展标记语言html 超文本标记语言lxml 是python当中的一个第三方库,可以将html文本转换成一个xml对象文档节点的关系:xpath的工具使用:chrome插件xpath-helper1.将下载的xpath-helper插件的后缀名改crx→rar,然后解压2.点击chrome网页上的更多工具→拓展程序3.点击解压的xpath-helper文件4

2021-03-07 20:36:52 199 1

我的第六篇python爬虫博客《正则表达式二》

预定义匹配字符集正则表达式中的一些表示方法,可以同时匹配某个预定义字符集中的任意一个字符。比如\d可以匹配·任意一个数字,虽然可以匹配其中任意字符,但是只能是一个,不是多个\d 匹配任意一个数字,0~9中的任意一个\w 匹配任意一个字母或数字或下划线,也就是A-Z a-z 0-9 _中的任意一个\s 匹配空格、制表符、换页符等空白符的其中任意一个\D 匹配\d的反集,也就是非数字的任意一个字符,等同于[^\d]\W \w的反集

2021-02-14 19:56:44 179

原创 我的第五篇python爬虫博客《正则表达式(一)》

sesstion 通过在服务端记录的信息确定用户身份在这里我主要介绍的是requests模块中的session 指的是保持会话*突破12306图片验证码正则表达式概念:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个规则字符串,这个规则字符串用来表达对字符串的一种过滤逻辑正则表达式的应用场景1.表单验证(例如:网页注册账号时需要提供的手机号,身份证等验证)2.爬虫正则表达式对python的支持1.普通字符字母、数字、汉字、下划线、

2021-02-04 17:00:15 110

原创 我的第四篇爬虫博客《网络爬虫请求模块二》

请求方式:1.get特点:查询参数在url地址中显示2.post:在Request方法中添加data参数urllib.request.Request(url,data=data,headers=headers)data:表单数据以bytes类型提交,不能是str用urllib发送post请求制作一个有道小翻译用request模块发送post请求制作一个有道小翻译requests模块换源安装requestspip install requests -i https://pypi.doub

2021-01-31 22:06:55 144 1

原创 我的第三篇爬虫博客《爬虫网络请求模块一》

urllib为什么要学urllib?1.有一些比较老的爬虫项目用的就是urllib2.我们在做一些爬虫的时候往往需要request+urllib一起使用3.urllib是python内置的模块4.urllib是python内置的一个爬虫网络请求模块urllib快速入门urllib.request的使用urllib.reuqest常用方法:1.urllib.request.Request(网址,字典),(构造user-agent)2.urllib.request.urlopen()向网站发

2021-01-29 20:19:31 103

原创 我的第二篇爬虫博客《爬虫简介二》

HTTP的请求和响应General 全部的1.Request URL 请求的地址2.Request Method 请求的方式(get post)3.Response Headers 服务器的响应Request Headers 服务器的请求1.Host:(主机和端口号)对应的网址2.Connection:(链接类型)3.User-Agent:用户代理4.Accept:(传输文件的类型)5.referer:(页面的跳转处)6.Cookie:(记录了用户相关的信息)7.Query Stri

2021-01-27 23:48:10 448

原创 我的第一篇爬虫博客《爬虫简介》

端口进行数据通讯的三步:1.找到对方ip2.数据要发送到对方指定的应用程序上。为了标识这些应用程序,所以给这些网络应用程序都用数字进行了标识,为了方便称呼这个数字,叫做端口,这里的端口我们一般都叫做‘逻辑端口’3.定义通讯规则。这个通讯规则我们一般称之为协议通讯协议国际组织定义了通用的通信协议 TCP/IP协议所谓协议就是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则HTTP又叫做超文本传输协议(是一种通信协议) HTTP的端口是80网络模型osi参考模型TCP

2021-01-26 22:48:17 126

原创 我的第十五篇python基础博客《异常&文件》

异常异常简介:程序再运行中可能会出现一些错误。比如:使用了不存在的索引,两个不同类型的数据相加…这些错误我们称之为异常处理异常:程序运行时出现异常,目的并不是让我的程序直接终止,而是希望再出现异常时,我们可以编写代码来对异常进行处理异常对象:try语句try:代码块(可能出现错误的语句,如果出现错误就不执行,如果正常就执行)except 异常类型 as异常名:代码块(出现错误以后的处理方式)else:代码块(没有出错时要执行的语句)finally:代码块(是否出错该代码都要执行的语句)

2021-01-20 21:38:59 93

原创 我的第十四篇python基础博客《模块&高级语法》

多态多态是面向对象的三大特性之一,从字面理解就是多种形态一个对象可以以不同形态去呈现python中多态的特点1.只关心对象的实例方法是否同名,不关心对象所属的类型2.对象所属的类之间,继承关系可有可无3.多态的好处可以增加代码的外部调用灵活度,让代码更加通用,兼容性比较强4.多态是调用方法的技巧,不会影响类的内部设置属性类属性直接在类中定义的属性是类属性类属性可以通过类或实例访问到,但是类属性只能通过类对象来修改,无法通过实例对象修改实例属性,通过实例对象添加属性是实例属性实例属

2021-01-18 22:29:15 273

原创 我的第十三篇博客《面向对象二》

面向对象三大特性:封装,继承,多态封装:是指隐藏对象中一些不希望被外部所访问到的属性或方法出现封装的原因:我们需要一种方式来增强数据的安全性1.属性不能随便修改2.属性不能改为任意的值3.我们也可以提供一个getter()和setter()方法从外部访问4.getter()获取对象中指定的属性5.setter()设置对象指定的属性使用封装确实增加了类的定义的复杂程度,但是它也确保了数据的安全1.隐藏属性名,使调用者无法随意的修改对象中的属性2.使用getter()和setter()方法,

2021-01-17 22:56:55 87

原创 我的第十二篇python基础博客《面向对象一》

面向对像简介python是一门面向对象的编程语言:所谓面向对象的语言,简单理解就是语言中的所有操作都是通过对象来进行的面向过程:指将我们的程序分解为一个个步骤,通过每个步骤的抽象来完成程序,这种编写方式往往只适用于一个功能,如果要实现别的功能,往往复用性比较低;这种编程方式符合人们的思维,编写起来比较容易面向对象:关注的是对象,而不是注重过程,对于面向对象,一切皆对象;面向对象的编程思想是将所有功能统一保存到对应的对象中,要使用某个功能,直接找到对应的对象即可;这种编码方式比较容易阅读,并且易于维护,

2021-01-12 22:59:49 87

原创 我的第十一篇python基础博客《高级编程》

可迭代对象:把可以通过for…in…这类语句迭代读取一条数据供我们使用的对象称之为迭代对象(Iterable)迭代:我们已经知道可以对list,str,tuple,dict,set等类型的数据使用for…in…的循环语法从其中依次拿到数据进行使用,我们把这样的过程称为遍历,也叫迭代推导式:分为列表推导式’字典推导式‘集合推导式等。在这里我们主要说其中一种也是用的最多的列表推导式列表推导式:语法[表达式 for 变量 in 旧列表][表达式 for 变量 in 旧列表 if 条件]生成器:生成器

2021-01-10 22:29:21 74

原创 我的第十篇python基础博客《函数三》

高阶函数将一个函数作为参数参给另一个函数或者一个函数的返回值为另一个函数匿名函数:没有名字的函数,不指定函数的名字lambda函数 语法:(lambda 参数:表达式 (传参))filter()函数两个参数:一个参数传递函数给它一个参数传递给需要过滤的序列给它闭包:可以保存外部函数变量不被销毁条件:1.函数嵌套 2. 将内部函数作为返回值 3. 内部函数必须要使用外部函数的变量或参数装饰器:通过装饰器,可以在不修改函数的情况下来对函数进行扩展(此处

2021-01-09 22:01:41 77

原创 我的第九篇python基础博客《函数二》

函数二函数的返回值函数的返回值可以是任意类型的对象当不写return语句或只写return时,返回的是None打印函数名就是打印函数对象的地址打印函数名()就是打印函数名()的返回值文档字符串:就是对函数的说明help()是python中内置函数,通过help()函数可以查询python中函数的用法再定义函数时,可以再函数内部编写文档字符串’’‘回车’’’函数的作用域:指的是变量生效的区域全局作用域:所有函数以外的区域都是全局作用域再全局作用域中定义的变量,都是全局变量,全局变量可

2021-01-07 23:23:22 87

原创 我的第八篇python基础博客《函数一》

集合的运算&交集运算 :两个集合相同的元素| 并集运算 :两个集合所有的元素- 差集运算 :set1-set2除去与set2相同的元素^亦或集 :除去相同元素后,剩余的元素为一个集合<=检查a集合是否是b集合的子集(检查b集合是否是a集合的超集)<检查a集合是否是b集合的真子集(检查b集合是否是a集合的真超集)函数的简介:函数也是一个对象函数的特点:函数可以用来保存一些可执行的代码,在你需要的时候可以对这些代码重复的调用函数中保存的代码不会立即执行,只有当你

2021-01-06 22:38:29 123

原创 我的第七篇博客《元组,字典,集合》

元组(tuple)使用()创建元素如果元组不是空元组,那么它至少得有一个逗号如果元组不是空元组,那么括号可以省略元组的拆包:指将元组当中的每一个元素都赋值给一个变量在对一个元组拆包的时候,变量的数据量和元组中元素的数量要保持一致如果变量和元素不一致,就可以在变量前面加一个*,这样会获取元组中剩余的元素,以列表的形式返回(只能有一个*)*列表,字符串,元组都可以进行拆包字典:{key:value}{key:value}可以通过key查询到value这个值,所以我们称之为键值对,每一个键值对,

2021-01-06 00:06:17 133

原创 我的第六篇博客《列表》

列表1.序列:简单的说就是有索引的都是序列例如:列表,字符串,元组可变序列:列表(list) 数值改变,id不变不可变序列:字符串(str) 原组(tuple) 数值改变,id改变列表的创建:通过[]来创建一个空列表2.切片:是指从现有列表中获得一个子列表语法:列表[起始:结束:步长]通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素起始位置和结束位置的索引可以不写:如果省略结束位置,则会从当前位置一直截取到最后如果省略开始位置,则会从第一个元素截取到结束的前一

2021-01-03 18:04:41 128

原创 我的第五篇博客《条件判断》

条件判断1.条件判断语句(if语句):语句在执行时,会先对条件表达式求值判断,如果为True,则执行if后的语句,如果为False,则不执行if语句 语法:if+条件表达式:代码块(*代码块必须缩进)2.input()函数只有input语句输入之后,他后面的代码才会执行input语句具有阻塞程序的功能,只有当用户输入了东西之后,代码才会继续执行input输入的数据类型为字符串int()可以将其他数据类型强制性转换为整数型,前提是其本身属于int类型3.if-else语句:if-els

2021-01-02 15:18:44 102

原创 我的第四篇博客《运算符》

运算符运算符的概念:运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算。例如:2+3,其操作数是2和3,而运算符是’’ +’’1.算术运算符加法运算符 +减法运算符 -乘法运算符 *除法运算符 ///整除,只会保留计算后的整数位,总会返回一个整数%取余,求两个数相除的余数**幂运算给,求一个值的几次幂2.赋值运算符赋值运算符的特殊写法:x=x+3和x+=3是一样的+=(x+=3相当于x=x+3)-=(x-=3相当于x=x-3)=(x=3相当于x=x*3)/=(x/=

2021-01-01 19:40:10 196 1

原创 我的第三篇博客《基本数据类型》

基本数据类型1.几个概念表达式:表达式是由数字、算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合表达式的特点表达式一般仅仅用于计算一些结果,不会对程序产生实质性的影响如果在交互模式中输入一个表达式,解释器会自动将表达的结果输出语句:一个语法上自成体系的单位,它由一个词或句法上有关的一组词构成语句的执行一般会对程序产生一定的影响,在交互模式中不一定会输出语句的执行结果程序:程序就是由一条条语句和一条条表达式构成函数:函数就是一种语句,函数专门用来完成特定

2020-12-31 21:00:00 281

原创 我的第二篇博客

Python要点1.python的基本概念官方对python的介绍:python是一款易于学习且功能强大的编程语言。它具有高效率的数据结构,能够简单又有效地实现面向对象编程。使得它成为一种在多种领域与绝大多数平台都能进行脚本编写与应用快速开发工作的理想语言python的创作者 吉多·范罗姆(龟叔),采用《巨蟒剧团》取名python蟒蛇python的特色:简单 易于学习 自由开发 丰富的库 跨平台 可嵌入性python的发展及应用发展:应用: 网

2020-12-30 15:57:16 183 2

原创 我的第一篇博客

计算机基本概念A计算机特点1数值计算:也就是数字计算2逻辑计算:也就是调用程序模块等计算3存储记忆功能:存储(下载电影) 记忆(缓存电影)总结:计算机是能够按照程序运行、自动、高速处理数据的现代化智能电子设备B 计算机的组成1 硬件:是看的见摸的着的 例如:鼠标 键盘 显示器 cpu 硬盘等2软件:是看的见摸不着的 例如:pycharm qq 浏览器 王者荣耀等软件:软件就是通过编程,完成的一个一系列按照特定顺序组织的计算机数据和特定指令的集合C 计算机语言1机器语言 : 二

2020-12-29 22:42:39 128

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除