文件发布接收管理网站源码分享?免费文件收发管理系统

大家好,关于文件发布接收管理网站源码分享很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于免费文件收发管理系统的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

谈及到Python爬虫,必不可少的就是requests模块。前面内容中我们也讲到Python有丰富多彩的第三方模块,那么requests就是其中一个,requests模块是一个常用的访问网络的模块。使用requests可以模拟浏览器的请求,比起之前用到的urllib,requests模块的api更加便捷(requests的本质也是对urllib3进行了封装)

初识Requests

先来一段简单的代码,看下request的作用。

39;https://www.baidu.com/&输出响应状态码\nprint(&34;.format(response.status_code))\n34;字符编码:{0}&输出响应文本内容\nprint(&34;.format(response.text))

然后运行一下可以看见程序的结果:

状态码:200\n字符编码:ISO-8859-1\n响应文本:<!DOCTYPEhtml>\n<!–STATUSOK–><html><head><metahttp-equiv=content-typeontent=text/html;charset=utf-8><metahttp-equiv=X-UA-Compatiblecontent=IE=Edge><metacontent=alwaysname=referrer><linkrel=stylesheettype=text/csshref=https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/bdorz/baidu.min.css><title>????o|????????????°±??¥é??</title></head>\n…….

由于内容比较长,就先放一部分结果。我们可以看到请求响应状态是200,正确响应。

响应的内容就是百度网页的HTML源码,然后浏览器拿到接收到的源码后,将其展示到页面上。而当我们用Python爬虫浏览页面的时候,只能看到的是网站的源码,然后在其中获取我们需要的信息。

在上图上,我们可以发现,其实除了英文,还有一些乱码,乱码是由于编码格式造成的。一般情况下,网站都是使用兼容度高的UTF8编码格式,而当前的网页是使用的ISO-8859-1,我们可以把拿到的response设置下编码格式:

爬取百度首页的内容\nurl=&39;\nresponse=requests.get(url)\nresponse.encoding=&34;\n34;状态码:{0}&输出响应字符编码\nprint(&34;.format(response.encoding))\n34;响应文本:{0}&39;https://www.baidu.com/&post请求\nresponse=requests.post(url)\nput请求\nresponse=requests.put(url)

请求中传参数

通常情况下,我们使用requests获取一个网页的内容,都会携带一些参数,服务器会根据这些参数的不同做出不同的响应,爬虫中最常使用的就是分页参数。比如说,我们想查看某个页面中第5页的内容,我们一般可以把页码参数设置为5加在请求连接中。那么怎么添加请求参数呢?

如果是GET请求,最直接的方法可以手动构建,在链接后面添加参数。比如:

importrequests\nurl=&39;\nresponse=requests.get(url)

当然Requests允许你使用params关键字参数,以一个字符串字典来提供这些参数。拿上面的参数来说,代码如下:

importrequests\nurl=&39;\nparams={&39;:&39;,&39;:&39;}\nresponse=requests.get(url,params=params)\nprint(&34;.format(response.url))

而Requests最终的请求地址也是跟我们手动组装的链接是一样的,代码运行结果如下:

完整请求地址:https://www.baidu.com/?pageNum=5&pageSize=10

注意:字典里的值为None的键都不会被添加到URL中。

除了GET请求,还有常用的POST请求。我们都知道POST请求安全性会比GET高,请求体不会直接添加在明文的链接中。一般网页中表单数据的提交都是通过POST请求进行,所以我们也需要知道,requests怎么在POST请求中添加参数。

其实也可以跟GET请求一下,用一个字典来存放你需要提交的数据。同样用上面的例子,也可以这样做改成POST请求来处理:

importrequests\nurl=&39;\nparams={&39;:&39;,&39;:&39;}\nresponse=requests.post(url,data=params)\nprint(&34;.format(response.url))

注意:跟GET请求不同的是,POST请求的参数名为data而不是params,虽然他们可以都是字典。

