从零开始爬虫学习

HTTP请求与响应

http几个字从小见到大,但事实上相当长一段时间不知道这几个字母代表什么,后面得知这个叫超文本传输协议,具体怎么运作的不懂,大概就是用户用浏览器输入相应的网址后(请求),服务器会反馈给你网址里的内容(响应),返回来的东西是网站源码,即html,再靠一些翻译的工作把html变成各种网站美丽的样子。现在ctrl+u出来的即是你当前网站的html源码。

访问网址的方式一般有两种,即get和post,前者是获得数据,后者是创建数据,简单理解为在csdn看文章和在csdn创了个号。由于爬虫几乎是为了获取数据,所以一般用get。当然获取数据还有其他方法,根据需要自行改变。

完整的http请求有以下要素:

请求行:

get(请求方式)  /xx/xx(请求路径)?xx&xx(?+查询参数,如第几页评论,&分割)  HTTP/1.1(协议版本)

请求头:

Host:http://www.xx.com(完整的url)

User-agent:xx{表面用户是用浏览器或者命令行访问的,如:

curl/7.77.0

python-requests/2.25.1

Mozilla/5.0(Macintosh; Intel Mac OS X10_15_7)AppleWebKit/537.36(KHTML,like Gecko)Chome/108.0.0.0 Safari/53736}

Accept:x(表面用户接受什么类型的数据,常见的有:

all:*/*、HTML:text/html、json:application/json、如果两个都需要那么用“,"分隔

请求体:

{username:xx

e-mail:xx}

post有请求体,get一般空的

完整的http响应有以下要素:

状态行:

HTTP/1.1 200 OK (协议版本,状态码,状态信息)

响应头:

Date:xx(响应日期)

Content-type:text/html;charest=utf-8(返回数据类型,编码格式)

主体信息:

<!DOCTYPE html>

     <主题>

</html>

关于各种状态码:https://developer.mozilla.org/zh-CN/docs/Web

一个简单的爬虫小程序

在python终端输入:

pip install requests
import requests
a=requests.get('https://www.douban.com/')
print(a)

会得到

<Response [418]>

Process finished with exit code 0

根据上面的网址一查,418表示豆瓣不想冲咖啡因为他是一个茶壶(真冷)

这与请求码中的user-agent有关,由于你正在用命令行访问,有些服务器就为了防爬,拒绝给你访问,那么如何绕过这个防线呢?很简单,即将你伪装成用浏览器访问的样子

如何查看浏览器的user-agent?

右键任意网页——检查——network——不要关刷新一下——点开任意一个响应的元素——找到你的user-agent

在python中输入:

import requests
headers={
    'User-Agent': '你的user-agent'
}
a=requests.get('https://www.douban.com/',headers=headers)
print(a)

这样就可以得到200的正常访问了,把print(a)改成print(a.text)即能获得源码

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值