| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 爬虫学习总结 -> 正文阅读 |
|
[Python知识库]爬虫学习总结 |
记录mac使用chromedriver的解决办法CSDN解决办法链接
记录mac在终端使用jupyter notebook把要使用的目录在终端打开 一、基础知识1、为什么要爬爬取网络数据:如果需要的数据市场上没有,或者不愿意购买,那么可以选择爬虫方式,自己动手丰衣足食
2、爬虫的作用数据分析----社交网络、情感分析、购物助手、排行榜数据等 3、爬虫如何工作网络爬虫模拟浏览器发送网络请求,接收请求响应,按照一定的规则,自动地抓取互联网信息的程序。遵循标准的HTTP协议利用超链接和Web文档检索方法遍历万维网
? 4、法律与道德问题 robots.txt
![image.png](https://img-blog.csdnimg.cn/img_convert/0c4ffafdfe9efa3ac0d338ec2f59b85e.png#clientId=u0f2313b8-0a51-4&from=paste&height=494&id=u4415d01f&margin=[object Object]&name=image.png&originHeight=987&originWidth=1436&originalType=binary&ratio=1&size=267542&status=done&style=none&taskId=u0fd7dd6e-de80-4b67-94bb-7bddbfb174b&width=718)
![image.png](https://img-blog.csdnimg.cn/img_convert/8c1b70dfd784cfb9790cb2a227237f56.png#clientId=u0f2313b8-0a51-4&from=paste&height=720&id=u89a7adda&margin=[object Object]&name=image.png&originHeight=1440&originWidth=1767&originalType=binary&ratio=1&size=1954429&status=done&style=none&taskId=u9240cf3a-2bf3-47c9-bc98-16c1fec7086&width=883.5) ? 二、网页基本知识1、认识HTTP协议HTTP(超文本传输协议)是应用层上的一种客户机/服务器的通信协议,是Web的核心,由请求和响应构成。 协议:协议规定了通信双方必须遵守的数据传输格式,这样通信双方按照约定的格式才能准确的通信。 URL地址格式HTTP协议基于URL访问服务器资源 如: ![image.png](https://img-blog.csdnimg.cn/img_convert/42342fa30d64ab4032e8e19b575a4747.png#clientId=u0f2313b8-0a51-4&from=paste&height=280&id=uf0e0bffa&margin=[object Object]&name=image.png&originHeight=405&originWidth=771&originalType=binary&ratio=1&size=71975&status=done&style=stroke&taskId=uc91ce928-ed38-40a5-ab5c-d7f5c71874b&width=533.5) user-Agent 请求头
![image.png](https://img-blog.csdnimg.cn/img_convert/9ced0b92b858deaf22b068a681f31552.png#clientId=u0f2313b8-0a51-4&from=paste&height=465&id=u4aeb6834&margin=[object Object]&name=image.png&originHeight=930&originWidth=872&originalType=binary&ratio=1&size=228032&status=done&style=none&taskId=u970f9207-0fbe-4033-b03e-5e339a96916&width=436)
HTTP响应 状态码![image.png](https://img-blog.csdnimg.cn/img_convert/9a2cbb09cf3d7fba56c30405e4c05630.png#clientId=u0f2313b8-0a51-4&from=paste&height=126&id=u9743da80&margin=[object Object]&name=image.png&originHeight=106&originWidth=362&originalType=binary&ratio=1&size=11707&status=done&style=stroke&taskId=ubd41978f-a9ec-4ee5-bf8a-09a989b921c&width=432)
2xx:表示服务器成功接收请求并已完成整个处理过程,常用200表示请求成功。 2、网页组成(三大件)
复杂的网页主要由3部分组成 HTML-结构:决定网页的结构和内容元素标记头部文件, 静态网页和动态网页静态网页:随着HTML代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非你修改页面代码。 爬虫取到的页面仅仅是一个静态的页面,即网页的源代码,就像在浏览器上的“查看网页源代码”一样。一些动态的东西如JavaScript脚本执行后所产生的信息,是抓取不到的。 3、浏览器工具(F12)
使用浏览器开发者工具查看网页请求 ![image.png](https://img-blog.csdnimg.cn/img_convert/352e21915f39cb5af4088cf51daa8746.png#clientId=u0f2313b8-0a51-4&from=paste&height=720&id=ufea07fda&margin=[object Object]&name=image.png&originHeight=1440&originWidth=2525&originalType=binary&ratio=1&size=1028484&status=done&style=stroke&taskId=u8077235e-ecb9-4d16-8df7-f82f8bd17fb&width=1262.5) 查看页面元素![image.png](https://img-blog.csdnimg.cn/img_convert/96cac12df78dfc97c21dabc107d6cb4b.png#clientId=u0f2313b8-0a51-4&from=paste&height=720&id=uaaaecb49&margin=[object Object]&name=image.png&originHeight=1440&originWidth=2173&originalType=binary&ratio=1&size=814735&status=done&style=none&taskId=u36b40808-6ded-4774-9f8b-a2edce7c96f&width=1086.5)
常用属性: 三、使用request库编写基本爬虫
Python 提供了很多库来支持 HTTP 协议的网络编程,目前普遍使用requests库 实例_从豆瓣爬取图片
![image.png](https://img-blog.csdnimg.cn/img_convert/1059bb38dd182d2d5f3b8b421cd9893e.png#clientId=u0f2313b8-0a51-4&from=paste&height=522&id=u1173263c&margin=[object Object]&name=image.png&originHeight=1044&originWidth=943&originalType=binary&ratio=1&size=121185&status=done&style=stroke&taskId=u29061dd2-2351-4dc3-af35-a087e219b7e&width=471.5)![image.png](https://img-blog.csdnimg.cn/img_convert/5b618593a5f7f3cef0d008262c8d3b7e.png#clientId=u0f2313b8-0a51-4&from=paste&height=272&id=udbf79c06&margin=[object Object]&name=image.png&originHeight=543&originWidth=709&originalType=binary&ratio=1&size=387968&status=done&style=stroke&taskId=u41495638-4d40-4047-b900-6d75af13b73&width=354.5) 1、获取URL
在网页要查看的元素上,单击鼠标右键,选择“检查” 2、发出请求
3、解析请求
响应对象中的属性
HTTP返回的响应消息中很重要的一部分内容是响应体,与响应体相关的属性有:content、text、json。
![image.png](https://img-blog.csdnimg.cn/img_convert/6f0637f6e218ed53b780d886a0277ce1.png#clientId=u0f2313b8-0a51-4&from=paste&height=460&id=u2236ba57&margin=[object Object]&name=image.png&originHeight=1440&originWidth=1839&originalType=binary&ratio=1&size=592169&status=done&style=stroke&taskId=ua53d1c8b-bbaf-40c5-818f-1cb72378094&width=588) 4、保存数据保存数据
![image.png](https://img-blog.csdnimg.cn/img_convert/e2eed41d15617bd38db82a31e7ccc668.png#clientId=u0f2313b8-0a51-4&from=paste&height=187&id=ub22daf7e&margin=[object Object]&name=image.png&originHeight=250&originWidth=645&originalType=binary&ratio=1&size=43389&status=done&style=none&taskId=ud7cc57be-2442-4fd9-88d1-a4d1cc65d69&width=482.5) 解决中文乱码将响应的apparent_encoding 编码送给响应的encoding属性: 2、为请求添加参数请求参数:向请求提交的待处理数据 get请求
很多URL都带有很长一串参数,称这些参数为URL的查询参数,用”?”附加在URL链接后面,多个参数之间用”&”隔开 以百度搜索为例,如何进行带参数请求?
post方式
requests 可以非常灵活地构建post请求需要的数据,如果服务器要求发送的数据是表单数据,则可以指定关键字参数 data;
![image.png](https://img-blog.csdnimg.cn/img_convert/5ee803958d2d96f6c47159280fdc3c49.png#clientId=u5490f16f-dd42-4&from=paste&height=323&id=u9817082c&margin=[object Object]&name=image.png&originHeight=374&originWidth=732&originalType=binary&ratio=1&size=76313&status=done&style=stroke&taskId=ub88e3f45-82ff-4f16-9e92-2c4664edbb2&width=632)
![image.png](https://img-blog.csdnimg.cn/img_convert/7e20d2f91bb15a52198479f88d583be5.png#clientId=u5490f16f-dd42-4&from=paste&height=367&id=u98241ee0&margin=[object Object]&name=image.png&originHeight=358&originWidth=591&originalType=binary&ratio=1&size=74528&status=done&style=stroke&taskId=u266565f6-7361-41a0-8af7-aa3d2a4e67f&width=606.5) 3、伪装请求头 user-agentrequests 可以很简单地指定请求首部字段Headers,直接传递一个字典对象给参数 headers 即可。 user-agent(用户代理):HTTP协议中的一部分,属于请求头,作用是描述发出HTTP请求的终端的一些信息。 修改user-agent:储存系统和浏览器的型号版本,通过修改它来伪装为浏览器,以此来蒙蔽服务器
四、使用BeautifulSoup库解析网页requests 库请求的数据结果 BeautifulSoup :一个用于解析 HTML 文档的 Python 库,通过 BeautifulSoup,只需要用很少的代码就可以提取出 HTML 中任何感兴趣的内容,此外,它还有一定的 HTML 容错能力,对于一个格式不完整的HTML 文档,它仍可以正确处理。
1、使用前准备工作pip install bs4 官方文档:http://beautifulsoup.readthedocs.io/zh_CN/v4.4.0
![image.png](https://img-blog.csdnimg.cn/img_convert/84d3623c6005327b343f08f41b286aac.png#clientId=u5490f16f-dd42-4&from=paste&height=199&id=u7139e018&margin=[object Object]&name=image.png&originHeight=398&originWidth=580&originalType=binary&ratio=1&size=30371&status=done&style=stroke&taskId=u652afb15-30a5-46ba-a448-5855c53758b&width=290) 2、如何使用BeautifulSoup构建一个 BeautifulSoup 对象需要两个参数 BeautifulSoup 负责操作数据(增删改查) 3、标签选择器
![image.png](https://img-blog.csdnimg.cn/img_convert/c82c32fe9562f5abe481881cb02bdfd2.png#clientId=u5490f16f-dd42-4&from=paste&height=146&id=ua43dea13&margin=[object Object]&name=image.png&originHeight=179&originWidth=756&originalType=binary&ratio=1&size=24591&status=done&style=stroke&taskId=u52d9597d-1468-4c19-8276-9d467f690d4&width=615)
![image.png](https://img-blog.csdnimg.cn/img_convert/b7952c300612d064b4707c08558baa5a.png#clientId=u5490f16f-dd42-4&from=paste&height=289&id=u68a401f8&margin=[object Object]&name=image.png&originHeight=349&originWidth=725&originalType=binary&ratio=1&size=42498&status=done&style=stroke&taskId=u5a830f7c-8e17-42ca-9924-1ea1dfee6d4&width=600.5)
提取标签间文字的方法
![image.png](https://img-blog.csdnimg.cn/img_convert/6f8fb6fbfed1df958d307a21577e7eee.png#clientId=u5490f16f-dd42-4&from=paste&height=83&id=u635a7e1f&margin=[object Object]&name=image.png&originHeight=89&originWidth=623&originalType=binary&ratio=1&size=16300&status=done&style=stroke&taskId=u8d6288dc-7859-4467-b26e-1f875cb18eb&width=577.5)
![image.png](https://img-blog.csdnimg.cn/img_convert/157aa86f08b58d559407e18f2cde8060.png#clientId=u5490f16f-dd42-4&from=paste&height=73&id=ue983d2fb&margin=[object Object]&name=image.png&originHeight=74&originWidth=604&originalType=binary&ratio=1&size=16100&status=done&style=stroke&taskId=uab663124-781e-4101-8b3d-0b4503c0d27&width=592)
![image.png](https://img-blog.csdnimg.cn/img_convert/2460b557a8aba50354a93382b4a6af50.png#clientId=u5490f16f-dd42-4&from=paste&height=501&id=ud420039e&margin=[object Object]&name=image.png&originHeight=593&originWidth=771&originalType=binary&ratio=1&size=79058&status=done&style=stroke&taskId=u5e15a740-1f9a-43d0-89d0-9d8e6142405&width=651.5)
4、遍历DOM树可以对元素的子元素、父元素、兄弟元素等进行导航,从而遍历整个网页 ![image.png](https://img-blog.csdnimg.cn/img_convert/37ee23b54cbf4b6d86105406ad6f0e89.png#clientId=u5490f16f-dd42-4&from=paste&height=276&id=u192705ba&margin=[object Object]&name=image.png&originHeight=330&originWidth=725&originalType=binary&ratio=1&size=41461&status=done&style=stroke&taskId=uaa0c9d0e-5406-4516-a856-b110f32e3c3&width=605.5) 下行遍历![image.png](https://img-blog.csdnimg.cn/img_convert/5a2ecd12e5e74cf46e9d3f3889d6ff2d.png#clientId=u5490f16f-dd42-4&from=paste&height=125&id=u35905851&margin=[object Object]&name=image.png&originHeight=143&originWidth=726&originalType=binary&ratio=1&size=28033&status=done&style=stroke&taskId=u4d605cd4-27bd-471d-8291-7960f47b8c9&width=635) 上行遍历![image.png](https://img-blog.csdnimg.cn/img_convert/cc0e8e4c51d4e53afae1d94d8cad42fd.png#clientId=u5490f16f-dd42-4&from=paste&height=106&id=u4a255569&margin=[object Object]&name=image.png&originHeight=107&originWidth=637&originalType=binary&ratio=1&size=14445&status=done&style=stroke&taskId=u4c73c1bf-7d3b-4670-96d4-77092edead8&width=629.5) 平行遍历![image.png](https://img-blog.csdnimg.cn/img_convert/7326fc0b32ed11b30a3ba1864ca80d76.png#clientId=u5490f16f-dd42-4&from=paste&height=149&id=u66aee146&margin=[object Object]&name=image.png&originHeight=176&originWidth=767&originalType=binary&ratio=1&size=38067&status=done&style=stroke&taskId=u1b324519-a46b-48ff-98a4-7b08717bb2b&width=647.5) 搜索文档树搜索文档树是通过指定标签名来搜索元素,还可以通过指定标签的属性值来精确定位某个节点元素 ![image.png](https://img-blog.csdnimg.cn/img_convert/a90199076109745cb5e592cc1a17391b.png#clientId=u5490f16f-dd42-4&from=paste&height=263&id=u642a045d&margin=[object Object]&name=image.png&originHeight=269&originWidth=661&originalType=binary&ratio=1&size=43687&status=done&style=stroke&taskId=ufc7d3923-bc0d-45b8-b31e-7c731ab245f&width=646.5) 5、BeautifulSoup库网络爬取实战
![image.png](https://img-blog.csdnimg.cn/img_convert/9616b11111f2e23d30eccd64c74d2b13.png#clientId=ub4f2245c-ef0e-4&from=paste&height=588&id=ucea5c8b9&margin=[object Object]&name=image.png&originHeight=855&originWidth=813&originalType=binary&ratio=1&size=338654&status=done&style=none&taskId=ue8e8fc5c-59da-435d-aab9-e7a32766ff0&width=559.5) 6、CSS选择器
![image.png](https://img-blog.csdnimg.cn/img_convert/a4caeaeaf6146bb24765b0a7b6c884d0.png#clientId=ub4f2245c-ef0e-4&from=paste&height=180&id=u23732c2e&margin=[object Object]&name=image.png&originHeight=198&originWidth=595&originalType=binary&ratio=1&size=22034&status=done&style=stroke&taskId=u6e3a4733-93e9-4597-8933-51cc6a01fdf&width=541.5) 7、实战_利用BeautifulSoup爬取猫眼
五、自动化爬取动态网站的方法
? 测试selenium自动执行
中国大学2020排名六、反爬虫![image.png](https://img-blog.csdnimg.cn/img_convert/5827603506322abc1a6e4552166983ae.png#clientId=u5490f16f-dd42-4&from=paste&height=159&id=u2d6a82c8&margin=[object Object]&name=image.png&originHeight=167&originWidth=474&originalType=binary&ratio=1&size=19090&status=done&style=none&taskId=udc176952-10b6-403a-bbed-70539ee66f7&width=452) 最后,请利用所学的实践一波吧![image.png](https://img-blog.csdnimg.cn/img_convert/1d40a90d419fd0e62e21e346fb394607.png#clientId=u5490f16f-dd42-4&from=paste&height=658&id=u9a5c4a8c&margin=[object Object]&name=image.png&originHeight=1316&originWidth=2560&originalType=binary&ratio=1&size=986922&status=done&style=stroke&taskId=u03e825ff-a089-4bbb-8c73-bb7ff044320&width=1280) |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 3:39:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |