ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

requests--爬取网页内容

requests--爬取网页内容 requests简介相比urllib和urllib3更好的方案是使用requests。它是一个Python第三方库处理URL资源特别方便。Keep-Alive 连接池国际化域名和 URL带持久 Cookie 的会话浏览器式的 SSL 认证自动内容解码基本/摘要式的身份认证优雅的 key/value Cookie自动解压Unicode 响应体HTTP(S) 代理支持文件分块上传流下载连接超时分块请求支持 .netrcrequests库常用模块模块名称描述requests.Request表示请求对象用于准备一个请求发送到服务器。requests.Response表示响应对象其中包含服务器对HTTP请求的响应。requests.Session表示请求会话提供Cookie持久性、连接池和配置。Request类的对象表示一个请求它的生命周期针对一个客户端请求一旦请求发送完毕该请求包含的内容就会被释放掉。Session类的对象可以跨越多个页面它的生命周期同样针对的是一个客户端。requests库初体验urllib发送get请求# 导入请求和解析模块 import urllib.request import urllib.parse # 请求的URL路径和查询参数 url http://www.baidu.com/s word {wd:Python网络爬虫} # 转换成url编码格式字符串 word urllib.parse.urlencode(word) # 拼接完整的URL路径 new_url url ? word # 请求报头 headers { User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36} # 根据URL和headers构建请求 request urllib.request.Request(new_url, headers headers) # 发送请求并接收服务器返回的文件对象 response urllib.request.urlopen(request) # 使用read方法读取获取到的网页内容使用UTF-8格式进行解码 html response.read().decode(UTF-8) print(html)requests发送get请求# 导入requests库 import requests # 请求的URL路径和查询参数 url http://www.baidu.com/s param {wd: Python网络爬虫} # 请求报头 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 } # 发送GET请求返回一个响应对象 response requests.get(url, paramsparam, headersheaders) # 查看响应的内容 print(response.text)便捷之处无须再转换为URL路径编码格式拼接完整的URL路径。无须再频繁地为中文转换编码格式。从发送请求的函数名称可以很直观地判断发送到服务器的方式。发送HTTP请求的函数函数功能说明requests.request()构造一个请求支撑以下各方法的基础方法requests.get()获取HTML网页的主要方法对应于HTTP的GET请求方式requests.head()获取HTML网页头信息的方法对应于HTTP的HEAD请求方式requests.post()向HTML网页提交POST请求的方法对应于HTTP的POST请求方式requests.put()向HTML网页提交PUT请求的方法对应于HTTP的PUT请求方式requests.patch()向HTML网页提交局部修改请求对应于HTTP的PATCH请求方式requests.delete()向HTML网页提交删除请求对应于HTTP的DELETE请求方式这些函数都会做两件事情1、构建一个Request类的对象该对象将被发送到某个服务器上请求或者查询一些资源2、一旦得到服务器返回的响应就产生一个Response对象该对象包含了服务器返回的所有信息也包括原来创建的Request对象。requests的response响应Response类用于动态地响应客户端的请求控制发送给用户的信息并且将动态地生成响应包括状态码、网页的内容等。属性说明status_codeHTTP请求的返回状态200表示连接成功404表示失败textHTTP响应内容的字符串形式即URL对应的页面内容encoding从HTTP请求头中猜测的响应内容编码方式apparent_encoding从内容中分析出的响应编码的方式备选编码方式contentHTTP响应内容的二进制形式当请求发出之后Requests库可以找出它使用了什么编码并且可以设置encoding 属性进行改变。 response.encoding utf-8 response.encoding ISO-8859-1再次调用text属性获取返回的文本内容时将会使用上述设置的新的编码方式。案例--搜索豆瓣电影# 导入requests库 import requests # 请求的URL路径和查询参数 #https://search.douban.com/movie/subject_search?search_textpythoncat1002start30 page 3 url https://search.douban.com/movie/subject_search param {search_text: Python,start:15*(page-1),cat:1002} # 请求报头 headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36 } # 发送GET请求返回一个响应对象 response requests.get(url, paramsparam, headersheaders) # 查看响应的内容 print(response.text) with open(douban.html, w, encodingutf-8) as f: f.write(response.text)
返回列表