广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Requests爬虫
  • 671
分享到

Requests爬虫

爬虫Requests 2023-01-30 22:01:29 671人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

  之前写过一个urllib的爬虫方法,这个库是python内建的,从那篇文章也可以看到,使用起来很繁琐。现在更流行的一个爬虫库就是requests,他是基于urllib3封装的,也就是将之前比较繁琐的步骤封装到一块,更适合人来使用。

  之前写过一个urllib的爬虫方法,这个库是python内建的,从那篇文章也可以看到,使用起来很繁琐。现在更流行的一个爬虫库就是requests,他是基于urllib3封装的,也就是将之前比较繁琐的步骤封装到一块,更适合人来使用。

  该库中主要有7个方法:request() get() head() post() put() patch() delete()   他们的作用也就是他们的字面意思(例如:get获取网页信息,post提交信息等等),具体的可以自行查询。

  下面先从最简单的使用开始,尽可能的用例子展示他都可以干什么。

1 import requests
2 
3 r = requests.get("https://www.icourse163.org/home.htm?userId=1021614219#/home/course")  # get方法,从网页上获取信息
4 r.status_code  # Http请求的返回状态,为200时表示正常访问
5 
6 print(r.encoding)  # 从HTTPheader中猜测的响应内容编码方式
7 print(r.apparent_encoding)  # 从内容分析出响应内容编码方式(备选编码方式)

  上面使用get方法就已经得到了网页信息,返回值时200。r字母代表着response,也就是访问网页的响应。网页内的信息可能会有汉字等等,为了方便以后使用,在开始就先说明一下这个,encoding和apparent_encoding在上面解释了,最后是为了使用一个可以把网页正确解析的编码格式。

  一般来说,可以使用r.encoding = 'utf-8'或者r.encoding = r.apparent_encoding。

1 # 已经访问到了网页,那么就要看一下提取到的内容
2 
3 r.text  # http响应内容的字符串形式,url对应的页面内容
4 
5 r.headers  # 返回响应的头部信息
6 
7 r.content  # http响应内容的二进制形式
8 
9 r.JSON  # 返回json格式,需要提前导入json包

  其中二进制格式,可以方便的存储一些图片格式等等的数据,例如需要下载一个照片,可以使用‘wb’格式写到文件当中,当然也可以直接使用库中的方法。

  在我们爬取一些网页的时候,经常会遇到一系列的问题,访问不到页面,禁止访问之类的,或者一些自身代码的一些问题。如果代码量很多,或者具体一点,比如正在从网站爬取一些照片。当跑到其中一张图片时没有正常的访问到,那么整个程序就卡在这里了。后续的照片也就无法爬取了。这当然不是我们想要的,因此就需要一些对异常的处理,让他出现异常时,继续执行后续的程序。异常捕获在Python的基础里面已经有了,就是用那个在这里应用一下。

 1 import requests
 2 from requests.exceptions import ReadTimeout, ConnectionError, RequestException
 3 try:
 4     response = requests.get("http://httpbin.org/get", timeout = 0.5)
 5     print(response.status_code)
 6 except ReadTimeout:
 7     print('Timeout')
 8 except ConnectionError:
 9     print('Connection error')
10 except RequestException:
11     print('Error')

  如果是刚接触的人可能看到这么多长串的字符有些记不清,其实也可以先不去管他是什么样的异常,只要是异常就反馈回来。

  response.raise_for_status()   这个方法可以捕获异常,使得出现异常时就会跳到except中执行,而不影响整体进程。下面是一个通用的格式来捕获异常。

 1 import requests
 2 
 3 def gethtmlText(url):
 4     try:
 5         r = requests.get(url)
 6         r.raise_for_status()  # 如果状态不是200,引发HTTPError异常
 7         r.encoding = r.apparent_encoding  # 不论headers中是否要求编码格式,都从内容中找到实际编码格式,确保顺利解码
 8         return r.text
 9     except:
10         return '产生异常'
11 if __name__ == "__main__":
12     url = "http://baidu.com"
13     print(getHtmlText(url))

  爬取京东上面商品的页面。理一下思路:

  首先要导入网络请求的包(requests)-->通过get方法访问网页-->捕获一下异常看看是否正常访问到页面-->如果返回200,确定编码格式-->通过response.text查看一下得到的内容是不是想要的。

