爬取静态网页的数据相对比较简单,以往都是照着帖子粘一下代码能跑起来就OK了
后来发现 在import时候 有的用的是 request 有的是requests,虽然只是差了一个s
比较了一下这两个包
(1)request是python 自带的,使用 import urllib.request;而 requests需要pip install
(2)request 采用的是urlopen 然后read后进行decode获得网页内容,若需要加header之类的,需要增加request中的Request类来定义header;
而requests更加便捷,直接设置header 和数据格式即可
(3)返回的内容:request返回的一般是utf-8的字符串,requests可以定义返回的类型是json ,或者 byte等
(4)request是先构造get post 请求,再发起;而requests是构造get post 并行发起
下面是一个关于request 与 requests使用,及涉及中文解码的小例子
import urllib.request
import requests
#from urllib.parse import quote
"""
爬取静态网页 https://www.ccf.org.cn/Academic_Evaluation/AI/
比较request 和 requests不同使用
以及中文字符乱码的处理
"""
def fetch_data_byrequest(url):
#req = requests.get(url)
#html = req.text
#return html
req=urllib.request.urlopen(url)
content=req.read().decode()
return content
def fetch_data_byrequests(url):
req = requests.get(url)
content = req.text.encode(req.encoding).decode(req.apparent_encoding)
return content
if __name__=="__main__":
url = "https://www.ccf.org.cn/Academic_Evaluation/AI/"
content_req = fetch_data_byrequest(url)
#print (content_req)
content_reqs=fetch_data_byrequests(url)
#print (content_reqs)
# 输出到文件
f1 = open("request_content.txt","w",encoding="utf-8")
print(content_req,file=f1)
f1.close()
f2=open("requests_content.txt","w",encoding="utf-8")
print(content_reqs,file=f2)
f2.close()