想成为Python⾼⼿,必须看这篇爬⾍原理介绍!(附29个爬⾍项⽬)
互联⽹是由⼀个个站点和⽹络设备组成的⼤⽹,我们通过浏览器访问站点,站点把HTML、JS、CSS代码返回给浏览器,这些代码经过浏览器解析、渲染,将丰富多彩的⽹页呈现我们眼前。
⼀、爬⾍是什么?
如果我们把互联⽹⽐作⼀张⼤的蜘蛛⽹,数据便是存放于蜘蛛⽹的各个节点,⽽爬⾍就是⼀只⼩蜘蛛,沿着⽹络抓取⾃⼰的猎物(数据)爬⾍指的是:向⽹站发起请求,获取资源后分析并提取有⽤数据的程序。
从技术层⾯来说就是 通过程序模拟浏览器请求站点的⾏为,把站点返回的HTML代码/JSON数据/⼆进制数据(图⽚、视频) 爬到本地,进⽽提取⾃⼰需要的数据,存放起来使⽤;
⼆、爬⾍的基本流程
私信⼩编001即可获取⼤量Python学习资源
⽤户获取⽹络数据的⽅式:
⽅式1:浏览器提交请求—>下载⽹页代码—>解析成页⾯
⽅式2:模拟浏览器发送请求(获取⽹页代码)->提取有⽤的数据->存放于数据库或⽂件中
爬⾍要做的就是⽅式2。
1、发起请求
使⽤http库向⽬标站点发起请求,即发送⼀个Request
Request包含:请求头、请求体等
Request模块缺陷:不能执⾏JS 和CSS 代码
2、获取响应内容
如果服务器能正常响应,则会得到⼀个Response
Response包含:html,json,图⽚,视频等
3、解析内容
解析html数据:正则表达式(RE模块),第三⽅解析库如Beautifulsoup,pyquery等
解析json数据:json模块
解析⼆进制数据:以wb的⽅式写⼊⽂件
4、保存数据
数据库(MySQL,Mongdb、Redis)
⽂件
三、http协议请求与响应
**Request:**⽤户将⾃⼰的信息通过浏览器(socket client)发送给服务器(socket server)
**Response:**服务器接收请求,分析⽤户发来的请求信息,然后返回数据(返回的数据中可能包含其他链接,如:图⽚,js,css等)
**ps:**浏览器在接收Response后,会解析其内容来显⽰给⽤户,⽽爬⾍程序在模拟浏览器发送请求然后接收Response后,是要提取其中的有⽤数据。
四、 request
1、请求⽅式:
常见的请求⽅式:GET / POST
2、请求的URL
url全球统⼀资源定位符,⽤来定义互联⽹上⼀个唯⼀的资源 例如:⼀张图⽚、⼀个⽂件、⼀段视频都可以⽤url唯⼀确定
url编码
图⽚会被编码(看⽰例代码)
⽹页的加载过程是:
加载⼀个⽹页,通常都是先加载document⽂档,
在解析document⽂档的时候,遇到链接,则针对超链接发起下载图⽚的请求
3、请求头
User-agent:请求头中如果没有user-agent客户端配置,服务端可能将你当做⼀个⾮法⽤户host;
cookies:cookie⽤来保存登录信息
注意:⼀般做爬⾍都会加上请求头
[图⽚上传失败…(image-80a3c2-1629529258504)]
请求头需要注意的参数:
(1)Referrer:访问源⾄哪⾥来(⼀些⼤型⽹站,会通过Referrer 做防盗链策略;所有爬⾍也要注意模拟)
(2)User-Agent:访问的浏览器(要加上否则会被当成爬⾍程序)
(3)cookie:请求头注意携带
4、请求体
请求体如果是get⽅式,请求体没有内容(get请求的请求体放在 url后⾯参数中,直接能看到)如果是post⽅式,请求体是format dataps:1、登录窗⼝,⽂件上传等,信息都会被附加到请求体内2、登录,输⼊错误的⽤户名密码,然后提交,就可以看到post,正确登录后页⾯通常会跳转,⽆法捕捉到post
五、响应Response
1、响应状态码
200:代表成功
301:代表跳转
404:⽂件不存在
403:⽆权限访问
502:服务器错误
2、respone header
响应头需要注意的参数:
(1)Set-Cookie:BDSVRTM=0; path=/:可能有多个,是来告诉浏览器,把cookie保存下来
(2)Content-Location:服务端响应头中包含Location返回浏览器之后,浏览器就会重新访问另⼀个页⾯
3、preview就是⽹页源代码
JSO数据
如⽹页html,图⽚
⼆进制数据等
如果⼤家对于学习python有任何问题(学习⽅法,学习效率,如何就业),可以随时来咨询我,这是我的:python教程⼊门学习(教程/解答/交流/学习⽅法/就业信息)都有分享的。
六、总结
1、总结爬⾍流程:
爬取—>解析—>存储
2、爬⾍所需⼯具:
**请求库:**requests,selenium(可以驱动浏览器解析渲染CSS和JS,但有性能劣势(有⽤没⽤的⽹页都会加载);) **解析库:**正则,beautifulsoup,pyquery **存储库:**⽂件,MySQL,Mongodb,Redis
补充:29个Python爬⾍项⽬(所有链接指向GitHub)
WechatSogou [1]- 爬⾍。基于搜狗搜索的爬⾍接⼝,可以扩展成基于搜狗搜索的爬⾍,返回结果是列表,每⼀项均是具体信息字典。
DouBanSpider [2]- ⾖瓣读书爬⾍。可以爬下⾖瓣读书标签下的所有图书,按评分排名依次存储,存储到Excel中,可⽅便⼤家筛选搜罗,⽐如筛选评价⼈数>1000的⾼分书籍;可依据不同的主题存储到Excel不同的Sheet ,采⽤User Agent伪装为浏览器进⾏爬取,并加⼊随机延时来更好的模仿浏览器⾏为,避免爬⾍被封。
zhihu_spider [3]- 知乎爬⾍。此项⽬的功能是爬取知乎⽤户信息以及⼈际拓扑关系,爬⾍框架使⽤scrapy,数据存储使⽤mongo
bilibili-user [4]- Bilibili⽤户爬⾍。总数据数:20119918,抓取字段:⽤户id,昵称,性别,头像,等级,经验值,粉丝数,⽣⽇,地址,注册时间,签名,等级与经验值等。抓取之后⽣成B站⽤户数据报告。
SinaSpider [5]- 新浪微博爬⾍。主要爬取新浪微博⽤户的个⼈信息、微博信息、粉丝和关注。代码获取新浪微博Cookie进⾏登录,可通过多账号登录来防⽌新浪的反扒。主要使⽤ scrapy 爬⾍框架。
distribute_crawler [6]- ⼩说下载分布式爬⾍。使⽤scrapy,Redis, MongoDB,graphite实现的⼀个分布式⽹络爬⾍,底层存储MongoDB 集,分布式使⽤Redis实现,爬⾍状态显⽰使⽤graphite实现,主要针对⼀个⼩说站点。最后,如果你的时间不是很紧张,并且⼜想快速的提⾼,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多⼈进步都很快,需要你不怕吃苦哦!⼤家可
以去添加上看⼀下~
CnkiSpider [7]- 中国知⽹爬⾍。设置检索条件后,执⾏src/CnkiSpider.py抓取数据,抓取数据存储在/data⽬录下,每个数据⽂件的第⼀⾏为字段名称。
LianJiaSpider [8]- 链家⽹爬⾍。爬取北京地区链家历年⼆⼿房成交记录。涵盖链家爬⾍⼀⽂的全部代码,包括链家模拟登录代码。
scrapy_jingdong [9]- 京东爬⾍。基于scrapy的京东⽹站爬⾍,保存格式为csv。
QQ-Groups-Spider [10]- QQ 爬⾍。批量抓取 QQ 信息,包括名称、号、⼈数、主、简介等内容,最终⽣成 XLS(X) / CSV 结果⽂件。
wooyun_public[11]-乌云爬⾍。乌云公开漏洞、知识库爬⾍和搜索。全部公开漏洞的列表和每个漏洞的⽂本内容存在MongoDB中,⼤概约2G内容;如果整站爬全部⽂本和图⽚作为离线查询,⼤概需要10G空间、2⼩时(10M电信带宽);爬取全部知识库,总共约500M空间。漏洞搜索使⽤了Flask作为web server,bootstrap作为前端。
spider[12]- hao123⽹站爬⾍。以hao123为⼊⼝页⾯,滚动爬取外链,收集⽹址,并记录⽹址上的内链和外链数⽬,记录title等信
息,windows7 32位上测试,⽬前每24个⼩时,可收集数据为10万左右。
findtrip [13]- 机票爬⾍(去哪⼉和携程⽹)。Findtrip是⼀个基于Scrapy的机票爬⾍,⽬前整合了国内两⼤机票⽹站(去哪⼉ + 携程)。
163spider [14] - 基于requests、MySQLdb、torndb的⽹易客户端内容爬⾍。
doubanspiders[15]- ⾖瓣电影、书籍、⼩组、相册、东西等爬⾍集 writen by Python
QQSpider [16]- QQ空间爬⾍,包括⽇志、说说、个⼈信息等,⼀天可抓取 400 万条数据。
baidu-music-spider [17]- 百度mp3全站爬⾍,使⽤redis⽀持断点续传。
tbcrawler[18]- 淘宝和天猫的爬⾍,可以根据搜索关键词,物品id来抓取页⾯的信息,数据存储在mongodb。
stockholm [19]- ⼀个股票数据(沪深)爬⾍和选股策略测试框架。根据选定的⽇期范围抓取所有沪深两市股票的⾏情数据。⽀持使⽤表达式定义选股策略。⽀持多线程处理。保存数据到JSON⽂件、CSV⽂件。最后,如果你的时间不是很紧张,并且⼜想快速的提⾼,最重要的是不怕吃苦,建议你可以联系维:762459510 ,那个真的很不错,很多⼈进步都很快,需要你不怕吃苦哦!⼤家可以去添加上看⼀下~
BaiduyunSpider[20]-百度云盘爬⾍。
Spider[21]-社交数据爬⾍。⽀持微博,知乎,⾖瓣。
proxy pool[22]-Python爬⾍代理IP池(proxy pool)。
music-163[23]-爬取⽹易云⾳乐所有歌曲的评论。
新浪微博登录不了CnblogsSpider[24]-cnblogs列表页爬⾍。
spider_smooc[25]-爬取慕课⽹视频。
knowsecSpider2[26]-知道创宇爬⾍题⽬。
SinaSpider[27]-动态IP解决新浪的反爬⾍机制,快速抓取内容。
csdn-spider[28]-爬取CSDN上的博客⽂章。
ProxySpider[29]-爬取西刺上的代理IP,并验证代理可⽤性。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论