在这种需要提交表单的链接中,很多的还会采用Json来传输数据,Json是一种轻量级的数据交换格式。而且在前后端分离的系统中,多数也是用Json作为数据交换方式。Requests也是支持json数据作为参数提交请求,如下所示:

importrequests\n39;https://www.baidu.com&39;pageNum&39;5&39;pageSize&39;10&需要导入json模块\nimportjson\nurl=&39;\ndata={“pageNum”:“5”,“pageSize”:“10”}\nresponse=requests.post(url,json=data)

上面我们手动创建的对象跟上之前的json.dumps(data)得到的结果是一样的,感兴趣的读者可以试一下。在数据获取中,多数情况我们获取得到的是Json对象,需要将其转换成Python对象来使用。

优化请求头

在前面提到一个用来告诉服务器访问者身份的参数——User-Agent,这就是Request请求头中的一个参数。在上面所有的例子,我们并没有设置一个请求头,也没有User-Agent也是可以正常访问的。这是因为百度并没有对请求头做限制,如果在其他的网站中没有User-Agent,服务器会认为这些请求是机器人发送的,为了保护自身的服务器安全,减少服务器压力,会拒绝继续响应这些请求,并且返回一些非正常请求的提示。

我们换一个网站,请求一下豆瓣电影看看会得到什么结果。

39;https://movie.douban.com/&输出响应状态码\nprint(&34;.format(response.status_code))\n34;响应文本:{0}&爬取豆瓣电影首页的信息\nimportrequests\nurl=&39;\n39;user-agent&39;Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/87.0.4280.88Safari/537.36&添加headers参数\nresponse=requests.get(url,headers=headers)\n34;状态码:{0}&输出响应文本内容\nprint(&34;.format(response.text))

现在我们重新run一下,看下是否能得到我们想要的结果。

状态码:200\n响应文本:<!DOCTYPEhtml>\n<htmllang=&34;class=&34;>\n<head>\n<metahttp-equiv=&34;content=&34;>\n<metaname=&34;content=&34;>\n<metaname=&34;content=&34;>\n<metaname=&34;content=&34;/>\n<title>\n豆瓣电影\n</title>\n………

这样添加请求头user-agent,服务器认为这次请求不是非法请求,做出了正确回应,得到了我们想要的结果。除了user-agent,在RequestHeaders中还有一些比较重要的参数,比如说Cookie,Cookie是由服务器产生,发送给User-Agent,浏览器会将Cookie的key/value缓存起来,下次请求同一网站将会在RequestHeaders携带Cookie访问服务器,以此来保持回话。Cookie也是在爬虫编写中一个很重要的参数,后面遇到的时候会详细说明。

分析响应内容

在前面的操作中,我们已经遇见了两种状态码,200的状态码表示当前请求是正常响应的。不过这并不是判断是否得到我们想要的内容的判断标准,更主要的是看响应的内容。有时候还会需要响应头的一些内容,响应头怎么查看呢,直接使用response.headers既可以查看:

输出结果:\n{&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&34;108296&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;,&39;:&39;}

响应headers也是一个字典格式的数据,通过字典的访问即可获取值,比如:

39;X-Content-Type-Options&输出结果:\nnosniff

不过更多的内容还是需要在响应体中,就是上面response.text的内容。有时候不同网站的服务器可能会有很多的拦截验证,返回的内容可能并不是真正想要的内容,这时候我们跟浏览器中的页面内容比对一下,确认是不是获得了正确的响应。

比较简单的方法是,在浏览器中,右键页面,点击查看页面源代码,如果跟response.text的内容基本一样的话,说明我们的请求没问题的,接下来的工作就是解析获得到的内容,它的类型是str对象,内容就是HTML页面的代码。

在解析HTML之前,先简单的了解一下HTML的知识,这样会提高我们后面的数据采集和收集速度,下一节我们一起学习下HTML基本内容

关于文件发布接收管理网站源码分享和免费文件收发管理系统的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

Published by

风君子

独自遨游何稽首 揭天掀地慰生平