爬虫概念以及requests的介绍

爬虫概念以及requests的介绍,第1张

网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

爬虫的用途:爬取的数据可以用作机器学习的数据集;竞争对手监控;舆情监控等。

爬虫可分为3个部分,分别为数据爬取(requests、urllib、pycurl),数据解析,数据存储。

requests库特点:简单、简洁,是python的第三方库,也是网络爬虫常用的库。

requests库安装方法:pip install requests

requestsget(url,params=None,kwargs)构造一个向服务器请求资源的Request对象,返回一个包含服务器资源的Response对象。

url:获取页面的url链接

params:url中的额外参数,字典或字节流格式,可选

kwargs:2个控制访问的参数

Response对象的属性:

Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 >

这里以python为例,简单介绍一下如何通过python网络爬虫获取网站数据,主要分为静态网页数据的爬取和动态网页数据的爬取,实验环境win10+python36+pycharm50,主要内容如下:

静态网页数据

这里的数据都嵌套在网页源码中,所以直接requests网页源码进行解析就行,下面我简单介绍一下,这里以爬取糗事百科上的数据为例:

1首先,打开原网页,如下,这里假设要爬取的字段包括昵称、内容、好笑数和评论数:

接着查看网页源码,如下,可以看的出来,所有的数据都嵌套在网页中:

2然后针对以上网页结构,我们就可以直接编写爬虫代码,解析网页并提取出我们需要的数据了,测试代码如下,非常简单,主要用到requests+BeautifulSoup组合,其中requests用于获取网页源码,BeautifulSoup用于解析网页提取数据:

点击运行这个程序,效果如下,已经成功爬取了到我们需要的数据:

动态网页数据

这里的数据都没有在网页源码中(所以直接请求页面是获取不到任何数据的),大部分情况下都是存储在一个json文件中,只有在网页更新的时候,才会加载数据,下面我简单介绍一下这种方式,这里以爬取人人贷上面的数据为例:

1首先,打开原网页,如下,这里假设要爬取的数据包括年利率,借款标题,期限,金额和进度:

接着按F12调出开发者工具,依次点击“Network”->“XHR”,F5刷新页面,就可以找打动态加载的json文件,如下,也就是我们需要爬取的数据:

2然后就是根据这个json文件编写对应代码解析出我们需要的字段信息,测试代码如下,也非常简单,主要用到requests+json组合,其中requests用于请求json文件,json用于解析json文件提取数据:

点击运行这个程序,效果如下,已经成功爬取到我们需要的数据:

至此,我们就完成了利用python网络爬虫来获取网站数据。总的来说,整个过程非常简单,python内置了许多网络爬虫包和框架(scrapy等),可以快速获取网站数据,非常适合初学者学习和掌握,只要你有一定的爬虫基础,熟悉一下上面的流程和代码,很快就能掌握的,当然,你也可以使用现成的爬虫软件,像八爪鱼、后羿等也都可以,网上也有相关教程和资料,非常丰富,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。

  import requests

  base_url = '>

这里我们调用get()方法,得到一个 Response,然后分别输出了Respouse的类型,状态码、响应体的类型、内容以及Cookies。

通过运行结果发现,它的返回类型是requestsmodelsResponse响应体的类型是字符串str,Cookies的类型是RequestsCookiejar。

除了get()方法外还有其他方法:

这里我们首先新建一个RequestsCookieJar对象,然后将复制下来的cookies利用split()方法分割,

接着利用set()方法设置好每个cookie的key和value,然后通过调用request的get()方法并传递

给cookies参数即可,由于知乎本身的限制,headers参数也不能少。

测试后,发现同样可以正常登陆知乎。'''

利用Session,可以做到模拟同一个会话而不用担心Cookies的问题。它通常用于模拟登陆成功之后在进行下一步的 *** 作。

设想这样一个场景,第一个请求利用Post()方法登陆了某个网站,第二次想获取成功登陆后的个人信息,你又用了一次get()方法

去请求个人信息页面。实际上,这相当于打开了两个浏览器,是两个完全不相关的会话,能成功获取个人信息吗?当然是不能。

对于某些网站,在测试的时候请求几次,能正常获取内容。但是一旦开始大规模爬取,对于大规模且频繁的请求,

网站可能会d出验证码,或者跳转到登陆验证页面,更甚者可能会直接封禁IP,这时候需要设置代理来解决这个问题了。

当然,直接运行这个实例可能不行,因为这些代理都是无效的,请换成自己的有效代理实验。

更多详细功能可以参考: >

requests 继承了urllib2的所有特性,比urllib简洁高效

requests所有功能都能通过"requests/apipy"中的方法访问

1、安装:

pip install requests

2、get请求:

封装链接中的参数,请求时用params参数进行传递

url = " >

爬虫没有 ip 池的话单线程都唯恐其过快,你 ip 池都没有就开多线程,这不好吧!别搞得自己的 ip 被封到时候连访问这个网页都有困难就麻烦了。你上面代码有加锁吗?大概得用 queue 吧。

以上就是关于爬虫概念以及requests的介绍全部的内容,包括:爬虫概念以及requests的介绍、Python3中的requests模块怎样用、如何通过网络爬虫获取网站数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9764137.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存