[原创]python3 基础爬虫(静态网页)
python经常被用来写爬虫程序,而在接触python网络爬虫之前,建议先充分了解html (超文本标记语言)
一.简单获取网页源代码
在解析网页之前,首先要爬取网页源代码
而使用python 3下载网页的方式主要有如下两种方式
1.requests
1 | import requests |
2.urllib
1 | import urllib.request |
二.headers的使用
首先需要了解,headers是什么?
header是http请求头信息,是服务器以HTTP协议传HTML资料到浏览器前所送出的字串
其实浏览器每进行请求一个网页,都会有一个header请求标头,如果要查看,可以在浏览器->开发者工具->网络中,任意选择一个请求的文件查看标头,类似这样:
1 | GET xxxx HTTP/1.1 |
有些时候,爬取一些网页会出错(或内容未正常显示),那可能就是因为网页有”反爬虫”措施,这个时候我们就需要利用headers来伪装浏览器进行请求
1.在requests里加入headers
1 | import requests |
2.在urllib里加入headers
1 | import urllib.request |
三.网页源码的分析
既然网页源码都已经爬取到了,那么下一步就是从静态网页的源码中分析出有用的信息
这一步需要一些html的知识
解析源码这里建议使用一个库,叫做BeautifulSoup
BeautifulSoup的安装
借助pip安装工具,我们就可以直接在命令行里输入执行
1 | pip install beautifulsoup4 |
来安装BeautifulSoup库,看到Successfully Installed就说明安装完成了
BeautifulSoup的使用
1>创建 BeautifulSoup 对象
首先引用bs4库
1 | from bs4 import BeautifulSoup |
创建一个 Beautifulsoup 对象
1 | soup=BeautifulSoup(html) |
创建对象还可以添加如下参数,使用指定解释器
解析器 | 使用方法 |
---|---|
Python标准库 | BeautifulSoup(xxx,”html.parser”) |
lxml解析器 | BeautifulSoup(xxx,”lxml”) |
html5lib | BeautifulSoup(xxx,”html5lib”) |
2> BeautifulSoup 树结构
BeautifulSoup将HTML文档转换成一个树形结构,每个节点都是Python对象,我们就可以从中轻松读取数据,而树形结构可以归纳为4种:
- 1.Tag
- 2.NavigableString
- 3.BeautifulSoup
- 4.Comment
3> BeautifulSoup中常用函数
- find_all - 返回查找到的元素列表
1
find_all(name,attrs,recursive,text,**kwargs)
参数解释:
name: html中的标签,比如说’li’,’a’,’div’,’span’,’h1’
attrs: html中属性头,比如说’id’,’class’,’href’
text: 搜索有的字符串内容
limit: 限制数目输出数量
代码示例:
1 | soup.find_all('li') #返回list,这里查找的是li标签 |
find
这个函数就和上面的find_all差不多了,只不过是查找一个匹配元素,而不是返回listget_text - 获取标签下所有文本
示例:
假如说html里有一个span标签1
2
3
4<span>
abc
<p>123</p>
</span>
1 | html=soup.find('span') |
那么这段代码就可以获取到span内的文本内容