前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫学习(2):request库使用

爬虫学习(2):request库使用

作者头像
川川菜鸟
发布2021-10-18 14:06:08
5470
发布2021-10-18 14:06:08
举报
文章被收录于专栏:python全栈教程专栏

hh先强力推荐下python推出的kite神器,安装好后,写代码都有提示,超级帮,解决忘记完整代码

在这里插入图片描述
在这里插入图片描述

步入正题: request,老规矩,不讲原理,讲方法,不喜欢废话 还是以爬取CSDN为例子

代码语言:javascript
复制
import urllib.request
request = urllib.request.Request("https://www.csdn.net/?spm=1011.2124.3001.5359")
response=urllib.request.urlopen(request)
print(response.read().decode('utf-8'))

第一步导入库吧 第二步request来加入了Request类响应网址 第三步urlopen打开request 最后一步就是打印,加上一个编码方式utf-8 其实这就是request一个最基本完整的构建

在这里插入图片描述
在这里插入图片描述

我主要要讲到request库下的Request类使用,没有它真没法继续爬虫了

代码语言:javascript
复制
from urllib import request,parse
url='https://www.csdn.net/?spm=1011.2124.3001.5359'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
dict={'name':'chuan'}
data=bytes(parse.urlencode(dict),encoding='utf-8')
req=request.Request(url=url,data=data,headers=headers,method='POST')
response=request.urlopen(req)
print(response.read().decode('utf-8'))

这样爬取是个模式吧,不过很明显我被反爬了

在这里插入图片描述
在这里插入图片描述

HTTP Error 403: Forbidden这个报错就是服务器禁止访问 这不影响,继续讲:因为我们要用到header请求头,所以要用到Request类 算了,换一个网址爬,代码没变,换了个网址

代码语言:javascript
复制
from urllib import request
url='https://zhuanlan.zhihu.com/p/146913886'
headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36'}
req=request.Request(url=url,headers=headers,method='POST')
response=request.urlopen(req)
print(response.read().decode('utf-8'))

反正就是简单的爬取了网页源码下来了

在这里插入图片描述
在这里插入图片描述

一步步讲: (1)url='https://zhuanlan.zhihu.com/p/146913886’第二行代码呢,就是简单的放个网址

(2)headers={‘User-Agent’:‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36’}这一行代码呢,就是放请求头

(3)req=request.Request(url=url,headers=headers,method=‘POST’)这一行代码呢,我就理解为是用来对应下需要请求的什么,要用到哪个请求头来对应,method就是请求方式为POST

(4)response=request.urlopen(req)这一行代码呢,就是来请求打开这个网页,网页时url已经传参传到req里面了,headers是同样道理

(5)最后就是打印:print(response.read().decode(‘utf-8’)),为了防止乱码,就用了个decode为utf-8

ok,你们去试试别的网页爬取呗,这是简单的爬取网页源码,别急,先熟悉下这个架构,后面再慢慢讲

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/01/25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档