![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python爬虫
文章平均质量分 60
世界的隐喻
我是个在黑暗中大雪纷飞的人啊
展开
-
简易界面爬虫小项目
【代码】简易界面爬虫小项目。原创 2022-10-12 21:34:04 · 245 阅读 · 0 评论 -
行百里者半九十 —— scrapy 框架关于下载中间件的补充
下载中间件拦截请求需求中间件部分代码实现需求在《行百里者半九十 —— scrapy 框架(6)》一文中我们介绍了下载中间件的作用,并演示了其中拦截响应的代码实现。现在我们来试着实现拦截请求的代码实现,也就是UA池和代理池的实现。因为免费 IP 总是失效,所以在这里只提供中间件部分的代码实现,不提供运行结果。正因为此,代码可能有所疏漏,还望各位看官海涵。中间件部分代码实现# Define here the models for your spider middleware## See docu原创 2021-08-06 11:34:50 · 146 阅读 · 0 评论 -
行百里者半九十 —— scrapy 框架(7)
这里写目录标题一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-08-06 11:17:56 · 255 阅读 · 1 评论 -
行百里者半九十 —— scrapy 框架(6)
中间件的使用——爬取网易新闻一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-08-04 15:20:37 · 177 阅读 · 0 评论 -
行百里者半九十 —— scrapy 框架(5)
scrapy爬取图片需求图片数据爬取之ImagesPipelinescrapy爬取图片ImagesPipeline使用流程注意事项代码实现运行结果需求爬取站长素材中的图片图片数据爬取之ImagesPipelinescrapy爬取图片xpath 解析出图片 src 的属性值。单独对图片地址发起请求获取图片二进制类型的数据。ImagesPipeline只需要将 img 中 src 的属性进行解析,提交到管道,管道就会对图片的 src 进行请求发送获取图片的二进制并进行持久化存储。使用流程数据原创 2021-08-03 10:13:25 · 124 阅读 · 1 评论 -
行百里者半九十 —— scrapy 框架(4)
深度爬取——请求传参一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-08-02 19:34:18 · 158 阅读 · 1 评论 -
行百里者半九十 —— scrapy 框架(3)
全站数据爬取一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-08-02 10:02:33 · 129 阅读 · 0 评论 -
行百里者半九十——scrapy 框架(2)
scrapy 持久化存储(以糗事百科为例)前言基于终端指令的持久化存储基于管道的持久化存储前言不知道大家还记得爬虫万能的三步骤吗?没错,那就是指定URL,发送请求,持久化保存数据。我们前面在 scrapy框架(1)中简单了解了使用 scrapy 指定URL和发送请求,那么我们又要怎么使用 scrapy 实现数据的持久化存储呢?scrapy 框架实现数据持久化存储的方法有两种,一种是基于终端命令的持久化存储;一种是基于管道的持久化存储。基于终端指令的持久化存储首先我们先创建相应的 scrapy 文原创 2021-07-12 23:14:22 · 212 阅读 · 8 评论 -
行百里者半九十——scrapy 框架(1)
scrapy 框架初识安装认识简单的代码实现安装如果没记错,python 3.6 及以上版本可以直接用 pip install scrapy.但具体是从哪个版本开始可以这样我也不是很清楚,因为我使用的 python 3.95,所以我是直接用pip安装的。也正因为如此,对于下载whl格式的包安装我是不太清楚的,所以不提。认识scrapy 安装成功后,我们来创建项目框架。打开终端。cmd 或者从 pycharm 中打开终端。我以 pycharm 为例。首先,进入到相应的目录创建项目框架文件夹s原创 2021-07-01 21:34:20 · 137 阅读 · 1 评论 -
工欲善其事,必先利其器 —— selenium 模块(6)
selenium 综合应用 (2)需求代码分析代码实现需求模拟登录 12306注意:目的在于验证码的识别。因为除了点击,12306在登录后还存在滑块验证码。本篇文章并不涉及滑块验证码。代码分析首先需要定位并点击 “账号登陆”然后问题就是账号密码和验证码的问题了。我相信账号密码并不是什么大问题,实际上叫人无从下手的是验证码问题。这时候需要的就是我们的验证码网站了。12306 网站的验证码基本是 1~4 个坐标,所以我们选择 type = 27。需要明白的是我们使用验证码识别的是坐标。原创 2021-06-29 17:58:35 · 120 阅读 · 0 评论 -
工欲善其事,必先利其器 —— selenium 模块(5)
selenium 综合应用(1)需求网页分析三级目录需求网页分析三级目录原创 2021-06-29 01:14:01 · 117 阅读 · 1 评论 -
工欲善其事,必先利其器 —— selenium 模块(4)
selenium 模块(4)几句题外话搜索框的关键词输入(以京东为例)有关 iframe 框架的 xpath 定位(以 QQ 空间为例)几句题外话因为准备期末考试的缘故,有一段时间没有写博文了,今天认真一看竟然已经有一个月没有写了。虽然我的博文只有零零总总几人看过,但期间有位大佬 “催更” ,真是叫我汗颜。如果关注过我写的东西的时间,或许各位就会看到我中间大概有三四个月的时间没有写过博文。明白了这一点,或许各位看官就大概能理解我的感动了,毕竟对于我这种非计算机专业的人来说,CSDN大佬的鼓励或是指正原创 2021-06-26 20:36:50 · 198 阅读 · 0 评论 -
工欲善其事,必先利其器 —— selenium 模块(3)
selenium 模块自动化操作(2)(以京东为例)页面滚动使用 javescript 命令实现鼠标点击窗口的切换页面滚动我们首先打开京东的页面,随便输入一个商品名称会看到如下的页面。我们可以先数一数页面有多少商品。如果我们使用滚轮滚动,我们就会发现在也页面滚动的时候页面同时也在不停地加载。如果我们使用抓包工具,解析网页源码,在页面不滚动的情况下我们发现商品的数量是30个。也就是这时候 li 标签只有 30 个,如果我们把页面拉到底部,再看页面有的商品我们就会发现这时候有 60 个 li 标签原创 2021-05-26 22:01:05 · 116 阅读 · 1 评论 -
工欲善其事,必先利其器 —— selenium 模块(2)
selenium 自动化操作(1)(以百度翻译为例)from selenium import webdriverif __name__ == '__main__': bro = webdriver.Chrome(executable_path = "chromedriver.exe") # 发起请求 bro.get('https://fanyi.baidu.com/')我们运行程序发现我们使用 selenium 请求到的网页和我们自己打开的网页有一点不同。使用 sele原创 2021-05-24 22:06:24 · 130 阅读 · 0 评论 -
工欲善其事,必先利其器 —— selenium模块(1)
selenium 模块简单介绍安装简单测试简单介绍selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器安装首先是模块的安装pip3 install selenium因为使用的驱动浏览器,所以我们还需要下载响应浏览器的驱动浏览器。以谷歌浏览器为例这是驱动浏览器的网址http://ch原创 2021-05-23 21:20:39 · 116 阅读 · 0 评论 -
工欲善其事,必先利其器——协程(3)
使用 aiohttp 完成异步爬取图片代码演示代码演示import asyncioimport requestsfrom lxml import etreeimport aiohttpimport timeimport osasync def get_photo(url, name): print("正在下载:", name) # UA伪装 header = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0原创 2021-05-22 10:28:47 · 105 阅读 · 0 评论 -
工欲善其事,必先利其器——协程(2)
实现异步爬虫的协程resquests 协程的尝试flask服务resquests 模块的尝试aiohttp 模块实现协程resquests 协程的尝试前面我们学习了协程的简单的语法,以及写了一段代码实现了简单的协程。而我们的目的是为了实现异步爬虫。所以我们就用 requests 模块尝试一下协程flask服务首先我们用 flask 设置一个简单的框架,因为我们的重点是协程,所以选择的网站越简单越好代码如下app = Flask(__name__)@app.route('/bobo')def原创 2021-05-20 11:28:24 · 186 阅读 · 0 评论 -
工欲善其事,必先利其器——协程(1)
协程的介绍和简单的应用什么是协程简单说明简单的代码示例什么是协程简单来说,协程就是同时开启多个任务,但一次只顺序执行一个。等到所执行的任务遭遇阻塞,就切换到下一个任务继续执行,以期节省下阻塞所占用的时间。简单说明简单的代码示例import asyncioimport timeasync def func(url): # 定义一个协程函数 print("正在下载 url", url) await asyncio.sleep(2) # 等待。等待的是一个协程函数 pri原创 2021-05-12 16:24:28 · 102 阅读 · 0 评论 -
工欲善其事,必先利其器——线程池的使用
线程池的使用同步代码演示异步,线程池代码同步爬虫爬取图片使用线程池的异步爬虫爬取4K美女图片注意学到现在,我们可以说已经学习了爬虫的基础知识,如果没有那些奇奇怪怪的反爬虫机制,基本上只要有时间分析,一般的数据都是可以爬取的,那么到了这个时候我们需要考虑的就是爬取的效率了,关于提高爬虫效率,也就是实现异步爬虫,我们可以考虑以下两种方式:一是线程池的使用(也就是实现单进程下的多线程),一是协程的使用(如果没有记错,我所使用的协程模块是从python3.4以后引入的,我写博客时使用的python版本是3.9)。原创 2021-05-10 22:11:53 · 148 阅读 · 5 评论 -
工欲善其事,必先利其器——识别验证码(3)
爬取人人网用户个人页面如图的页面是我们这次需要爬取的页面,即人人网的个人页面一开始我们的想法是利用爬虫模拟登录,然后再获取我们需要爬取的网页页面。想到这里,我们就先来写代码吧。import requestsfrom lxml import etreeimport base64import jsondef base64_api(uname, pwd, img, typeid): with open(img, 'rb') as f: base64_data = bas原创 2021-05-04 17:19:45 · 393 阅读 · 1 评论 -
工欲善其事,必先利其器——识别验证码(2)
模拟登录人人网前面我们学习了使用第三方平台实现验证码的识别,那现在就让我们来用验证码的识别实现人人网的登录。首先我们先到人人网的登录页面去踩点。人人网登录在三次失败后需要输入验证码,那我们现在需要做的就是通过数据解析将验证码保存到本地(为了更好的使用第三方验证码识别平台)。有了验证码之后,我们又要怎么通过爬虫实现登录呢?首先我们打开抓包工具,看看登陆时会发生什么。首先我们先点击那个禁止符号的符号,将数据清空,然后再点击 “ preserve log ”,然后我们再实现登录。我们发现这里有一原创 2021-05-03 20:51:31 · 188 阅读 · 0 评论 -
工欲善其事,必先利其器——识别验证码(1)
验证码识别我们使用爬虫时很有可能需要登录,而现在的平台登陆时都需要验证码才能完成登录,所以我们使用爬虫模拟登录时验证码是必须要跨过的坎。一般情况下,我们使用第三方平台实现验证码的识别。所以我在这里介绍一个识别验证码的平台——图鉴(比较常见的有超级鹰,反正其实这些平台注册、使用流程都差不多)。首先我们打开图鉴的网址 “ http://www.ttshitu.com/ ”,点击注册登录成功后,我们首先看一下“价格”,其实也可以在注册帐号前看一看价格,再决定是否注册。在登陆后,因为识别验证码需要登录,原创 2021-05-02 17:01:54 · 521 阅读 · 1 评论 -
冰冻三尺,非一日之寒。数据解析——xpath(4)
爬取全国的城市名称以及“或”的简单介绍首先是爬取全国城市名称网址如下:https://www.aqistudy.cn/historydata/我们打开网页进行简单的数据分析我们发现我们需要爬取的名称都在 li 标签里。根据这个我们可以很简单地写我们的代码import requestsfrom lxml import etreeif __name__ == "__main__": # UA伪装 header = { "user-agnet": "Mozilla原创 2021-05-01 17:54:04 · 158 阅读 · 0 评论 -
冰冻三尺,非一日之寒。数据解析——xpath(3)
爬取4k图片源码分析文字编译爬取妹子图爬取真正的4k妹子图注意什么?我怎么又讲爬取图片?拜托,这可是 4k 图片,清晰度杠杠的。再说,爬取糗图算什么本事,做人要爬取的肯定是妹子图片,而且是 4k 的妹子图片,是不是很激动?放心,这次不晃你。源码分析首先让我们打开网页,好好欣赏一下美丽的妹子……哦不,我是说,好好的欣赏一下优美的网页源码。网址如下:https://pic.netbian.com/4kmeinv/看,是不是优美的妹子?……额咳咳,我是说优美的源码。很好,我们注意一下定位到的源码数据,原创 2021-04-27 16:55:56 · 174 阅读 · 0 评论 -
冰冻三尺,非一日之寒。数据解析——xpath(2)
爬取二手房信息说到二手房信息,不知道你们心里最先跳出来的公司(网站)是什么,反正我心里第一个跳出来的是网站是 58 同城。哎呦,我这暴脾气,想到就赶紧去干。但很显然,我失败了。说显然,而不是不幸,这是因为 58 同城是大公司,我这点本事爬不了数据是再正常不过的了。下面来看看 58 同城的反爬手段了。这是我爬取下来的网页源码。我们看到爬取下来的源码有很多英文大写字母和数字是网页源码中没有的,后来我了解到 58 同城对自己的网站的源码进行了文本加密,所以就出现了我爬取到的情况。然后我再打开 58 同城原创 2021-04-26 16:24:00 · 301 阅读 · 0 评论 -
冰冻三尺,非一日之寒。数据解析——xpath(1)
熟悉 xpthxpah 的语法认识xpath 爬取图片xpath 爬取三国演义xpah 的语法认识闲话少说,直接上图xpath 爬取图片代码如下import requestsfrom lxml import etreeimport osif __name__ == "__main__": # 创建文件夹 if not os.path.exists("./糗图(xpath)"): os.mkdir("./糗图(xpath)") # UA伪装原创 2021-04-24 22:04:28 · 185 阅读 · 0 评论 -
冰冻三尺,非一日之寒。数据解析——bs4
简单地使用bs4实现数据解析因为正则表达式本身有难度,所以在这里为大家介绍一下 bs4 实现数据解析。除此之外还有 xpath 解析。因为 xpath 不仅可以在 python 中使用,所以 bs4 和 正则解析一样,仅仅是简单地写两个案例(爬取可翻页的图片,以及爬取三国演义)。以后的重点会在 xpath 上。闲话少说,我们先来安装 bs4 相关的外来库。比较简单,首先打开 cmd 命令面板,依次安装bs4 和 lxml。 命令分别是 pip install bs4 和 pip install lxml原创 2021-04-24 20:34:42 · 249 阅读 · 1 评论 -
冰冻三尺,非一日之寒。数据解析——正则解析(2)
目录上一篇的翻页爬取图片代码爬取《三国演义》上一篇的翻页爬取图片代码话不多说,直接代码import requestsimport reimport osif __name__ == "__main__": # 创建文件夹 if not os.path.exists("./糗图(翻页)"): os.mkdir("./糗图(翻页)") # UA 伪装 header = { "user-agent": "Mozilla/5.0 (Wi原创 2021-04-24 17:08:00 · 218 阅读 · 0 评论 -
冰冻三尺,非一日之寒。数据解析——正则解析(1)
正则解析爬取图片因为讲的是正则解析,而不是正则表达式,所以我就默认大家会正则表达式了。最多在这里给大家看一下正则的语法。这也是我从B站上截图截下来的。因为我自己都是学的半懂不懂的,实在没那脸说在这里讲正则表达式怎么写。如果感觉学不会怎么办?没事,我们 python 的数据解析有正则解析、bs4解析和 xpath 解析。总有一款适合你。(这些后面都会讲到)言归正传,什么是数据解析,在我看来,数据解析简单来说就是分析网页的源代码。还记得像套娃一样的药监局吗?我似乎说过可以通过数据解析解决。欧克,那就原创 2021-04-20 21:57:18 · 150 阅读 · 0 评论 -
千里之行,始于足下。python 爬虫 requestes模块(6)
药监局爬取是不是在看到 “ 药监局 ” 这三个字的时候,突然想到爬虫可能会进局子的事实? 说到局子,我突然想到另一件事,因为前面写的是很基础的代码,没有代理池,所以在写的时候,特别是爬取翻页的时候,尽量减少爬取的页数,不然,额,后果自负。开个玩笑,没什么大问题的,就是很有可能自己的 IP 会被对面拉入黑名单(目前学的代码而言)欧克,言归正传,让我们回到药监局的爬取上吧。如果不出意外的话,这是 requests 模块的最后练习了,结束之后就是激动人心的数据解析了。先说说药监局网站,我不清楚是因为我用的原创 2021-04-20 19:15:36 · 212 阅读 · 0 评论 -
千里之行,始于足下。python 爬虫 requestes 模块(5)
肯德基餐厅地址查询前面我们学习了破解百度翻译,知道了 AJAX 的工作原理和爬取,那么我们今天就来巩固我们的学习成果吧。首先我们打开肯德基的官网,点击 “餐厅查询”然后是没有地址的网页,然后我们输入地址我们发现不论有没有搜索,网址都没有发生变化,这说明肯德基官网的地址查询是通过 AJAX 实现的,知道了这样一点我们就可以使用抓包工具进行分析了。我们可以从抓包工具中找到请求的 url 和相对应的请求命令和数据类型。我们发现这是一个 json 串,我们还需要像上次破解百度翻译一样先把 j原创 2021-04-18 23:17:02 · 152 阅读 · 3 评论 -
千里之行,始于足下。python 爬虫 requestes模块(4)
破解百度翻译翻译是一件麻烦的事情,如果可以写一个爬虫程序直接爬取百度翻译的翻译结果就好了,可当我打开百度翻译的页面,输入要翻译的词时突然发现不管我要翻译什么,网址都没有任何变化,那么百度翻译要怎么爬取呢?爬取百度翻译之前,我们先要明白百度翻译是怎么在不改变网址的情况下实现翻译的。百度做到这一点是用 AJAX 实现的,简单地说,AJAX的作用是在不重新加载网页的情况下进行局部的刷新。了解了这一点,那么我们要怎么得到 AJAX 工作时请求的URL呢?老规矩,使用抓包工具。步骤如下:在 “百度翻译” 页原创 2021-04-17 19:58:23 · 173 阅读 · 2 评论 -
千里之行,始于足下。python 爬虫 requestes模块(3)
简易网页搜集器(2)前面我们学会了如何用 UA 伪装骗过服务器爬取我们想要的网页数据,不知道你们会不会和我一样在学会 UA 伪装的兴奋后突然想到另一个问题——就是我们爬取一个页面就要改一次 url 吗?答案当然是否定的。我们观察下面两个网址一个显然易见的区别是我圈起来的部分,即“wd = ”那我就怀疑搜索不同的关键词,“wd” 都不同,那么是不是这么一回事呢?我们可以试试。结果就像这样欧克,这就说明关键在于 “wd”的值,那么我们就可以根据这点写一个动态的URL代码如下:import原创 2021-04-16 17:23:40 · 108 阅读 · 0 评论 -
千里之行,始于足下。python 爬虫 requestes模块(2)
简易网页搜集器原创 2021-04-15 11:40:47 · 224 阅读 · 0 评论 -
千里之行,始于足下。python 爬虫 requestes模块(1)
爬虫的流程:在开始学习爬虫,我们必须了解爬虫的流程框架。在我看来爬虫的流程大概就是三步,即不论我们爬取的是什么数据,总是可以把爬虫的流程归纳总结为这三步:指定 url, 可以简单的理解为指定要爬取的网址发送请求。requests 模块的请求一般为 get 和 post将爬取的数据存储requests 模块的导入:因为 requests 模块属于外部库,所以需要我们自己导入库导入的步骤:右键Windows图标点击“运行”输入“cmd”打开命令面板输入“pip install req原创 2021-04-13 17:35:28 · 179 阅读 · 0 评论