文章目录
- str使用encode 方法转化为bytes
- bytes 通过decode 转化为str
基础知识
http和https的概念
- HTTP:超文本传输协议,默认端口号:80
- HTTPS:HTTP+SSL(安全套接字层),默认端口号:443
- HTTPS比HTTP更安全,但是性能更低。
爬虫的流程
url的形式
具体形式
scheme://host[:port#]/path/.../[?query-string][#anchor]
scheme | 协议:比如http,https,ftp |
---|---|
host | 服务器的IP地址或者域名 |
port | 服务器的端口(如果走协议默认端口 80 or 443) |
path | 访问资源的路径 |
query-string | 参数,发送给http服务器的数据(就像查找的关键词) |
anchor | 锚(跳转到网页的指定锚点位置)是否有锚点跳转的网址一样 |
HTTP常见请求头:浏览器给服务器的请求
GET:浏览器要,而不是浏览器传,这一行也是必须要有
/:表示浏览器访问的是一个主页,HTTP/1.1:表示协议是1.1版本。
如果浏览器给服务器和服务器返回的协议版本不一样,就看服务器版本是否支持1.0版本了。
host:表示服务器请求的是哪一个服务器,哪一个端口.
connection:复用链接/长连接等:如果用keep-alive可以提高响应速度
Upgrade-Insecure-Requests:升级不安全请求,支持把所有不安全请求变为安全请求
Accpet:表示浏览器可以接收什么格式:文本/图片等,每个格式后面的q=0.8代表的是权重,更愿意接受什么样的格式。
User-Agent:不同浏览器的Agent不一样。通过这个可以模仿浏览器。如果是普通人,是返回常见浏览器,如果是机器人,那么不返回,就爬不下来,就是反爬虫。
将浏览器版本浏览器语言浏览器格式给服务器,那么服务器进行返回,展示出来页面。
cookie: 用来保存用户的个人信息,cookie是保存在服务器的。如果第一次到达网址,那么cookie为空,如果100次为空,那么服务器可能就认为是爬虫。通过这个解决反爬虫问题。
常见的请求方法
- GET:一般情况下使用这个请求
- POST
两个区别在于应用场景的区别。
响应状态码
响应状态码 | 含义 |
---|---|
200 | 成功 |
302 | 临时转移至新的url |
307 | 临时转移至新的url |
404 | not found |
500 | 服务器内部错误 |
爬虫的流程
网络爬虫:模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动的抓取互联网信息的程序。
只要是浏览器能做的事情,理论上爬虫都能做。
- 通用爬虫:针对搜索引擎的爬虫
- 搜索引擎的排序依旧什么来的呢?
依据点击次数和被引用次数。 - 通用搜索引擎的局限性:
- 通过搜索引擎所返回的网页里面90%都是无用的
- 图片音频视频多媒体的内容,搜索引擎无能为力
- 不同用户目的目的,但搜索目的相同
Robots协议:网络通过Robots告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。(道德层面的约束)
- 聚焦爬虫:针对某个特定网站进行爬虫
为什么需要提取url地址?
比如找到第一页,还需要找到第二页,如此不停的反复,知道没有下一个的时候。相当于就是一个点击的过程。
爬虫的更多用途:
- 12306抢票
- 网站上的投票
- 短信轰炸
浏览器发送请求的过程
爬虫要根据当前的url地址对应的响应为准,当前url地址的elements的内容和url的响应不一样。以url为准!!!
页面上的数据在哪里
- 当前url地址对应的响应中
- 其他的url地址对应的响应中:比如ajax请求中
- js生成的:部分在响应中,部分是js生成的。
requests 的使用
判断请求是否成功
assert response.status_code == 200
数据提取方法
动态网页数据提取
静态网页:htm、html、shtml、xml
静态网页是指存放在服务器文件系统中实实在在的HTML文件。当用户在浏览器中输入页面的URL,然后回车,浏览器就会将对应的html文件下载、渲染并呈现在窗口中。早期的网站通常都是由静态页面制作的。
动态网页:asp、jsp、php、perl、cgi
动态网页是相对于静态网页而言的。当浏览器请求服务器的某个页面时,服务器根据当前时间、环境参数、数据库操作等动态的生成HTML页面,然后在发送给浏览器(后面的处理就跟静态网页一样了)。很明显,动态网页中的“动态”是指服务器端页面的动态生成,相反,“静态”则指页面是实实在在的、独立的文件。