爬虫相关案例或知识
文章平均质量分 77
Triumph19
这个作者很懒,什么都没留下…
展开
-
反爬虫策略(ip代理、设置随机休眠时间、哔哩哔哩视频信息爬取、真实URL的获取、特殊字符的处理、时间戳的处理、多线程处理)
爬取哔哩哔哩视频相关信息2.降低请求频率爬虫程序运行得太频繁,一方面对网站极不友好,另一方面十分容易触发网站的反爬虫。因此,当运行爬虫程序时,可以设置两次请求之间的时间间隔来降低请求频率(通过time库设置程序休眠时间来实现)。如果时间间隔设置为一个固定数字,可能使爬虫程序不太像正常用户的行为,所以可通过设置random库设置随机数来设置随机时间间隔。爬取Python中文开发者首页设置两次请求之间的随机时间间隔,输出时间间隔。程序的运行结果如图5-3所示。爬取Pyth...原创 2022-06-12 21:52:07 · 2088 阅读 · 1 评论 -
4.3 模拟浏览器操作和页面等待(显示等待和隐式等待、句柄)
模拟浏览器和页面等待原创 2022-06-11 17:03:56 · 525 阅读 · 2 评论 -
第五章 Scrapy爬虫框架(5.1 Scrapy框架基础)
Scrapy 框架基础(创建爬虫项目、进入爬虫项目、创建具体的爬虫文件以及运行爬虫项目)原创 2022-06-04 19:22:04 · 461 阅读 · 1 评论 -
‘scrapy‘ 不是内部或外部命令,也不是可运行的程序或批处理文件(创建一个scrapy项目)
创建一个Scrapy项目转载 2022-06-04 16:59:29 · 1045 阅读 · 1 评论 -
将指定的时间戳转换为日期格式
转载自:https://www.cnblogs.com/1314520xh/p/16328808.html注意观察时间戳是多少位两种时间戳转换为时间格式:13位和10位,将时间戳转成时间格式import time#13位时间戳转时间tre_timeArray = time.localtime(1646012206685/1000)tre_otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", tre_timeArray)print('t.转载 2022-05-31 18:36:44 · 860 阅读 · 0 评论 -
正则表达式(转载)
一、校验数字的表达式数字:1*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$正数、负数、和小数:^(-|+)?\d+(.\d+)?$有两位小数的正实数:2+(.[0-9]{2})?$有1~3转载 2022-05-27 15:09:31 · 123 阅读 · 0 评论 -
4.2 手机模拟操作初步尝试(获取登录页面的源代码)
本节先来初步尝试手机模拟操作,为之后爬取微信朋友圈的实战演练做铺垫。4.2.1 用Android Studio 连接夜神模拟器要操控手机App,得先连接到手机。前面安装的夜神模拟器就是用来模拟Android系统手机的,因此,先打开夜神模拟器,然后在如右图所示的搜索栏中搜索微信,并进行安装。1.打开手机的开发者模式对于Android 系统手机,还需要打开其开发者模式,之后才能进行模拟操作。单击设置–关于手机–连续单击“版本号”5次–,会使手机进行开发者模式。同时记住显示的版本号,4.2.2.原创 2022-05-11 19:00:11 · 2176 阅读 · 0 评论 -
第 3 章 Ajax 动态请求破解(3.1 Ajax 简介、网页翻页方式的对比)
通常情况下,如果要更新网页的内容,需要重新加载整个网页。而Ajax动态请求则能在不重新加载整个网页的情况下,与服务器交换数据并更新网页中的部分内容。因此,严格来说,Ajax动态请求并不是一种反爬手段,而是一种网页展示手段。不过它的确在一定程度上给数据的爬取造成了困难,所以本书也将其视为一种反爬手段。本章将介绍Ajax动态请求的基本原理与破解方法,并以开源中国博客频道和新浪微博为例进行实战演练。3.1 Ajax 简介Ajax动态请求在本质上就是把常规的翻页操作做成了动态刷新的效果。最典型的例子就是开.原创 2022-05-05 20:43:05 · 712 阅读 · 0 评论 -
2.5 点选验证码(bilibili点选验证码识别)
点选验证码是一种相对复杂的验证码,如下图所示,它不仅需要识别文字的内容,而且还需要识别文字的位置。通过传统的识别手段点选验证码会比较麻烦,好在超级鹰也提供了相应的接口,如下图所示(详见https://www.chaojiying.com/price.html)。我们只需修改2.1节中定义的cjy()函数的代码,将其中的PosPic()函数的第2个参数改成与点选验证码的类型对应的接口,如9004,修改后的代码如下:def cjy(): #使用超级鹰识别图像验证码的自定义函数 ..原创 2022-05-05 19:38:23 · 5143 阅读 · 4 评论 -
2.4 滑块拼图验证码
滑动拼图验证码可以算是滑块验证码的进阶版本,其验证机制相对复杂。本节将介绍两种滑动拼图验证码:初级版和高级版本。2.4.1 初级版滑块拼图验证码初级版滑动拼图验证码是在普通滑块验证码的基础上增加了随机的滑动距离,用户需要根据拼图的缺口位置来决定滑块的滑动位置。如下左图所示为一个滑块拼图验证码的起始状态,注意此时还没有显示拼图和缺口。单击滑块后就会出现拼图和缺口,如下右图所示。之后会利用这一特性来找到拼图和缺口的位置。下面开始编写代码。首先用Selenium打开网页,代码如下:from .原创 2022-05-04 16:29:59 · 5274 阅读 · 4 评论 -
2.3 滑块验证码
本节要讲解如下图所示的滑块验证码(更为复杂的滑动拼图验证码在2.4节介绍)。这种验证码机制比较简单:将滑块拖动到滑轨的最右端即可完成验证,如下图所示。如果未将滑块拖动到滑轨的最右端,则无法通过验证,验证失败后滑块会回到起始位置。其中的关键是需要用Selenium库模拟鼠标拖动滑块滑动一定的距离。因为滑块的起始位置和滑轨的起始位置相同,所以滑块需要移动的距离等于滑轨的跨度减去滑块的宽度。下面就来利用开发者工具查看滑轨和滑块的宽度。在浏览器中打开本书配套代码文件中为滑块验证码搭建的本地网页文件..原创 2022-05-04 15:39:09 · 2835 阅读 · 0 评论 -
2.2 计算题验证码
计算题验证码与普通图像验证码的区别在于增加了数学运算,需要将验证码中数学计算题的结果填到文本框中,再单击“验证”。计算题验证码的处理难点在于运算符号的识别。如果将运算符号作为常规的图像文字进行识别,那么容易出现问题,例如,经常会把乘号或倾斜的加号识别为字母x,导致难以得到正确的计算结果。超级鹰有专门识别计算题或问答题的接口,如下图所示(详见https://www.chaojiying.com/price.html)。具体到Python代码层面,只需修改前面定义的cjy()函数的代码,将其中的Pos.原创 2022-05-03 20:41:51 · 1855 阅读 · 0 评论 -
2.1 图像验证码(英文验证码、超级鹰)
有些网站为了避免被过度访问,会设置验证码反爬机制,如果访问次数过多就要求用户输入验证码,甚至一开始访问就要求输入验证码。验证码的类型很多,本章会讲解其中常见的图像验证码、计算题验证码、滑块验证码、滑块拼图验证码、点选验证码。设置了验证码反爬机制的网站通常不希望被爬虫过度爬取,有的网站还会经常更换验证码类型,因此,本章主要使用专门搭建的本地网页(HTML文件)来讲解如何应对验证码反爬。注意:本章介绍的方法仅针对单纯的验证码反爬。有些网站除了验证码反爬,还会采用其他反爬手段(如针对Selenium和w.原创 2022-05-03 18:42:41 · 2865 阅读 · 1 评论 -
第1章 Cookie模拟登录(1.1 模拟登录的原理)
尽管Cookie模拟登录的代码并不复杂,但是所谓“知其然,更要知其所以然”,在进行编程实践之前,我们仍然有必要了解Cookie模拟登录的原理。Cookie模拟登录的原理涉及5个知识点:(1)客户端与服务端;(2)HTTP的无状态性;(3)Cookie的含义与作用;(4)Session的含义与作用;(5)Cookie与Session的交互。其中知识点(1)和知识点(2)是为知识点(3)~(5)做铺垫,简单了解即可。客户端与服务端在网站访问中存在客户端和服务端这两个概念。客户端可理解为“客户”或“用户.原创 2022-04-27 21:21:14 · 2027 阅读 · 0 评论 -
8.2 IP代理实战1:用Requests 库爬取公众号文章(提取的网址不全的处理,日期为时间戳格式的处理,乱码的处理)
搜索微信(https://weixin.sogou.com/)是一个微信公众号的搜索引擎,如下图所示。只需在搜索框中输入关键词,单击“搜文章”按钮,即可搜索微信公众号文章。本节要用Requests库从搜狗微信爬取微信公众号文章。爬取微信公众号文章时,如果爬取频率不高,如一天只爬几十次或几百次,不用IP代理也能完成;如果爬取频率较高,那么最好使用IP代理。下面会先不用IP代理进行爬取,再添加IP代理进行爬取,最后通过搭建只能IP切换系统让爬取更加顺利。8.2.1 直接用Requests库爬取用R.原创 2022-04-20 08:19:30 · 2882 阅读 · 1 评论 -
第8章 IP代理使用技巧与实战(8.1 结合Requests库使用IP代理)
有些网站设置了IP反爬措施,即对来访的IP地址进行监控,如果发现一个IP地址在短时间访问网站的次数太多,就将该IP地址冻结,也就是将其所在网络列入“黑名单”。此时如果继续访问该网站的网页,会看到“您的IP地址访问频率太高”的提示并拒绝访问,或者要求输入验证码才可以继续访问。本章就来讲解如何通过IP代理应对IP反爬措施这只“拦路虎”。本节先讲解如何结合Requests库使用IP代理,在8.3节将讲解如何结合Selenium库使用IP代理。8.1.1 IP代理基础知识IP地址可以理解为所用网络的身份.原创 2022-04-19 14:39:00 · 4753 阅读 · 0 评论 -
第 7 章 Python多线程和多进程爬虫 (7.1 理解线程和进程)
之前讲解的爬取方式都是爬完一个网页接着再爬下一个网页,如果爬取量非常大,则需要等待较长时间。那么有没有办法同时爬取多个网页以提高效率呢?答案是肯定的。本章就来讲解如果通过多线程和多进程同时爬取多个网页,以提高爬取速度。在进行多线程和多进程爬虫编程实战之前,首先来学习线程和进程的概念,以及多线程和多进程提高爬虫效率的原理,建议读者结合7.2节和7.3节的编程实战来理解。已经掌握这部分内容或对原理不感兴趣的读者可以直接阅读编程实战。7.1.1 计算机硬件结构基础知识学习计算机的硬件结构基础知识有助于.原创 2022-04-12 21:27:58 · 1365 阅读 · 0 评论 -
6.9 用Python操控数据库(批量删除,百度新闻数据爬取与存储,写入数据时进行去重处理,pandas读取sql数据)
学习完MySQL数据库的基本操作后,下面来学习如何用Python连接数据库,并进行数据的插入、查找、删除等操作。6.9.1 用PyMySQL库操控数据库上一节在phpMyAdmin 中创建了数据库“pachong”,并在其中创建了数据表"test",那么该如何在Python中连接该数据库,并调用其中的数据表呢?首先安装用于操控MySQL的python第三方库PyMySQL,安装命令为"pip install pymysql"。1.连接数据库首先来学习如何连接之前创建的数据库“pacho.原创 2022-04-12 20:03:27 · 5888 阅读 · 0 评论 -
6.8 数据存储——MySQL快速入门(下载网址及安装过程、基本操作)
前面学习了如何将爬取的数据存储到文本文件、CSV文件或Excel工作簿中,但是当数据量非常大时,在这类软件中查找和管理数据会很不方便,因此,我们需要一个专门用于存取和管理数据的软件——数据库。数据库的存储量很大,在商业实战中应用很多,本节会详细讲解MySQL数据库的基础知识,为学习用Python操作数据库做好准备。6.8.1 MySQL的安装MySQL 是最常用的数据库之一。MySQL 是用二维表格来组织数据,其结构和Excel工作表非常相似,也可以把它理解为一个位于云端的大型Excel。首先来.原创 2022-04-11 21:08:40 · 700 阅读 · 0 评论 -
6.6 集思录——可转债信息爬取(使用XPath获取所需网页源代码,解决selenium模拟登录但是未能获取目标网页源代码、MultiIndex问题)
本节要从债券相关网站集思录上爬取可转债信息。在浏览器中打开网址https://www.jisilu.cn/data/cbnew/#cb,可看到可转债的各种信息,如下图所示。首先用Selenium库访问网址并获取网页源代码,代码如下:from selenium import webdriverbrowser = webdriver.Chrome()url = 'https://www.jisilu.cn/data/cbnew/#cb'browser.get(url)data = browse.原创 2022-04-09 11:28:16 · 8704 阅读 · 5 评论 -
6.2 新浪财经——资产负债表获取(打印js渲染后的网页表格)
在搜索引擎中搜索“贵州茅台 新浪财经”,进入新浪财经中“贵州茅台”的(https://finance.sina.com.cn/realstock/company/sh600519/nc.shtml),单击“公司研究”栏目下的“更多”链接,如下图所示。在弹出的页面中可查看资产负债表、利润表、现金流量表等财务报表,下面来爬取资产负债表,单击“资产负债表”链接,显示的内容如下图所示。该页面的网址为https://vip.stock.finance.sina.com.cn/corp/go.php/vFD_Ba.原创 2022-04-04 21:30:10 · 6821 阅读 · 0 评论 -
第6章 数据结构化与数据存储(6.1数据结构化神器——pandas库,读取网页中的表格数据)
通过pandas库可以方便地爬取网页中的表格数据,对数据进行结构化处理,并导出为Excel工作簿等文件。6.1.1用read_html()函数快速爬取网页表格数据使用pandas库中的read_html()函数可以快速爬取网页中的表格数据。用搜索引擎搜索并打开“新浪财经数据中心”,然后选择“投资参考”中的“大宗交易”,如下图所示。下面就以爬取该页面(http://vip.stock.finance.sina.com.cn/q/go.php/vInvestConsult/kind/dzjy/inde.原创 2022-04-04 20:36:30 · 4215 阅读 · 0 评论 -
5.2 数据可视化分析——词云图绘制
5.2.1 用jieba库实现中文分词要从中文文本中提取高频词汇,需要使用中文分词(Chinese Word Segmentation)技术。分词是指将一个文本序列切分成一个个单独的词。我们知道,在英文的行文中,单词之间以空格作为分隔符,而中文的词语之间没有一个形式上的分解符,因此,中文分词比英文分词要复杂一些。在Python中,可以利用jieba库来快速完成中文分词。1.jieba 库的安装与基本用法import jiebaword = jieba.cut('我爱北京天安门')for i i原创 2022-04-03 20:21:58 · 20716 阅读 · 4 评论 -
第5章 数据处理与可视化(5.1数据清洗与优化技巧,舆情评分)
数据清洗与优化主要涉及常规的数据清洗、文本内容过滤、数据乱码问题处理等。5.1.1 常用的数据清洗手段及日期格式的统一首先回顾一下常用的数据清洗手段,代码如下:# 1.用strip()函数删除字符串首尾的空格、换行等空白字符res = ' 华能信托2019年实现利润42.11亿元,行业排名第三 'res = res.strip() #删除上面字符串首尾的空格和换行res# 2.用split函数()拆分字符串,以截取需要的内容date = '2022-4-2 14:27:.原创 2022-04-02 20:24:41 · 1871 阅读 · 0 评论 -
4.9 Selenium 库趣味案例:网页自动投票
本章最后来演示一个网页自动投票的案例,带领大家体验Selenium库在爬虫领域之外的应用。这里笔者构建一个本地的HTML网页(见本书配套代码文件中的vote.html),在浏览器中打开效果如下图所示。其投票逻辑非常简单,选中想要投票的部门,单击“确认投票”按钮,如下图所示。随后会弹出一个提示框,单击“确定”按钮即可关闭提示框,如下图所示。实现自动投票的思路也很简单:用Selenium库访问网页,再依次模拟单击响应的按钮。先用Selenium库访问网页,代码如下:from selenium .原创 2022-04-02 11:11:48 · 1968 阅读 · 1 评论 -
selenium被识别的解决方法(selenium模拟登录天猫/淘宝失败的解决方法)
参考文章:selenium被识别的解决方法import timefrom selenium import webdriverdef get_browser(): options = webdriver.ChromeOptions() options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_argument("--disable-blink-features=Automati.转载 2022-03-31 09:33:42 · 1417 阅读 · 1 评论 -
4.5 银行间拆借利率爬取(switch_to.frame()函数切换到子网页,浏览器同级页面切换--switch.window()函数)
银行间的资金流转数额通常非常大,某个银行在遇到资金流转问题时通常会向同业进行拆借,以弥补资金缺口,通常短时间内就会还清。还钱除了还本付息,而用于计算利息的利率,国内最常用的是上海银行间同业拆放利率(Shanghai Interbank Offered Rate,简称Shibor),它是由信用等级较高的银行组成报价团自主报出的人民币同业拆出利率计算确定的算术平均利率。简单来说,它披露的是银行间互相借钱的利率。这个利率还能帮助一些资管类金融机构制定报价标准,如制定某种理财产品的收益率等。本节目标就是爬取下图.原创 2022-03-29 16:55:42 · 1556 阅读 · 1 评论 -
数据解析与提取(3.1 用正则表达式解析和提取数据)
3.1.1 正则表达式基础1:findall()函数import rea = 'Hello 123 world'result = re.findall('\d\d\d',a)print(result)['123']从运行结果来看,findall()函数返回的是一个包含结果的列表,而不是字符串或数字,很多初学者经常会忽略这一点。下面再通过一个例子来加深印象,代码如下:import recontent = 'Hello 123 world 456 华小智Python基础教学135'r原创 2022-03-22 15:12:39 · 2403 阅读 · 0 评论 -
用Selenium库获取网页源代码:新浪财经股票信息
1.访问及关闭页面通过以下代码即可访问网站,相当于模拟人打开了一个浏览器,然后访问指定网址。from selenium import webdriverbrowser = webdriver.Chrome()browser.get('https://www.baidu.com/')第1行代码导入Selenium库中的webdriver功能,第2行代码声明要模拟的浏览器是谷歌浏览器,第3行代码使用browser.get()函数访问指定网址。在上述代码最后加上如下代码,就能关闭模拟浏览器。原创 2022-03-21 15:39:08 · 1329 阅读 · 0 评论 -
selenium安装及其安装前的准备
1.查看谷歌浏览器的版本号单击谷歌浏览器右上角的符号版本号如图2.下载ChromeDriver 安装包镜像网站选择与前面查到的版本号最接近的文件夹,第一步第二步3.安装ChromeDriver下载完ChromeDriver之后,建议把ChromeDriver安装到Python的安装路径下,从而让python更容易地调用ChromeDriver。在命令行中输入chromedriver,查看是否安装成功有时谷歌浏览器会自动更新,更新后的版本有可能与ChromeDriv原创 2022-03-20 21:41:59 · 992 阅读 · 0 评论 -
使用ProxyHandler实现代理
from urllib import request# 不使用代理的情况url = 'http://httpbin.org/ip'resp = request.urlopen(url)print(resp.read())运行结果如下b'{\n "origin": "14.106.132.92"\n}\n'# 使用代理的情况url = 'http://httpbin.org/ip'#1.使用ProxyHandler,传入代理构建一个handlerhandler = request.原创 2021-10-26 19:24:57 · 227 阅读 · 0 评论