Python爬虫(入门+进阶)学习笔记 1-3 使用Requests爬取豆瓣短评

Requests库介绍:

Requests库官方的介绍有这么一句话:Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。 
这句话直接并霸气地宣示了Requests库是python最好的一个HTTP库。 

为什么它有这样的底气?请阅读Requests官方文档


requests库的安装:终端 pip install requests

Requests的简单用法

Requests库的七个主要方法

方法 说明
requests.request() 构造一个请求,支撑以下各方法的基础方法
requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
requests.delete() 向HTML网页提交删除请求,对应于HTTP的DELETE

这里我们只需要掌握最常用的requests.get()方法即可。


import requests  #导入Requests库
r = requests.get(url) #使用get方法发送请求,返回包含网页数据的Response并存储到Response对象r中

Response对象的属性:

  • r.status_code:http请求的返回状态,200表示连接成功(阅读HTTP状态码,了解各状态码含义)

  • r.text:返回对象的文本内容

  • r.content:猜测返回对象的二进制形式
  • r.encoding:分析返回对象的编码方式
  • r.apparent_encoding:响应内容编码方式(备选编码方式)


实战环节

分析豆瓣短评网页 

首先通过浏览器工具来分析网页的加载方式,回忆一下上节课提到的同步加载和异步加载的区别。只有同步加载的数据才能直接在网页源代码中直接查看到,异步加载的数据直接查看网页源代码是看不到的。 

经测试,豆瓣短评页面为同步加载。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 13 11:54:15 2018

@author: Jackie
"""

import requests
from bs4 import BeautifulSoup
import pandas

r = requests.get('http://book.douban.com/subject/1084336/comments/').text
soup = BeautifulSoup(r, 'lxml')
pattern = soup.find_all('p', 'comment-content')

comments = []

for item in pattern:
    comments.append(item.string)

df = pandas.DataFrame(comments)
print(df)


爬取网页通用框架

  • 定义函数
  • 设置超时
  • 异常处理
  • 调用函数

import requests #导入Requests库

#定义函数
def getHTMLText(url):
    try:
        r = requests.get(url,timeout=20) #设置超时
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except: #异常处理
        return "产生异常"

if __name__ == '__main__':
    url = " "
    print(getHTMLText(url)) #调用函数


什么是爬虫协议:爬虫协议,也被叫做robots协议,是为了告诉网络蜘蛛哪些页面可以抓取,哪些页面不能抓取

如何查看爬虫协议:在访问网站域名后加上robots.txt即可,例如查看百度网站的爬虫协议:https://www.baidu.com/robots.txt

爬虫协议属性: 
拦截所有的机器人: 
User-agent: * 
Disallow: /

允许所有的机器人: 
User-agent: * 
Disallow:

阅读robots协议,了解更多爬虫协议属性。

爬虫建议

  • 爬取互联网公开数据
  • 尽量放慢你的速度
  • 尽量遵循robots协议
  • 不要用于商业用途
  • 不要公布爬虫程序与数据


猜你喜欢

转载自blog.csdn.net/kissazhu/article/details/79715710