2/2 数据获取:网络数据的获取

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 。

你可能感兴趣的:(Python)