1 import requests
2 url = "https://item.jd.com/8578888.html"
3 try:
4     r = requests.get(url)
5     r.raise_for_status()
6     r.encoding = r.apparent_encoding
7     print(r.text[:500])  # 由于网页内容比较多,[:500] 表示只看其从0到500个字节的内容
8 except:
9     print("爬取失败")

  上面访问的网站并没有什么防护,但是现在越来越多的网站都是有各种各样的反爬虫机制,其中一种简单的方法就是通过发送请求时头文件中的内容来判断。通过response.headers可以找到访问时候的User-Agent为requests,也就是告诉网站是通过爬虫来访问的。这么明显,当然有些网站会阻止访问。这时候有一个办法,就是用一个浏览器来模拟一下,替换掉User-Agent中的内容。网上搜会有很多,或者直接从你电脑上的浏览器中检查,来查看你的浏览器在访问网页时显示的User-Agent是什么样的。

  通过headers,传入一个字典,例如:{"User-Agent": "Mozilla/5.0 (windows NT 6.1; WOW64) AppleWEBKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60"}

  其实,如果还不放心的话,可以搜一些User-Agent,每次通过随机抽取其中的一个来访问网页,来避免被网站发现。

  下面套用上面给出的框架来写这个爬虫:

 1 # 模拟浏览器爬取信息
 2 import requests
 3 url = "https://www.amazon.cn/dp/B074BNFY1H/ref=cngwdyfloorv2_recs_0?pf_rd_p=d0690322-dfc8-4e93-ac2c-8e2eeacbc49e&pf_rd_s=desktop-2&pf_rd_t=36701&pf_rd_i=desktop&pf_rd_m=A1AJ19PSB66TGU&pf_rd_r=2JDNVB7YD5ZF07YQSRQ6&pf_rd_r=2JDNVB7YD5ZF07YQSRQ6&pf_rd_p=d0690322-dfc8-4e93-ac2c-8e2eeacbc49e"
 4 try:
 5     headers = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60"}
 6     r = requests.get(url, headers = headers)
 7     print(r.request.headers) # 起初发现503错误,因为亚马逊会限制爬虫,当使用爬虫时,会在头部显示request代理。因此用一个新的user-agent代替原来的
 8     r.raise_for_status()
 9     r.encoding = r.apparent_encoding
10     print(r.text[:500])
11 except:
12     print("爬取失败")
1 # 当访问长时间未响应时就不再等待,因为毕竟爬虫时为了提高效率
2 import requests
3 from requests.exceptions import ReadTimeout
4 try:
5     response = requests.get("http://httpbin.org/get", timeout = 0.5)
6     response.raise_for_status()
7 except:
8     print('Timeout')
 1 # 在访问网站时有可能你没有遵守该robots协议,面临被封IP的风险,这样该IP就不能再访问了,大概过段时间才把你从黑名单中拿出来,这时候就用到了IP代理,这个大概介绍一下,因为本人也是初学,能力有限
 2 
 3 import requests
 4 
 5 proxies = {
 6   "http": "***************" 7 }
 8 
 9 response = requests.get("https://www.taobao.com", proxies=proxies)
10 print(response.status_code)

  这是浏览器缓存,就是我们在之前访问过该网站后,后留下一下脚印,例如之前请求到的一些信息,或者提交,比如需要登录的网站,短时间内再次进入时候不需要再次输入账户密码。因此http请求要从很远的服务器中拉取你要的信息,当然效率不会很高,所以,他就会在本地的浏览器中暂且保留一段时间的信息,这段时间内登录就是从本地来得到网页响应,也会相对快一些。

  在爬虫的时候,尤其是需要登录才能访问的页面,为了让他可以自动化的一直爬取信息,就可以预先找到登录后在该网页留下的脚印,来放到你的爬虫里,让其自动登录爬取。

1 import requests
2 
3 response = requests.get("https://www.baidu.com")
4 print(response.cookies)  # 可以直接调用方法得到当前访问页面时的cookie

  在需要登录的网页时,我们需要同时请求多个端口来实现,可以用到requests.session(),看一个例子体会一下。

1 import requests
2 
3 s = requests.Session()
4 s.get('http://httpbin.org/cookies/set*****')
5 response = s.get('http://httpbin.org/cookies')  # 在访问页面的同时打开之前的cookie请求。如果使用requests的get方法的话,你会发现,第一次请求之后,第二次的get是开启的一个新的请求,而不是针对同一个对象,因此不能实现
6 print(response.text)

  这点东西并没有讲清楚,待我再好好学一下再解释。

 

--结束END--

本文标题: Requests爬虫

