Python爬虫入门第一课:如何解析网页

前言
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 。
以下文章来源于肥宅与画家, 作者AntzUhl
Python爬虫入门第一课:如何解析网页文章插图
我们编写网络爬虫最主要的目的是爬取想要的数据 , 通过爬虫去自动完成我们想在网站中做的一些事情 。
从今天开始我会从基础开始讲解如何通过网络爬虫去完成你想要做的事 。 先来看一段简单的代码 。
首先是import requests来导入网络请求相关的包 , 然后定义一个字符串url也就是目标网页 , 之后我们就要用导入的requests包来请求这个网页的内容 。
这里用了requests.get(url) , 这个get并不是拿取的那个get , 而是一种关于网络请求的方法 。 网络请求的方法有很多 , 最常见的有get , post , 其它如put , delete你几乎不会见到 。 requests.get(url)就是向url这个网页发送get请求(request) , 然后会返回一个结果 , 也就是这次请求的响应信息 。
响应信息中分为响应头和响应内容 。
响应头就是你这次访问是不是成功了 , 返回给你的是什么类型的数据 , 还有很多一些 。
【Python爬虫入门第一课:如何解析网页】响应内容中就是你获得的网页源码了 。
Python爬虫入门第一课:如何解析网页文章插图
好了 , 这样你就算是入门Python爬虫了 , 但是还是有很多问题 。
1. get和post请求有什么区别?
2. 为什么有些网页我爬取到了 , 里面却没有我想要的数据?
3. 为什么有些网站我爬下来的内容和我真实看到的网站内容不一样?
get和post的区别主要在于参数的位置 , 比如说有一个需要登录用户的网站 , 当我们点击登录之后 , 账号密码应该放在哪里 。
get请求最直观的体现就是请求的参数就放在了URL中 。
比如说你百度Python这个关键字 , 就可以发现它的URL如下:
wd=Python --tt-darkmode-color: #ED9D00;">dw=Python就是参数之一了 , get请求的参数用?开始 , 用 --tt-darkmode-color: #ED9D00;">登录 。 就像我们平常浏览网页 , 有些信息需要登录才能访问 , 爬虫也是如此 。 这就涉及到了一个很重要的概念 , 我们的平常观看网页是基于Http请求的 , 而Http是一种无状态的请求 。
什么是无状态?你可以理解为它不认人 , 也就是说你的请求到了对方服务器那里 , 对方服务器是不知道你到底是谁 。
既然如此 , 我们登录之后为什么还可以长时间继续访问这个网页呢?这是因为Http虽然是无状态的 , 但是对方服务器却给我们安排了身份证 , 也就是cookie 。 在我们第一次进入这个网页时 , 如果之前没有访问过 , 服务器就会给我们一个cookie , 之后我们在这个网页上的任何请求操作 , 都要把cookie放进去 。 这样服务器就可以根据cookie来辨识我们是谁了 。
Python爬虫入门第一课:如何解析网页文章插图
比如知乎里面就可以找到相关的cookie 。
对于这类网站 , 我们直接从浏览器中拿到已有的cookie放进代码中使用 , requests.get(url,cookies="aidnwinfawinf") , 也可以让爬虫去模拟登录这个网站来拿到cookie 。