【Python】基础爬虫
文章目录
常用库urllib
-
request
它是最基本的 HTTP 请求模块,可以用来模拟发送请求 就像在浏览器里输入网挝
然后回车 样,只需要给库方法传入 URL 及额外的 数,就可以模拟实现这个过程了。-
urlopen()
import urllib.request from urllib3 import HTTPResponse response = urllib.request.urlopen('https://www.python.org') # type: HTTPResponse
返回值类型是HTTPResponse。它自带了很多获取网页信息的方法。其中包括
常用的是read(),用来获取网页内容。status用来获取请求状态。import urllib.request from urllib3 import HTTPResponse response = urllib.request.urlopen('https://www.python.org') # type: HTTPResponse print(response.read().decode ('utf-8'))
urlopen的API如下:
urllib.request.urlopen(url, data=None, [ timeout, ]*, cafile=None, capath=None, cadefault=False, context=None )
其中url是必填项,其他都是可选参数
-
data
如果要添加该参数,并且如果它是字节流编码格式的内容,即 bytes 类型,
则需要通过 bytes ()方法转化 另外,如果传递了这个参数,则它的请求方式就不再是 GET 方式,而是POST方式。import urllib.request import urllib.parse from urllib3 import HTTPResponse data= bytes(urllib.parse.urlencode({'word':'hello'}), encoding='utf8') response = urllib.request.urlopen('http://httpbin.org/post',data=data) # type: HTTPResponse print(response.read().decode ('utf-8'))
-
-
Request()
urlopen满足了基本抓取,但是如果抓取需要我们传headers参数请求的时候,就要Request这个更强大的功能模块来实现。import urllib.request import urllib.parse from urllib3 import HTTPResponse requset=urllib.request.Request('https://www.baidu.com/') response=urllib.request.urlopen(requset) #type: HTTPResponse print(bytes(response.read()).decode('utf8'))
-
-
error
异常处理模块,如果出现请求错误 可以捕获这些异常,然后进行重试或
作以保证程序不会意外终止。 -
parse
一个工具模块,提供了许多 URL 处理方法,比如拆分、解析 合并 -
robot parser
主要是用来识别网站的 robots.txt 文件,然后判断哪些网站可以爬,哪些网站
可以爬,它其实用得比较少