本文链接: https://www.lsjlt.com/news/180063.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Requests爬虫
      之前写过一个urllib的爬虫方法,这个库是python内建的,从那篇文章也可以看到,使用起来很繁琐。现在更流行的一个爬虫库就是requests,他是基于urllib3封装的,也就是将之前比较繁琐的步骤封装到一块,更适合人来使用。 ...
    99+
    2023-01-30
    爬虫 Requests
  • Python3 爬虫 requests
    刚学Python爬虫不久,迫不及待的找了一个网站练手,新笔趣阁:一个小说网站。 安装Python以及必要的模块(requests,bs4),不了解requests和bs4的同学可以去官网看个大概之后再回来看教程 刚开始写爬虫的小白都有...
    99+
    2023-01-31
    爬虫 requests
  • python3爬虫-通过requests
    import requests from fake_useragent import UserAgent from lxml import etree from urllib.parse import urljoin import py...
    99+
    2023-01-31
    爬虫 requests
  • python: 爬虫利器requests
    requests并不是系统自带的模块,他是第三方库,需要安装才能使用 闲话少说,来,让我们上代码:简单的看一下效果: import requests requests = requests.session() headers = { ...
    99+
    2023-01-31
    爬虫 利器 python
  • Python爬虫之Requests库的基
    1 import requests 2 response = requests.get('http://www.baidu.com/') 3 print(type(response)) 4 print(response....
    99+
    2023-01-30
    爬虫 Python Requests
  • requests-html爬虫利器介绍
    爬虫用的最多的包无非就是requests, urllib,然后再利用pyquery或者bs4,xpath再去整理提取需要的目标数据。在requests-html里面只需要一步就可以完成而且可以直接进行js渲染.requests的作者Kenn...
    99+
    2023-01-30
    爬虫 利器 requests
  • Python爬虫Requests库如何使用
    本篇内容主要讲解“Python爬虫Requests库如何使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬虫Requests库如何使用”吧!1、安装 requests 库因为学习过...
    99+
    2023-07-06
  • python爬虫中requests库怎么用
    小编给大家分享一下python爬虫中requests库怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!python爬虫—requests库的用法request...
    99+
    2023-06-25
  • python爬虫之利用Selenium+Requests爬取拉勾网
    目录一、前言二、分析url三、获取所有城市和页数四、生成params参数五、获取数据六、总结一、前言 利用selenium+requests访问页面爬取拉勾网招聘信息 二、分析url...
    99+
    2022-11-12
  • Python爬虫Requests库的使用详情
    目录一、Requests库的7个主要的方法二、Response对象的属性三、爬取网页通用代码四、Resquests库的常见异常五、Robots协议展示六、案例展示一、Requests...
    99+
    2022-11-11
  • Python爬虫之requests库基本介绍
    目录一、说明二、基本用法:总结一、说明 requests是一个很实用的Python HTTP客户端库,爬虫和测试服务器响应数据时经常会用到,requests是Python语言的第三方...
    99+
    2022-11-13
  • 基础爬虫,谁学谁会,用requests、
    爬取豆瓣Top250电影的评分、海报、影评等数据!   本项目是爬虫中最基础的,最简单的一例; 后面会有利用爬虫框架来完成更高级、自动化的爬虫程序。   此项目过程是运用requests请求库来获取html,再用正则表达式来解析从中获取所...
    99+
    2023-01-30
    爬虫 谁会 基础
  • Python3爬虫利器:requests怎么安装
    这篇文章主要介绍了Python3爬虫利器:requests怎么安装,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有...
    99+
    2023-06-14
  • python爬虫之requests库的使用详解
    目录python爬虫—requests库的用法基本的get请求带参数的GET请求:解析json使用代理获取cookie会话维持证书验证设置超时异常捕获异常处理 总结 python爬虫...
    99+
    2022-11-12
  • Python爬虫urllib和requests的区别详解
    我们讲了requests的用法以及利用requests简单爬取、保存网页的方法,这节课我们主要讲urllib和requests的区别。 1、获取网页数据 第一步,引入模块。 两者引入...
    99+
    2022-11-12
  • Python网络爬虫requests库怎么使用
    1. 什么是网络爬虫简单来说,就是构建一个程序,以自动化的方式从网络上下载、解析和组织数据。就像我们浏览网页的时候,对于我们感兴趣的内容我们会复制粘贴到自己的笔记本中,方便下次阅读浏览——网络爬虫帮我...
    99+
    2023-05-15
    Python Requests
  • Python网络爬虫requests库如何使用
    这篇文章主要讲解了“Python网络爬虫requests库如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python网络爬虫requests库如何使用”吧!1. 什么是网络爬虫简单来...
    99+
    2023-07-06
  • 关于Python网络爬虫requests库的介绍
    1. 什么是网络爬虫 简单来说,就是构建一个程序,以自动化的方式从网络上下载、解析和组织数据。 就像我们浏览网页的时候,对于我们感兴趣的内容我们会复制粘贴到自己的笔记本中,方便下次阅...
    99+
    2023-05-18
    Python网络爬虫 Python requests库
  • 网络爬虫——pip方式安装Requests模块
    使用pip安装Requests模块步骤 一、前提是在安装完成PyCharm、Python等后完成,先进入到Python的安装目录下,找到Scripts的目标文件夹,复制文件路径,比如C:\Progra...
    99+
    2023-09-01
    爬虫 pip python
  • python爬虫之requests库使用代理方式
    目录安装上requests库GET方法谷歌浏览器的开发者工具POST方法使用代理在看这篇文章之前,需要大家掌握的知识技能: python基础html基础http状态码 让我们看看这篇...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作