o. 抓取
1. urllib内建模块
— urllib.request
2. Request第三方库
**Request库:**
Requests 库是最简单、方便和人性化的Python HTTP第三方库。Requests 官网:http://www.python-requests.org/ 。
注:有的网站有自己的爬虫协议,如豆瓣网(https://book.douban.com/robots.txt), 有“robots.txt”就说明存在。
基本方法 | 说明 |
---|---|
request.get() | 请求获取指定URL位置的资源,对应HTTP协议的GET方法。 |
发送请求获得一个Response对象,这个对象包含Resquest请求信息和服务器的Response响应信息,而Requests会自动解码来自服务器的信息。假设响应内容是二进制形式的,可以通过re.content进行解码,re.text自动推测文本编码并进行解码,re.encoding修改文本编码。
import requests
r = requests.get('https://book.douban.com/subject/1084336/comments/')
r.status_code
Out[4]: 200
r.text
import requests
re = requests.get('http://money.cnn.com/data/dow30')
print(re.text)
3. Scrapy框架
o. 解析
1. BeautifulSoup库
BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库。官方网站:https://www.crummy.com/software/BeautifulSoup/bs4/doc 。
BeautifulSoup对象 | 说明 |
---|---|
Tag | HTML或XML文档中的标签;Tag属性的操作和字典一样;Tag对象最重要的属性包括name(获得名字)和attribute() |
BeautifulSoup | 大部分内容都是Tag |
NavigableString | Tag当中的字符串。NavigableString对象可以用string属性来表示,取Tag中包含的非属性的字符串。 |
Comment | NavigableString的一个子类 |
from bs4 import BeautifulSoup
markup = 'The Little Prince
' # 定义一个字符串
soup = BeautifulSoup(markup, 'lxml') # 生成一个BeautifulSoup对象的soup
soup.b # 任何的标签内容都可以用“BeautifulSoup对象.tag”形式访问得到
Out[22]: The Little Prince
type(soup.b) #查看类型
Out[23]: bs4.element.Tag
tag = soup.p
tag.name # 通过name属性获得名字
Out[25]: 'p'
tag.attrs
Out[26]: {'class': ['title']}
tag['class'] # 通过字典形式获得属性
Out[27]: ['title']
tag.string # NavigableString对象可以用string属性来表示
Out[28]: 'The Little Prince'
type(tag.string)
Out[29]: bs4.element.NavigableString
soup.find_all('b') # 寻找所有b标签的内容
Out[30]: [The Little Prince]
soup.find()# 只需要找第一个标签内容
Out[31]: The Little Prince
2. re模块(正则表达式模块)
re正则表达式模块进行各类正则表达式处理。参考网站:https://docs.python.org/3.5/library/re.html 。