我也是初学者,我先试着回答这个问题
首先说下 urllib中的urllib.request.Request()与urllib.request.urlopen()区别
相对于urllib.request.urlopen()来说urllib.request.Request是进一步的包装请求
总的来说,如果我们在获取请求对象时,不需要过多的参数传递,我么可以直接选择urllib.request.urlopen();如果需要进一步的包装请求,则需要用urllib.request.Request()进行包装处理。
回到requests,requests可以直接构造get,post请求并发起,而urllib.request只能先构造get,post请求,再发起。
例如:
import requests
user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Edge/12.10240'
headers = {'User_Agent': user_agent}
get_response = requests.get(url,headers = headers)
post_response = requests.post(url,headers = headers)
#使用urllib比较简单的get请求
import urllib.request
response = urllib.request.urlopen("https://www.baidu.com")
html.response.read()
#构造用.Request后再用urlopen,所以没有requests简洁易懂
user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36 Edge/12.10240'
headers = {'User_Agent': user_agent}
request = urllib.request.Request(urls, headers=headers)
response = urllib.request.urlopen(request)