瀑布冰封
Python,可以帮忙抢票,可以爬虫东西,关于Python爬虫怎么做?今天教大家一个案例,python爬虫多线程实战:爬取美桌1080p壁纸图片 | 技术
技术点分析
· 爬虫requests
· 多线程threading
· 文件io读写操作
· xpath 提取ur
· 正则
实战
· 分析url
搞清楚各个url 的关联win4000.com/wallpaper_205_0_10_1.html
URL中与分类的关系:
wallpaper : 桌面壁纸
205 :壁纸分类对应大陆明星
10 :图片尺寸对应1920*1080
分析到这一部,我们知道 ,如果要需要其他类型的壁纸,只需要更改网站分类代码就可以了。
· 谷歌 charme ,通过右键检查
chrame 浏览器右键提示。
按图顺序,依次找到对应的html标签。
通过查看,我们发现 中间展示 的图片是由一个ul 标签包裹的 多个Li
我们所要跳转的链接 就在 Li 标签中, 这时就需要使用xpath进行数据的提取。
到此,我们第一层url 的分析就完成了。可以写出以下代码段。
此时通过xpath 获到当前页面中的 ul 中所有li 标签了。
那单个明星的跳转链接只需要再次xpath 进行提取就Ok了。
完成到这里你的代码运行结果应该如下:是两个列表list。
运行结果
准备下载图片
到这,完成第一步,你已经成功获到 每个明星的跳转链接 :
url: win4000.com/wallpaper_detail_153895.html
再次进行url 的分析:
初步分析
通过上图的分析,可以找到这张图,是我们要 1080规格的。但很可惜,一共9张,现在只能找到一张图片的url。
选其中两张图片地址对比:
pic1.win4000.com/wallpaper/2018-12-26/5c22eb195abe8.jpg
pic1.win4000.com/wallpaper/2018-12-26/5c22eb1c722dc.jpg
好像就是后面文件名不同。如果一张张取是不是很麻烦?
不信你自己去试一下。点再分析一下页面,有个 【查看原图】 选项,点一下试试呢?
点击上图出,点完发现了url的变化。
再看看有没有惊喜的地方 :
上图为url分析。
通过上图的分析 ,我们发现原来这个big页面有我们想要的所有 1080P的图片,而且,全是用ul 包裹,放到单个Li 标签中 。那简单了,用之前的办法 再提取一次,就出来了。代码如下:
到这里,我们第一步就完成了一页24个明星图片的地址url的爬取。第二步,完成了单个明星的1080图片地址url的爬取。下一步,我们把图片保存到本地就顺利结束。
图片保存
按需求,要单独到一个文件夹内。那我们就需要在本地路径内 创建对应的文件夹。此处使用 star_img_name 列表中的值。需要使用到i/o读写操作。
顺利完成 这个需求:
源码展示
代码运行结果若不同,可看一眼源码:
运行起来是不是很慢(完善版使用多线程),而且这样看代码,是不是有种:干干巴巴的,麻麻咧咧的,一点都不圆润,盘他!!
完善版是可以完成可选分类,可选规格 ,多线程版。希望这个小实战案例可以帮到大家。
有关于Python爬虫的课程:
Python爬虫数据挖掘基础教程
python网络爬虫第一天
python网络爬虫第二天
有想学习的小伙伴,可以关注黑马程序员,后台回复“Python爬虫”哦!
黑马程序员
爬虫实际就是自动化的去做网络后获得想要的数据。
做网络爬虫通常可以用Python、Java、C等,甚至有人用Go和Nodejs等做爬虫,语言并不是最重要的,爬取理念并实现(即怎么爬到)才是重要的,只是Python开发快,符合做爬虫快速开发的需求且生态较好所以更多人使用。
下面讲讲我自学爬虫后总结的方法:
1.首先是网络请求,大致会了解使用到http、https协议,请求方法大致为GET/POST/PUT/HEAD/DELETE等,而Python中会使用到默认库如urllib,而使用久了会发现并不pythonic,所以你会发现一个非内置却胜似内置的requests,自动化测试用的selenium等。紧接着你会需要格式化你要的文本,例如json、正则re、dom解析beautifulsoup、xml及xpath等;
2.取得数据后你会考虑让数据落地操作,这时候会考虑redis、mq、kafka等队列及缓存系统亦或常见如MySQL、Oracle、sqlite、mongodb、hbase、elasticsearch等数据库;
3.而在这移动时代,你会发现你开始需要的数据不止在PC端,还在手机端,APP端,因此你开始需要尝试抓包软件(中间人攻击),如fiddler、阿里的Anyproxy、Python的Mitmproxy等,并采用Appium、adb、按键精灵等进行模拟操作从而实现自动化,当然你也可以尝试对APP进行反编译等操作;
4.而后你发现你的爬虫爬取速度开始不能满足你的需求,所以你开始学习尝试使用异步、多线程/多进程、分布式,开始使用爬虫框架Scrapy、spider等来爬取一些大同小异的站点;
5.正当你爬的欢愉时反爬虫开始捂住你大笑的嘴,你会碰到 头部信息识别、动态网页、ajax异步请求、JS压缩代码混淆、自定义字体库、验证码、IP封锁(动态代理、拨号代理等)、账号登录(封号)、蜜罐投毒等等五花八门的手段,这时候也只能看谁手段硬了;
6.在与移动端交互中,数据可视化下,你会开始需要使用web框架如Flask/Django/Springboot等写接口,而可视化会用到常见的echarts、D3.js等进行图表渲染;
好了,本次吹水暂时到这里,手机敲字实在是累,所以你还想了解其他的?那就下次再说吧[灵光一闪]
佛系看世界
自己从大学开始就学习 Python,目前已经有四五年了 。当初之所以想学习 Python,就是因为看着 Python 能做网络爬虫,能将互联网中的数据收揽在囊中。其实 Python 爬虫不难,只要你用心,能很快学会。
我当时买了一本《Python 基础入门(第二版)》,书中的环境是 Python 2.7。当时我看到 Python 有 3.X 版本,就果断选择新版本。因为自己觉得初学者,选择什么版本都行,不如就选择新版本,这样学到的技术就不会那么快就过时。自己当时是有了 C 语言的编程基础,上手 Python 就很快。自己利用两个星期的时间将这本书给啃完了。这算是将一些 Python 语法基础以及基本操作学会了。然后自己就开始学习爬虫。
自己总结下自己学习爬虫的路线和经验,一共分为四个阶段。希望能帮到你。
第一阶段:夯实
入门要就是在打基础,所以要从最基础的库学起。下面是几个库是入门最经典的
1)urllib
它属于 Python 标准库。该库的作用是请求网页并下载数据。在学习该库之前,最好把 HTTP 协议了解下。这会大大提高后面的学习效率。
先学会如何使用 urllib 请求到数据,再学习一些高级用法。例如: - 设置 Headers: 某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。设置 Headers 可以把请求伪装成浏览器访问网站。 - Proxy 的设置: 某些站点做了反倒链的设置,会将高频繁访问的 IP 地址封掉。所以我们需要用到代理池。 - 错误解析:根据 URLError 与 HTTPError 返回的错误码进行解析。 - Cookie 的使用:可以模拟网站登录,需要结合 cookielib 一起使用。
值得吐槽的是:Python 2.7 和 3.x 版本不兼容很坑。Python 2.7 是有两个 urllib 库,到了 Python 3.x 就合并为同一个库。
2)re
re 是正则表达式库。同时也是 Python 标准库之一。它的作用是匹配我们需要爬取的内容。所以我们需要掌握正则表达式常用符号以及常用方法的用法。
BeautifulSoup 是解析网页的一款神器。它可以从 HTML 或者 XML 文件中提取数据。配合 urllib 可以编写出各种小巧精干的爬虫脚本。
第二阶段:进阶
当把基础打牢固之后,我们需要更进一步学习。使用更加完善的库来提高爬取效率
1) 使用多线程使用多线程抓取数据,提高爬取数据效率。
Requests 作为 urlilb 的替代品。它是更加人性化、更加成熟的第三方库。使用 Requests 来处理各种类型的请求,重复抓取问题、cookies 跟随问题、多线程多进程、多节点抓取、抓取调度、资源压缩等一系列问题。
Xpath 也算是一款神器。它是一款高效的、表达清晰简单的分析语言。掌握它以后介意弃用正则表达式了。一般是使用浏览器的开发者工具 加 lxml 库。
使用 Selenium,模拟浏览器提交类似用户的操作,处理js动态产生的网页。因为一些网站的数据是动态加载的。类似这样的网站,当你使用鼠标往下滚动时,会自动加载新的网站。
动态加载数据是利用到 Ajax 技术。如果你能逆向分析出网站请求的方法以及参数(参数经常是加密的),那么可以直接使用 Requests 库直接替代浏览器抓取数据。
实在没有办法,可以使用 Selenium 启动浏览器来抓取。
第三阶段:突破
1)学习 Scrapy
Scrapy 是一个功能非常强大的分布式爬虫框架。我们学会它,就可以不用重复造轮子。
如果爬取的数据条数较多,我们可以考虑将其存储到数据库中。因此,我们需要学会 MySql MongoDB、SqlLite的用法。更加深入的,可以学习数据库的查询优化。
第四阶段:为我所用
当爬虫完成工作,我们已经拿到数据。我们可以利用这些数据做数据分析、数据可视化、做创业项目原始启动数据等。 我们可以学习 NumPy、Pandas、 Matplotlib 这三个库。 - NumPy :它是高性能科学计算和数据分析的基础包。
- NumPy :它是高性能科学计算和数据分析的基础包。
- Pandas : 基于 NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。它可以算得上作弊工具。
- Matplotlib:Python中最著名的绘图系统Python中最著名的绘图系统。它可以制作出散点图,折线图,条形图,直方图,饼状图,箱形图散点图,折线图,条形图,直方图,饼状图,箱形图等。
-----------------------------------------------
喜欢的、觉得有用的麻烦点个赞,万分感谢~
个人微信公众号:极客猴(ID:Geek_monkey)
自己坚持分享 Python 原创干货,包括基础入门,进阶技巧,网络爬虫,数据分析,Web 应用开发等。。欢迎关注~
极客猴
大到各类搜索引擎,小到日常数据采集,都离不开网络爬虫。爬虫的基本原理很简单,遍历网络中网页,抓取感兴趣的数据内容。这篇文章会从零开始介绍如何编写一个网络爬虫抓取数据,然后会一步步逐渐完善爬虫的抓取功能。
工具安装
我们需要安装python,python的requests和BeautifulSoup库。我们用Requests库用抓取网页的内容,使用BeautifulSoup库来从网页中提取数据。
安装python
运行pip install requests
运行pip install BeautifulSoup
抓取网页
完成必要工具安装后,我们正式开始编写我们的爬虫。我们的第一个任务是要抓取所有豆瓣上的图书信息。我们以https://book.douban.com/subject/26986954/为例,首先看看开如何抓取网页的内容。
使用python的requests提供的get()方法我们可以非常简单的获取的指定网页的内容, 代码如下:
提取内容
抓取到网页的内容后,我们要做的就是提取出我们想要的内容。在我们的第一个例子中,我们只需要提取书名。首先我们导入BeautifulSoup库,使用BeautifulSoup我们可以非常简单的提取网页的特定内容。
连续抓取网页
到目前为止,我们已经可以抓取单个网页的内容了,现在让我们看看如何抓取整个网站的内容。我们知道网页之间是通过超链接互相连接在一起的,通过链接我们可以访问整个网络。所以我们可以从每个页面提取出包含指向其它网页的链接,然后重复的对新链接进行抓取。
通过以上几步我们就可以写出一个最原始的爬虫。在理解了爬虫原理的基础上,我们可以进一步对爬虫进行完善。
写过一个系列关于爬虫的文章:https://www.toutiao.com/i6567289381185389064/。感兴趣的可以前往查看。
Python基本环境的搭建,爬虫的基本原理以及爬虫的原型
Python爬虫入门(第1部分)
如何使用BeautifulSoup对网页内容进行提取
Python爬虫入门(第2部分)
爬虫运行时数据的存储数据,以SQLite和MySQL作为示例
Python爬虫入门(第3部分)
使用selenium webdriver对动态网页进行抓取
Python爬虫入门(第4部分)
讨论了如何处理网站的反爬虫策略
Python爬虫入门(第5部分)
对Python的Scrapy爬虫框架做了介绍,并简单的演示了如何在Scrapy下进行开发
Python爬虫入门(第6部分)
壹瓜壹果
答案:很明显,用手和大脑做。[狗头]
上面抖了个机灵,下面会详细回答,告诉你当前主流python爬虫应该怎么做。
爬虫是啥
先给不懂的小朋友简单科普下,爬虫是啥,毕竟看到这个问题的小伙伴不一定懂什么是爬虫。
爬虫本身其实很复杂,高端的有百度的“蜘蛛”,需要非常恐怖的代码量,算法。低端的只要几行代码就能够搞定。
这边举一个不是很严谨的例子,不过应该能够帮助各位小伙伴了解什么是爬虫。
举个例子:
批量下载!我们平时网上看到一张好看的图,我们会右键点击保存下来,如果看到非常多好看的图,我们需要经过大量重复操作。
但是使用爬虫,就很方便,定义好规则,就能够批量给你下载下来。
最关键的是,很多不允许你保存和下载的图片,爬虫也能够抓取,下载下来,这就是爬虫厉害的地方。
专业的事情,交给专业的人,同样,爬取,抓取这种事情,就交给爬虫去做。
爬虫怎么做
爬虫要怎么做呢?我注意到你问的是Python爬虫怎么做。
很简单,你可以学一下python,如果你不想学,那也可以。
这边有100个案例python 的爬虫案例,代码都写好了,你只要替换一些东,就可以了。
私信w3cschool回复“python”就可以获得下面100多个源码。
当然,这边小编还是建议一下各位小伙伴学习一下python,毕竟python目前是公认的最简单的编程语言,甚至没有之一。
而且python的强大还在于数据分析,大数据,人工智能等领域。
仔细想想,你爬取到知乎一大堆大V的数据,然后用python做数据分析,就能够得到非常多有用的信息,这是一件多么棒的事情。
目前w3cschool有在头条号的付费专栏里面,上传python的入门视频教程,各位小伙伴如果有兴趣,可以去试学~
编程狮APP
爬虫讲的简单一点,就是通过一个程序去网络上抓取所需要的资源。
这些资源包括:html、json、xml等等不同的格式。然后再把这些资源转换成可存储,可用,可分析或者有价值的数据。
想要学习爬虫python的话首先你要懂得最基本的编程语言使用、网络基本知识以及HTML文档、css。
只是入门的话
网络这块只需要懂得HTTP协议,懂得使用工具来抓包。要熟悉json格式数据。
HTML和CSS需要有个了解,知道常用标签。
python需要你学完基础部分。比如:
- 变量
- 数据类型
- 循环判断
- 迭代器
- 函数
- 面向对象
- 常用包的使用
爬虫的话推荐使用:
- requests
- lxml
- BeautifulSoup
requests 就是一个网络请求库,用来获取网络上的资源。
lxml 是一个HTML文档解析器。主要用来分析html文档。
BeautifulSoup 是一个很好用的工具,它可以很方便的通过一些方法或者属性来对各种文档来进行分析。
下面是一个很入门的爬虫案例:
前几天刚写的抓取网易新闻,总共也就几个函数。
主要包括:
- 分析url
- 分析页面
- 获取新闻
- 保存新闻
写完这个案例之后又总结了一下 BeautifulSoup 的使用。感兴趣的可以来看看。
有问题欢迎评论指出哦!
后端漫谈
Python 爬虫怎么做?
这是一个长期学习的过程,这里有一个系列的教程,还在持续更新中,如果感兴趣的可以看看。
IT 行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰,但是,我们要清楚:淘汰的永远只是那些初级水平的从业者,过硬技术的从业者永远都是稀缺的。因此对于学习,我们还是要踏踏实实的。
自学 Python ,也是一样,不要一开始因为头脑发热就不停地收藏各种资料网站,购买各种书籍,下载了大量的教学视频,过了几天,学习的热情开始褪去,再过几个星期,终于完成了学习课程 —— 《从入门到放弃》。所以,学习 Python 需要一步一个脚印,踏踏实实地学。
FQ
在讲 Python 如何入门之前,个人建议最好每个人都有自己的 FQ 工具,多使用 Google 搜索,多去看一下墙外的世界,多看 Github 上的开源项目。
至于如何 FQ ,这里提供一下我用过的工具:FQ工具集「https://github.com/TwoWater/Python/blob/master/Res/FQ.md」
Python 学习资源集
相信很多人学习某门编程语言的时候,都会找各种学习资料。说句实话,资料太多,反而没用,根据自己的学习习惯,个人能力选择一门资源坚持学就好了。
因为每个人的需求不同,这里整理了一批 Python 比较好的学习资料:
- Python 博客网站资源「https://github.com/TwoWater/Python/blob/master/Res/Python%E5%8D%9A%E5%AE%A2%E7%BD%91%E7%AB%99%E8%B5%84%E6%BA%90.md」
- Python 视频教程资源「https://github.com/TwoWater/Python/blob/master/Res/Python%E5%8D%9A%E5%AE%A2%E7%BD%91%E7%AB%99%E8%B5%84%E6%BA%90.md」
Python 入门
对于入门,主要是掌握基本的语法和熟悉编程规范,因此大部分的教程基本一致的,所以还是建议选好适合自己的一个教程,坚持学下去。
在 Python 入门中,本人自己编写了一系列的 《 草根学 Python 》 博客, 是基于 Python 3.6 写的 Python 入门系列教程,为了更好的阅读,把它整理在 GitBook 上;如果 GitBook 访问慢,也可以到个人博客查阅:草根学 Python,希望对各位入门 Python 有所帮助。
主要目录如下:
- Python代码规范
- 简明概述
- 注释
- 命名规范
- 第一个Python程序
- Python 简介
- Python 的安装
- 第一个 Python 程序
- 集成开发环境(IDE): PyCharm
- 基本数据类型和变量
- Python 语法的简要说明
- Python 的基本数据类型
- 基本数据类型转换
- Python 中的变量
- List 和 Tuple
- List(列表)
- tuple(元组)
- Dict 和 Set
- 字典(Dictionary)
- set
- 条件语句和循环语句
- 条件语句
- 循环语句
- 条件语句和循环语句综合实例
- 函数
- Python 自定义函数的基本步骤
- 函数传值问题
- 函数返回值
- 函数的参数
- 匿名函数
- 迭代器和生成器
- 迭代
- Python 迭代器
- lsit 生成式(列表生成式)
- 生成器
- 迭代器和生成器综合例子
- 模块与包
- Python 模块简介
- 模块的使用
- 主模块和非主模块
- 包
- 作用域
- 面向对象
- 面向对象的概念
- 类
- 类的属性
- 类的方法
- 类的继承
- 类的多态
- Python 的 Magic Method
- Python 的 Magic Method
- 构造()和初始化()
- 属性的访问控制
- 对象的描述器
- 自定义容器(Container)
- 运算符相关的魔术方法
- 枚举类
- 枚举类的使用
- Enum 的源码
- 自定义类型的枚举
- 枚举的比较
- 元类
- Python 中类也是对象
- 使用 动态创建类
- 什么是元类
- 自定义元类
- 使用元类
- 线程与进程
- 线程与进程
- 多线程编程
- 进程
- 一步一步了解正则表达式
- 初识 Python 正则表达式
- 字符集
- 数量词
- 边界匹配符和组
- re.sub
- re.match 和 re.search
- 闭包
- 装饰器
知识点补漏
- Python 关键字 yield
Python 进阶
- 使用Python虚拟环境
- Mac中使用virtualenv和virtualenvwrapper
Django
Python 下有许多款不同的 Web 框架。Django 是重量级选手中最有代表性的一位。许多成功的网站和 APP 都基于 Django。
如果对自己的基础有点信息的童鞋,可以尝试通过国外进行入门,这个教程讲的非常的详细,而且还有很多有趣的配图。不过可能因为墙的原因,很多人会访问不到,就算访问到了,也因为是英语的,不会进行耐心的阅读学习。因此我打算翻译这个教程。
- 一个完整的初学者指南Django-part1
- 一个完整的初学者指南Django-part2
后面经一个朋友说,这个教程已经有人在翻译了,因此我也不翻译了,不过感觉我的翻译还是挺好的,因为不是直译的,是通过了解后,用自己的语言再次表达出来。
这里有上面这个教程翻译计划的 Github 以及 博客,觉得哪个看得舒服,就选哪个进行学习。
stormzhang
对于小白来说,爬虫可能是一件非常复杂、技术门槛很高的事情。比如有的人认为学爬虫必须精通 Python,然后哼哧哼哧系统学习 Python 的每个知识点,很久之后发现仍然爬不了数据;有的人则认为先要掌握网页的知识,遂开始 HTMLCSS,结果入了前端的坑,瘁……
但掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现。但建议你从一开始就要有一个具体的目标,你要爬取哪个网站的哪些数据,达到什么量级。
那些所有你认为必须的前置知识,都是可以在完成目标的过程中学到的。这里给你一条平滑的、零基础快速入门的学习路径。
1.学习Python包并实现基本的爬虫过程
2.掌握各种技巧,应对特殊网站的反爬措施
3.学习scrapy,搭建工程化爬虫
4.学习数据库知识,应对大规模数据存储与提取
5.分布式爬虫,实现大规模并发采集
学习 Python 包并实现基本的爬虫过程
大部分爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。
Python中爬虫相关的包很多:urllib、requests、bs4、scrapy、pyspider 等,建议从requests+Xpath 开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。
如果你用过 BeautifulSoup,会发现 Xpath 要省事不少,一层一层检查元素代码的工作,全都省略了。这样下来基本套路都差不多,一般的静态网站根本不在话下,豆瓣、糗事百科、腾讯新闻等基本上都可以上手了。
掌握各种技巧,应对特殊网站的反爬措施
当然,爬虫过程中也会经历一些绝望,比如被封IP、比如各种奇怪的验证码、字体加密、userAgent访问限制、各种动态加载等等。
遇到这些反爬虫的手段,当然还需要一些高级的技巧来应对,常规的比如访问频率控制、使用代理IP池、字体反加密、抓包、验证码的OCR处理等等。
往往网站在高效开发和反爬虫之间会偏向前者,这也为爬虫提供了空间,掌握这些应对反爬虫的技巧,绝大部分的网站已经难不到你了。
学习 scrapy,搭建工程化的爬虫
掌握前面的技术一般量级的数据和代码基本没有问题了,但是在遇到非常复杂的情况,可能仍然会力不从心,这个时候,强大的 scrapy 框架就非常有用了。
scrapy 是一个功能非常强大的爬虫框架,它不仅能便捷地构建request,还有强大的 selector 能够方便地解析 response,然而它最让人惊喜的还是它超高的性能,让你可以将爬虫工程化、模块化。
学会 scrapy,你可以自己去搭建一些爬虫框架,你就基本具备爬虫工程师的思维了。
学习数据库基础,应对大规模数据存储
爬回来的数据量小的时候,你可以用文档的形式来存储,一旦数据量大了,这就有点行不通了。所以掌握一种数据库是必须的,学习目前比较主流的 MongoDB 就OK。
MongoDB 可以方便你去存储一些非结构化的数据,比如各种评论的文本,图片的链接等等。你也可以利用PyMongo,更方便地在Python中操作MongoDB。
因为这里要用到的数据库知识其实非常简单,主要是数据如何入库、如何进行提取,在需要的时候再学习就行。
分布式爬虫,实现大规模并发采集
爬取基本数据已经不是问题了,你的瓶颈会集中到爬取海量数据的效率。这个时候,相信你会很自然地接触到一个很厉害的名字:分布式爬虫。
分布式这个东西,听起来很恐怖,但其实就是利用多线程的原理让多个爬虫同时工作,需要你掌握 Scrapy + MongoDB + Redis 这三种工具。
Scrapy 前面我们说过了,用于做基本的页面爬取,MongoDB 用于存储爬取的数据,Redis 则用来存储要爬取的网页队列,也就是任务队列。
所以有些东西看起来很吓人,但其实分解开来,也不过如此。当你能够写分布式的爬虫的时候,那么你可以去尝试打造一些基本的爬虫架构了,实现更加自动化的数据获取。
- 如何高效学习 -
你看,这一条学习路径下来,你已然可以成为老司机了,非常的顺畅。所以在一开始的时候,尽量不要系统地去啃一些东西,找一个实际的项目(开始可以从豆瓣、小猪这种简单的入手),直接开始就好。
因为爬虫这种技术,既不需要你系统地精通一门语言,也不需要多么高深的数据库技术,高效的姿势就是从实际的项目中去学习这些零散的知识点,你能保证每次学到的都是最需要的那部分。
当然唯一麻烦的是,在具体的问题中,如何找到具体需要的那部分学习资源、如何筛选和甄别,是很多初学者面临的一个大问题。
Python花猫
简单网站,直接使用页面请求
从获取的html页面中,或者api获取的json中,得到自己所需要的数据,然后存储到指定的数据库
用到的库主要为 :
- http访问: requests模块、或urllib3库
- 多线程:Thread、threadpool线程池,或者concurrent包里的ThreadPoolExecutor、或urllib3自带的PoolManager()
- 文档处理: re 正则表达式、json模块
- 数据存储:MySQL-python存储或者pymongo mongodb存储等等
比较正式的爬虫系统,可以用python框架Scrapy
被封堵的网站
- 简单的js封堵,可以通过代码分析,模拟逻辑来绕过
- 复杂的验证码就需要用些图像识别库来进行识别了,如pytesser,然后填充和认证通过
- 如果需要登录的网站,还可能需要用到selenium工具进行模拟输入的方式登录
❤❤❤❤❤ 请任性点赞,谢谢关注 -- 我是 极迭代 ,我为自己带盐 :)
极迭代
\n
{!-- PGC_VIDEO:{"thumb_height": 360, "file_sign": "a8860ceb052eb3fce5ed7c8a1e0810fb\