爬虫入门
文章平均质量分 67
WHJ226
学生
展开
-
Python字符串中变量使用、删除空白、大数表示和列表(补充)(12)
其中strip()方法用于删除字符串两端空白,lstrip()方法用于删除字符串开头(左端)空白,rstrip()方法用于删除字符串末尾(右端)空白。使用列表解析,首先指定一个描述性的列表名,并定义一个表达式,用于生成要存储到列表中的值;如果使用较早版本,需要使用format()方法,在圆括号内列出要在字符串中使用的变量。在某些情况下,我们需要在字符串中使用变量的值来改变字符串的内容。当我们书写很大的数时,能够通过下划线将数字分组,使其清晰易读,且Python中不会打印数字中的下划线。......原创 2022-07-20 20:43:58 · 314 阅读 · 0 评论 -
Python的常用函数(11)
目录1 range()函数2 enumerate()函数3 zip()函数4 map()函数5 sorted()函数6 reversed()函数格式:range(start,stop[,step])参数:start表示计数开始,默认从0开始,如range(3)等价于range(0,3);stop表示计数结束,但不包括stop,如range(0,3)是[0,1,2];step表示步长,默认为1,如range(0,3)等价于range(0,3,1)。注意:arange(start,end,step)函数与ran原创 2022-06-12 20:33:46 · 394 阅读 · 2 评论 -
爬虫入门(10)——反爬(6)Selenium
目录1 下拉框选择 2 窗口截图 3 无头浏览器4 自动切换窗口有时我们会碰到下拉框,WebDriver提供了Select类来处理下拉框,如百度搜索设置的下拉框。但是我们完全可以用XPath()方法和click()方法来完成,后面如果遇到下拉框我们在补充Select方法。如图所示:代码如下: 运行效果如下:自动化用例是由程序去执行的,因此有时候输出的错误信息并不是十分明确。如果在脚本执行出错的时候能够对当前窗口截图保存,那么通过图片就可以非常直观地看出出错的原因。WebDriver提供了截图函数get原创 2022-06-05 08:53:49 · 405 阅读 · 0 评论 -
爬虫入门(9)——反爬(5)Selenium
目录1 获取断言 2 元素等待2.1 显示等待2.2 隐式等待不管是在做功能测试还是自动化测试,最后一步需要拿实际结果与预期进行比较。这个比较成为断言。我们通常可以通过获取title、URL和text等信息进行断言。下面以百度为例。代码如下:运行结果如下:效果如下:现在大多数Web应用程序使用Ajax技术。当一个页面被加载到浏览器时,该页面内的元素可以在不同时间点被加载。这使得定位元素变得困难,如果元素不在页面之中,会抛出Element Not Visible Expection异常。使用wai原创 2022-06-04 12:45:34 · 369 阅读 · 0 评论 -
爬虫入门(8)——反爬(4)Selenium
目录1 鼠标事件2 键盘事件在Selenium中叶提供了一些关于鼠标和键盘操作的方法,比如鼠标悬浮、滑动、键盘输入等,下面跟着我一起了解一下。在Selenium中,将关于鼠标操作的方法封装在ActionChains类提供。下面通过一个例子来看如何使用。以百度首页为例,如果把鼠标指针移动到百度首页的设置菜单栏选项上,这时它会出现一个下拉菜单栏,如下图所示,如果鼠标移开,它就会消失。下面使用Selenium来模拟。首先需要定位“设置” 的位置,这里我们选用XPath定位: 代码如下:运行效果如下: 通过前原创 2022-06-04 00:01:43 · 434 阅读 · 0 评论 -
爬虫入门(7)——反爬(3)Selenium
爬虫入门(6)——反爬(2)_WHJ226的博客-CSDN博客在该博客中讲了动态渲染,Selenium安装,驱动器下载及配置,以及为什么复制得到的XPath后会获取到空的列表,并小试了一下Selenium自动打开百度浏览器。下面让我们一步一步了解Selenium的操作及用途。Selenium提供了8种元素定位方式,通过这些定位方式可以定位指定元素、提取数据或给指定的元素绑定事件设置样式等。表中是最新的定位方法,之前大都是这样写的(在PyCharm2022.1.1版中已经不在使用以下方式): 我们可以看原创 2022-06-03 19:41:14 · 1691 阅读 · 0 评论 -
爬虫入门(6)——反爬(2)
目录1 动态渲染1.1 单击事件1.2 异步加载数据 2 Selenium爬取动态渲染页面2.1 Selenium模块安装2.2 Chrome浏览器驱动器下载2.3 Chrome浏览器驱动器配置3 Selenium小试牛刀动态网页比静态网页更具交互性,能给用户提供更好的体验。动态渲染被广泛的应用在web网站中,大部分的网站都会以JS交互来提升用户体验。单击事件指的是用户在页面上单击某一个按钮或者页面元素的操作,这些按钮都会对应绑定一个JS方法,当我们在单击它们时,就会在我们无法感知的情况下去执行。例如:浏原创 2022-06-03 15:55:31 · 442 阅读 · 1 评论 -
线程池和进程池(10)——批量获取图片(1)
目录1 多线程和多进程2 XPath返回空列表问题多进程和多线程是实现多任务常用的两种方式。上一节我们应用以下方式获取刘亦菲的两张图片,但是两张图片对我们来说是完全不够的。因此,我们需要改进方法。例如:通用模板如下:2 XPath返回空列表问题这个模板怎么用呢,下面教你批量获取神仙姐姐的图片,怎么说呢,食色?性也(分开打,审核应该能过)。第一步,分析网页结构:我们需要的图片存放的地址: 解析XPath,并获取请求头,请求方式等信息: 获取XPath后,按模板编写代码,运行后返回的内容是原创 2022-06-05 11:03:13 · 343 阅读 · 1 评论 -
线程和进程(9)
目录1 threading模块2 Thread类3 其他创建多线程的方法4 尾末福利:神仙姐姐进程(Process)是程序的一次执行。每个进程都有自己的地址空间、内存、数据栈以及记录运行轨迹的辅助数据,操作系统管理运行的所有进程,并为这些进程公平分配时间。线程(Thread)和进程有些相似,不同的是所有线程运行在同一个进程中,共享运行环境。在进程的整个运行过程中,每个线程都只做自己的事,需要时再跟其他线程共享运行的结果。threading模块不仅提供了Thread类,还提供了各种非常好用的同步机制。实例一:原创 2022-06-03 00:00:00 · 150 阅读 · 0 评论 -
日期和时间(8)
目录1 time模块1.1 time()函数1.2 localtime()函数1.3 sleep()函数1.4 gmtime()函数1.5 asctime()函数1.6 ctime()函数2 datetime模块2.1 now()方法2.2 today()方法语法格式如下:例如:运行结果如下:时间戳(timestamp)表示从1970年1月1日00时00分00秒开始按秒计算的偏移量。使用time()函数可以计算两个事件的时间间隔。例如:运行结果如下:1.2 localtime(原创 2022-06-02 14:55:52 · 123 阅读 · 0 评论 -
爬虫入门(5)——反爬(1)
目录1. User-Agent2. Cookie校验3. Referer校验Header信息校验指的是当我们在使用客户端服务器发送请求的时候,会在请求头里携带一些信息,而服务端在接收我们的请求时,会先对这些信息进行完整性、合法性、唯一性等规则判断,以此来辨别我们是真人在访问还是程序在访问。User-Agent是反爬策略中最基础也是最简单的一种反爬手段,服务器通过接收请求头中的User-Agent值来区分正常用户和爬虫程序。我们以C站为例子:F12键进入以下页面获取User-Agent: 运行结果如下:原创 2022-06-01 20:11:24 · 1937 阅读 · 0 评论 -
爬虫(4)——re正则匹配数据
目录1. re.compile函数2. re.match函数3. 其他函数使用XPath可以从HTML源码中提取数据,但是XPath有局限性,只能在结构化的HTML或XML格式的文档中。正则表达式则比较通用。语法格式如下:例如:运行结果如下:2. re.match函数re.match在正则中有讲过match()函数的匹配模式,该函数主要尝试从字符串的起始位置匹配,如果起始位置没有匹配成功,返回none,匹配成功则返回一个包含位置的元组类型的数据。语法格式如下:例如:运行结果原创 2022-06-01 17:01:58 · 685 阅读 · 0 评论 -
爬虫(3)——XPath学习
目录1.HTML网页基础 2. 安装XPath2.1 pip install lxml2.2 PyCharm3. XPath基本语法4. 一键教你学会使用XPathXPath是一种在XML文档中查找信息的语言,可以使用它在HTML源代码文档中通过元素、属性等方式进行查找和提取数据。HTML是用来描述网页的一种语言,其全称为Hyper Text Markup Language(超文本标记语言),这里首先要声明一点,HTML不是一种编程语言,而是一种标记语言。我们打开百度浏览器认识一下网页结构: 可以看到内容原创 2022-06-01 11:20:37 · 347 阅读 · 1 评论 -
爬虫入门(1)——requests(1)
requests库采requests用的是阻塞式的网络请求方式,也就是说,发起请求之后,必须等到有响应才会继续执行下面的任务。1. requests模块安装基于PyCharm2022.1.1的开发环境。1.1 pip insatll requests点击Terminal输入pip install requests后回车,本人已经安装过,所以显示需求以满足。1.2安装完成后会显示类似successful标志 。2.requests实战以搜狗...原创 2022-05-31 17:02:47 · 1671 阅读 · 0 评论 -
面向对象的程序设计(7)
1. 面向对象概述Python从设计之初就已经是一种面向对象的语言。面向对象(object oriented,OO)是一种设计思想,面向对象中的对象,通常是指客观世界中存在的的对象。对象是一种抽象概念,表示任意存在的事物。通常将对象划分为两部分,即静态部分与动态部分。静态部分被称为“属性”,如人的性别;动态部分指的是对象的行为,即对象执行的动作,如人可以行走。类是封装对象的属性和行为的载体,反过来说,具有相同属性和行为的一类实体被称为类。例如,把雁群比作大雁类,那么大雁类就具备了翅膀和爪子等属性,觅原创 2022-05-30 19:38:02 · 281 阅读 · 0 评论 -
try...except异常处理语句(6)
在程序运行过程中,经常会遇到各种各样的错误,这些错误统称为“异常”。1. 异常常见异常及描述 异常 描述 SyntaxError:invalid syntax 无效语法 NameError 尝试访问一个没有声明的变量引发的错误 IndexError 索引超出序列范围引发错误 IndentationError 缩进错误 ValueError 传入的值错误 KeyError 请求一个不存在的字典关键字引发错误 IOError原创 2022-05-30 15:10:38 · 511 阅读 · 0 评论 -
文件及目录操作(5)
目录1. 创建,打开和写入文件2. 目录操作1. 创建,打开和写入文件打开文件一般使用with语句。打开文件后,要及时关闭。如果忘记关闭,可能会带来意想不到的问题。为了避免问题的发生,需要使用with语句而不是open()方法。一般语法格式如下:with open(filename, mode='r') as f: f.write(string)mode的参数值及说明 参数值 说明 备注 r 以只读模式打开文件。 文件必须存在。原创 2022-05-29 21:38:04 · 148 阅读 · 0 评论 -
正则表达式(4)
正则表达式(regular expression,简称re),又称规则表达式,通常被用来检索和替换符合某些规则的文本。1. 正则表达式语法1.1 行定位符行定位符 字符 说明原创 2022-05-29 20:13:12 · 348 阅读 · 0 评论 -
字符串(3)
目录1. 字符串编码转换1.1 使用encode()方法编码1.2 使用decode()方法解码2. 字符串拼接3. 字符串长度4. 截取字符串5. 分割字符串6. 合并字符串7. 检索字符串7.1 count7.2 find7.3 index7.4 startswith和endswith8. 字母大小写转换9. 去除字符串中的空格和特殊字符在python中,有两种常用的字符串类型,分别为str和byte。这两种类型的字符串不能拼接在一起。原创 2022-05-28 23:04:19 · 405 阅读 · 0 评论 -
Python编程基础(2)
1233原创 2022-05-28 17:29:29 · 569 阅读 · 0 评论 -
Python编程基础(1)
1.注释#1.单行注释用#开头#打印第一个程序print("hello world!")#2.多行注释可以用一对三个单引号(或双引号)'''你好!欢迎学习Python请打印你的第一个程序'''print("hello world!")"""你好!欢迎学习Python请打印你的第一个程序"""print("hello world!")2.缩进一般使用4个空格来进行缩进。if True: print("answer") print("Tr原创 2022-05-27 23:46:46 · 976 阅读 · 1 评论