爬虫发送请求返回结果问题?
import urllib.requestimport requests
url = 'http://www.baidu.com'
# 模拟浏览器向服务器发送请求
r1 = urllib.request.urlopen(url)
r2 = requests.get(url=url)
print(type(r1))
print(type(r2))
#服务器返回的这两个类型有什么区别?用BeautifulSoup和lxml解析时有什么区别?
#输出结果是:
<class 'http.client.HTTPResponse'>
<class 'requests.models.Response'>
这两个类型的区别在于 urllib.request.urlopen 返回的是 http.client.HTTPResponse 对象,而 requests.get 返回的是 requests.models.Response 对象。
http.client.HTTPResponse 是Python标准库中处理HTTP响应的类,它提供了一些方法来获取响应的状态码、头部信息和响应体等。而 requests.models.Response 是Requests库中封装的响应对象,它也提供了类似的方法来获取响应信息。
在使用BeautifulSoup和lxml解析时,两者的区别并不大。你可以使用 r1.read() 来获取 http.client.HTTPResponse 对象的响应内容,然后将其传递给BeautifulSoup或者lxml进行解析。对于 requests.models.Response 对象,你可以直接使用 r2.text 或者 r2.content 来获取响应内容,然后同样传递给解析器进行解析。
总的来说, requests 库更加方便和易用,因此在实际开发中推荐使用 requests 库进行HTTP请求的发送和处理。
页:
[1]