java爬虫抓取动态网页(Python学习网页请求原理和技术方面的详细流程和方法 )
优采云 发布时间: 2022-02-17 13:21java爬虫抓取动态网页(Python学习网页请求原理和技术方面的详细流程和方法
)
1、首先!你需要对爬虫有一个清晰的认识:
爬行动物的重要想法
1)理论上来说,只要网页上能看到的数据都能被爬取,而且网上的内容是人写的,第一页不是a,下一页是5,肯定有规律可寻,让人有爬行的可能。
(因为看到的网页上的所有数据都是由服务器发送到我们的电脑的,但有些数据是加密的,难以解密)
2)“框架不变”:网站不同,但原理相似。大部分爬虫都是从发送请求——获取页面——解析页面——下载内容——存储内容的过程开始做的,只是工具不同而已。
3)网页上看不到或者获取的数据也是爬虫无法获取的,比如一些付费数据。
4)分析页面数据的原则是由简单到复杂,由易到难。
现实中,爬虫面临很多问题,比如:
类似的问题还有很多。爬虫虽然简单,但学无止境(如搜索引擎等)。
2、缺乏合理的学习路径,学完Python和HTML极易放弃
零基础学习Python爬虫路线
1)主要是学习Python的基础知识,从而能够掌握Python。
Python 很容易学习,但很难掌握。技术方面,首先基础知识要扎实,包括语言基础、计算机基础、算法和自己方向的编程。
2)了解爬虫的实现原理和技术,包括爬虫的实现原理、爬取网页的详细过程、通用爬虫中网页的分类、通用爬虫相关网站文件、反爬虫响应策略、Python爬虫的优势等。
在这个阶段,你需要了解爬虫是如何爬取网页的,并对爬取过程中出现的一些问题有一定的了解。
3)学习网页请求的原理,包括浏览网页的过程,HTTP网络请求的原理,HTTP抓包工具Fiddler。
浏览网页的过程:
在浏览网页的过程中,我们会看到一些图片和百度搜索框。这个过程其实就是用户输入URL后,经过DNS服务器,找到服务器主机,向服务器发送请求。服务器解析后,发送到用户的浏览器浏览器可以解析HTML、JS、CSS等文件,可以看到各种图片。
4)用作爬取web数据的两个库:urllib和requests。
学习 urllib 库的基本使用,包括使用 urllib 传输数据,添加具体的 headers,设置代理服务器,超时设置,常见的网络异常,然后学习一个更方便快捷的 requests 库。
最好结合一个简单的案例来学习如何使用 urllib 库来抓取网页数据。在这个阶段,熟练掌握这两个库的使用很重要。反复使用和练习非常重要。
5)主要是学习几种网页解析数据,包括正则表达式、XPath、Beautiful Soup和JSONPath,以及封装这些技术的Python模块或库的基本使用,包括re模块、lxml库, bs4 库, json 模块等。
大家可以结合大厂社招网站的案例来学习如何分别使用re模块、lxml库和bs4库来解析网页数据,知道什么情况下使用哪个库更有优势。
6)学习并发下载;包括多线程爬虫进程分析,使用queue模块实现多线程爬取,协程实现并发爬取。
本阶段实操推荐尴尬百科,使用单线程、多线程、协程获取网页数据,分析三者的表现。
7)练习如何抓取动态内容;动态网页介绍,selenium 和 PhantomJS 概述,selenium 和 PhantomJS 安装配置,selenium 和 PhantomJS 的基本使用。
模拟豆瓣网站登录是学习如何在项目中应用selenium和PhantomJS技术的一个很好的实践案例。
8)图像识别和文字处理的学习;包括下载安装Tesseract引擎、pytesseract和PIL库、处理标准格式文本、处理验证码等。
建议结合识别本地验证码图片的小程序学习如何使用pytesseract识别图片中的验证码。
9)数据库学习;包括数据存储介绍、MongoDB数据库介绍、使用PyMongo库存储到数据库等。
数据库的学习比较简单。逐步了解如何从 网站 获取、解析和存储电影信息。
10)爬虫框架Scrapy
Scrapy 自己的选择器、中间件、蜘蛛等会比较难理解。建议结合具体的例子,参考别人的代码来了解实现过程,以便更好的理解。
初步学习:包括常用爬虫框架介绍、Scrapy框架架构、操作流程、安装、基本操作等。
3、知识储备不足
没有任何计算机网络和编程,基本的爬虫什么都做不了。
4、有效掌握请求和解析方法
爬虫的本质是网络请求和数据处理。网络请求没什么好说的,直接用requests框架就行了。
请求和响应
请求:浏览器向URL所在的服务器发送消息。这个过程称为 HTTP 请求。
响应:服务器收到浏览器发送的消息后,可以根据浏览器发送的消息内容进行处理,然后将消息发送回浏览器。此过程称为 HTTP 响应。
浏览器收到服务器的Response信息后,会对信息进行相应的处理,然后显示出来。
要求
请求方式:主要有GET和POST两种,另外还有HEAD、PUT、DELETE、OPTIONS等。
请求 URL:URL 的全称是统一资源定位器。例如,网页文档、图片、视频等都可以由URL唯一确定。
请求头:收录请求过程中的头信息,如User-Agent、Host、Cookies等信息。
请求体:请求过程中携带的附加数据,如表单提交时的表单数据。
回复
响应状态:有多种响应状态,如200成功,301重定向,404页面未找到,502服务器错误。
响应头:如内容类型、内容长度、服务器信息、设置cookies等。
响应体:最重要的部分,包括请求资源的内容,如网页HTML、图片二进制数据等。
解析出来的内容可以是HTML,可以用正则表达式和网页解析库来解析。可能是Json,可以直接转换成Json对象解析,也可能是二进制数据,可以保存或者进一步处理。
有以下分析方法:
数据处理基本上就是截取网页的HTML字符。建议新手先学会使用正则表达式匹配自己要提取的内容,再使用库。对于新手来说,常规规则会有些困难。.
5、学会使用工具辅助
先了解这里,再到具体项目的时候再熟悉应用。
1)代码编辑器
IDE一般使用pycharm或者VSCode比较多,大家可以根据自己的习惯和喜好来使用,没有规定一定要使用。
2)F12 开发者工具
3)抓包工具
它是一个强大的 Web 调试工具,可以记录来自客户端和服务器的所有 HTTP 请求。作为代理网络服务器,它使用代理地址:127.0.0.1,端口:8888
火狐浏览器下的插件优于谷歌火狐自带的F12工具。
很不错的xpath测试工具,但是有几个坑:
xpath 检查器生成一个绝对路径。在遇到一些动态生成的图标(一般有列表翻页按钮等)时,绝对路径飘忽不定很可能会导致错误,所以建议在实际分析时作为参考。
请记住删除 xpath 框中的“x:”,如下所示。看来这是xpath早期版本的语法,目前与某些模块(如scrapy)不兼容,所以最好将其删除,以免出错。
在线正则表达式测试可用于更多练习,有助于分析。有很多现成的正则表达式可以使用,也可以参考。
6、具备应对反爬的能力
爬上去怎么能行!
常见的防爬虫措施:
应对反爬的手段有:
遇到反爬虫策略验证码怎么办?(不想直接折腾第四个)
处理反爬的部分,还是要自己动手尝试。实际爬取过程中遇到的问题肯定不会一样,多处理会有上手的体验。
先找一个简单的静态网站试试,先别急着爬动态网站,技巧还没到(动态网站爬比较复杂),比如一个简单小说网站:看好玩。
7、很多新手说:网上很多爬虫代码卡死运行,得不到想要的结果
可能有以下三个原因:
①很久以前,爬的网站已经不能访问了。
②网站结构发生变化,原代码提取逻辑不适用。
③应该知道,互联网技术正在飞速发展。之前很多网站使用HTTP协议,但存在潜在的安全隐患。如今,它们中的大多数使用HTTPS协议。
对于爬虫来说,需要在请求链接的基础上添加headers参数:Cookie、User-Agent... 视实际情况而定(User-Agent头域的内容收录用户的信息谁提出了请求;浏览时cookie是在服务器中注册的一个小数据体,可以记录与服务器相关的用户信息)。
8、编写爬虫的一般步骤
1)目的
2)分析
-> 分析页面加载过程
① 直接
② 动态加载
-> 阿贾克斯
-> Js生成:直接生成,jsonp方式
③ 工具
谷歌浏览器,f12 开发者工具
-> 分发要爬取的页面结构 - 提取信息
3)实现
-> 根据分析结果,代码实现
爬百度示例
爬虫示例,爬取百度页面
import requests #导入爬虫的库,不然调用不了爬虫的函数
response = requests.get(“http://www.baidu.com”) #生成一个response对象
response.encoding = response.apparent_encoding #设置编码格式
print(“状态码:”+ str( response.status_code ) ) #打印状态码
print(response.text)#输出爬取的信息
爬虫就到此为止了,看完后你应该试一试。
互联网时代,爬虫技术的加持无疑是工作学习的锦上添花
Python学习路线
爬虫
Linux基础
面向对象
项目实战
学好 Python 是赚钱的好方法,不管是工作还是副业,但要学好 Python,还是要有学习计划的。免费分享全套Python学习资料,帮助想学Python的人!
本完整版Python全套学习资料已上传至CSDN。需要的可以微信扫描下方CSDN官方认证二维码免费获取【保证100%免费】。