第十六章Python正则表达式
一、网络爬虫:网页爬取,就是把URL地址中指定的网络资源从网络流中读取出来,保存到本地。
二、爬取网页的基础知识-HTTP请求方法:1.HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD方法。
2.HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。
三、爬取网页的基础知识-URL:
1.URL是Uniform Resource Locator的缩写,即统一资源定位系统,也就是网址。
2.URL 遵守一种标准的语法,它由协议、主机名\域名、端口、路径、以及文件名这六个部分构成
四、HTML与JavaScript基础-网页结构:
1.网页一般由三部分组成,分别是 HTML(超文本标记语言)、CSS(层叠样式表)和 JScript(活动脚本语言)。
2.HTML是整个网页的结构,相当于整个网站的框架。带“<”、“>”符号的都是属于 HTML 的标签,并且标签都是成对出现的。
3.常见的标签如下:
..
表示框架
..
表示段落- ..
- 表示列表
..表示图片
..
表示标题 ..表示超链接 4.CSS 表示样式,<style type="text/css">表示下面引用一个 CSS,在 CSS 中定义了外观。 5. JScript 表示功能。交互的内容和各种特效都在 JScript 中,JScript 描述了网站中的各种功能。 五、爬取网页的urllib库 1.urllib库:Python3.x标准库urllib提供了urllib.request、urllib.response、urllib.parse和urllib.error四个模块。 6. 使用urllib库获取网页信息 (1)使用 urllib.request.urlopen()函数可以打开一个网站,读取并打印网页信息。 (2)urllib.urlopen(url, data[, proxies]) (3)urlopen()函数返回response对象 (4)函数的参数url表示远程数据的路径;data表示提交到url的数据;proxies用于设置代理。 3.使用urllib库获取网页信息 (1)response对象的方法 (2)info()方法:返回一个httplib.HTTPMessage对象。 (3)getcode()方法:返回HTTP状态码。如果是HTTP请求,200表示请求成功完成,404表示网址未找到。 (4)geturl():返回请求的url。 六、urllib的基本应用 1.读取并显示网页内容 2.提交网页参数 (1)使用GET方法读取并显示指定url的内容。 (2)使用POST方法提交参数并读取指定页面内容。 3.使用HTTP代理访问页面 七、爬取网页的requests库 7. requests库概述:requests库包括URL获取、HTTP长连接和连接缓存、自动内容解码、文件分块上传、连接超时处理、流数据下载等功能。 8. 2.requests库解析 9. (1)requests库的requests.get()方法功能是网络爬虫和信息提交 (2)res=requests.get(url[,timeout=n]) (3)该函数返回的网页内容会保存为一个response对象。参数url必须采用HTTP或HTTPS方式访问,可选参数timeout用于设定每次请求超时时间。 3.requests.get() 返回的response对象代表响应。response对象的主要属性如下。 (1)status_code:返回HTTP请求的状态,200表示连接成功,404表示失败。 (2)text:HTTP响应内容的字符串形式,即url对应的页面内容。 (3)encoding:HTTP响应内容的编码方式。 (4)content:HTTP响应内容的二进制形式。 4.Response对象提供了两个方法。 (1)json():如果HTTP响应内容包含JSON格式数据,则该方法解析JSON数据。 (2)raise_for_status():如果status_code值不是200,则产生异常。 八、requests基本操作 1.增加头部并设置访问代理 2.访问网页并提交数据 3.获取和设置cookies 4.使用get()方法获取网页信息时设置cookies参数的用法 九、beautifulsoup4库 1.beautifulsoup4库概述 (1)beautifulsoup4库也称为bs4库或BeautifulSoup库 (2)Python用于网页分析的第三方库,用来快速转换被抓取的网页。 (3)beautifulsoup4将网页转换为一颗DOM树。 (4)beautifulsoup4提供一些简单的方法以及类Python语法来查找、定位、修改一棵转换后的DOM树,还能自动将送进来的文档转换为Unicode编码。 10. beautifulsoup4库的对象 (1)BeautifulSoup将HTML文档转换成一个树形结构,每个结点都是 对象,可以归纳为4种类型:Tag、NavigableString、BeautifulSoup、Comment。 (2)Tag对象,HTML中的一个标签。 (3)NavigableString对象,用于操纵标签内部的文字,标签的string属性返回NavigableString对象 (4)BeautifulSoup对象,表示的是一个文档的全部内容,大部分时候可以把它看作是一个特殊的Tag。 (5)Comment对象,是一个特殊类型的NavigableSting对象,它的内容不包括注释符号。 十、beautifulsoup4库-操作解析文档树1. 遍历文档树 (1)获取直接子结点:contents属性和children属性可以获取Tag的直接子结点。(2)获取所有有子结点:descendants属性可以对所有Tag的子结点进行递归循环,需要遍历获取其中的内容。 (3)获取结点内容:当标签中不再包含标签,string属性返回标签中的内容;标签中内嵌唯一标签,那么string属性返回最里面标签的内容;Tag包含了多个子标签结点,string的输出结果是None。 (4)获取多项内容:strings属性用于获取多个内容,需要遍历获取。 (5)父结点:父结点是当前结点的上级结点,parent属性用于获取父结点。 (6)兄弟结点:兄弟结点和本结点处在同一层级的结点,next_sibling属性用于获取当前结点的下一个兄弟结点,previous_sibling则与之相反,如果结点不存在,则返回None 2. 搜索文档树 (1)find_all()方法,搜索当前Tag的所有子结点,语法如下。find_all(name,attrs,recursive,text,**kwargs) (2)name:名字为name的标签。 (3)attrs:按照Tag标签属性值检索,采用字典形式。 (4)recursive:如果只想搜索Tag的直接子结点,可以使用参数recursive=False。 (5)text:通过text参数可以搜索文本字符中内容。 (6)limit:限制返回结果的数量。 (7)find()方法:find()方法返回找到的第一个结果。find(name,attrs,recursive,text)。参数含义与find_all()方法完全相同。 3. 用CSS选择器筛选元素