目标:
    1:掌握第三方库 urllib.requset 的方法及功能
    2:掌握第三方库 re 的方法及功能

    一:urllib.request库

    urlopen方法:response = urllib.request.urlopen(url)

    功能: 配合 response 的read()方法获取url服务器向客户端(pycharm)发送的源代码

    注意事项:

    1:其中 response 不是接收的 url 服务器源代码,而是一个http类,需要利用read()方法获取网页源代码

    2:response.read( )方法读取到的是网站源代码的二进制形式,需要用 decode(“字符集”)进行解码





    Request方法:

    1:利用Request方法先构建一个request对象,即 request = urllib.request.Request(url,data,headers
    2:将request对象传递到urlopen()方法内,即 respones = urllib.request.urlopen(requset)

    功能:与urlopen的方法类似,获取网页源代码用,但是Request()可更改请求方式,请求方式默认为GET

    注意事项:

    1:request = urllib.request.Request(url,data,headers)请求方式为GETdata(默认为空)请求方式如果是POST,需要加上data参数,headers是一个字典,包含了需要发送的HTTP报头的键值对

    2:根据注意事项1可以看出来 利用Request()先构建request对象在进行 urlopen(request)处理的这种方法可以更改客户端对服务端的请求方式!

    image.png


    二:re库

    方法:result = re . match(pattern,string,flags)
    功能: 在一个字符串内匹配指定的子字符串
    **
    参数详解:

    pattern:正则模式 即正则表达式
    string:待匹配的子字符串
    falgs:匹配模式

    注意事项:

    1:待匹配字符串第一个字符不符合正则表达式直接返回None
    2:match()方法只匹配第一个符合规则的子字符串

    3:result = re.match(pattern,string,flags)返回的
    result 是一个类不是匹配的数据需要利用 result.group()方法才能获取匹配的数据


    方法:
    result = re . search(pattern,string,flags)
    功能: 在一个字符串内
    匹配指定的子字符串

    参数详解:

    pattern:正则模式 即正则表达式
    string:待匹配的子字符串
    falgs:匹配模式

    注意事项:

    1:待匹配字符串第一个字符不符合规则会继续向后查找,这是与match方法的不同
    2:search()方法也只是查找第一个符合规则的子字符串

    3:result = re.match(pattern,string,flags)返回的result 是一个类不是匹配的数据需要利用 result.group()方法才能获取匹配的数据


    方法:result_list = re . findall(pattern,string,flags)

    功能: 在字符串内
    查找所有**符合规则的子字符串并且返回一个列表,可直接打印

    参数详解:

    pattern:正则模式 即正则表达式
    string:待匹配的子字符串
    falgs:匹配模式

    注意事项:

    1:findall()方法是爬虫的常用方法

    2:使用findall方法时,正则表达式内含有分组,则只匹配符合分组的那部分字符串保存至列表内,如果正则中有两个分组,则将符合这两个分组的字符串先保存至元组内在保存到列表中


    参考文档:https://www.cnblogs.com/tinghai8/p/9034742.html