ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

爬虫入门(三):使用requests爬取搜狗搜索页面

2021-11-27 12:02:59  阅读:216  来源: 互联网

标签:搜狗 请求 get resp 爬取 headers query requests


哈喽,大家好,我是小爬虫,上一节我们讲了Python基础语法的学习,不知道大家有没有学废呢。今天我们要学一个非常有用的网络请求的库,这个库在我们以后的爬虫中几乎是都会用到,这个库就是:requests

requests简介

在介绍requests之前,我们先简单讲一讲urilib。其实urilib是Python内置的网络请求框架,我们使用urilib来进行网络请求非常简单,只需要一句

resp = urlopen("http://www.baidu.com")

而requests 是⽤Python语⾔编写,基于urllib,采⽤Apache2 Licensed开源协议的 HTTP 库,其用法和urilib类似。

那么问题来了,既然Python已经内置了urllib,为什么还要使用requests呢?原因很简单,因为requests比urllib更为便捷,requests可以直接构造get,post请求并发起,而urllib.request只能先构造get,post请求,再发起。而且requests可以将返回内容自动转换成你想要的数据格式,比如你想要提取文本就用text,但是如果你想要提取图片、文件等二进制文件,就要用content,如果想要json也可以转换成json格式。

requests使用

requests使用很简单,首先安装requests

pip install requests

导入requests就可以使用了

import requests

使用requests发送一个get请求

resp = requests.get("http://www.baidu.com")

使用requests发送一个post请求

data = {'name': 'Tom', 'age': '24'}
resp = requests.post("http://httpbin.org/post", data=data)

获取response中的文本

text = resp.text

获取response中的二进制数据

content = resp.content

获取response中的json

json_data = resp.json()

添加请求头

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
resp = requests.get(url, headers=headers)

怎么样,requests的使用是不是超级简单。那么接下来我们使用requests来实现我们的第一个案例。

爬取搜狗搜索页面

我们的需求是这样的,输入你想搜索的内容,输出搜狗搜索返回的网页源代码。我们首先找到搜狗搜索的网址,我们先在搜狗搜索页面随便搜一下,就能找到其地址:

在这里插入图片描述

那么这里的地址就是下面这样的,其中xxx就是我们要搜索的内容:

https://www.sogou.com/web?query=xxx

接下来我们要先输入我们想要搜索的内容,可以使用input来实现

query = input("请输入你想查询的内容:")

拿到query之后,拼接到上面链接中的xxx处,就是我们要请求的url

url = f"https://www.sogou.com/web?query={query}"

然后就是用requests去get请求了

resp = requests.get(url)

我们输入搜索的内容然后运行之后发现了这样的一个错误
在这里插入图片描述

这是为什么呢?其实这是因为搜狗网站监测到我们使用的是自动化程序去访问的这个网站,不是使用浏览器去访问的,所以直接给我们抛出这个错误了。要解决这个错误也很简单,那就是我们只需要将我们的程序伪装成浏览器去访问就好了。那么怎么伪装呢,其实就是上面讲到的给请求头添加一个User-Agent

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
resp = requests.get(url, headers=headers)

那么这个User-Agent的内容从哪里来的呢,我们可以打开我们刚刚搜索的周杰伦的页面,鼠标右键然后点击检查
在这里插入图片描述

这里我们会进入Chrome浏览器的调试界面,然后刷新网页,进入Network这个tab,这里面就是我们刷新这个页面之后所做的网络请求都罗列在这里,我们随便进入一个请求,找到Headers下面的Request Headers下面的User-Agent,这个就是我们当前浏览器的User-Agent
在这里插入图片描述

设置User-Agent之后再次运行程序,就可以正常请求到内容了。那么我们的第一个简单的爬虫就写完了,接下来把源码贴出来供大家参考

import requests

query = input("请输入你想查询的内容:")
url = f"https://www.sogou.com/web?query={query}"

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36"
}
resp = requests.get(url, headers=headers)
print(resp.text)

以上就是我们写的第一个爬虫程序,怎么样,是不是非常有趣,接下来我们还会有更有趣的内容,敬请期待。记得关注小爬哦~

本文首发于公众号:小爬虫,欢迎关注
在这里插入图片描述

标签:搜狗,请求,get,resp,爬取,headers,query,requests
来源: https://blog.csdn.net/weixin_36045176/article/details/121574575

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有