python爬虫 day01

第一周爬虫

基本内容

1.基本Requests用法
2.使用Requests实现基本的爬虫
3.信息的抽取及存储()
4.完善第二天爬虫具有基本的反爬虫能力(限速、去重、随机User-Agent、随机代理等)
5.Python多线程

基本的命名方法

除了类名是驼峰命名方法(DownloadUtils),其他均为下划线命名方法(download_url)。

module_name,  模块

package_name,  包

ClassName,  类 驼峰

method_name,  方法

ExceptionName,   异常

function_name,  函数 下划线

GLOBAL_VAR_NAME, 全局变量

instance_var_name,  实例

function_parameter_name,   参数

local_var_name.  本变量

Requests

Requests库的基本使用

1.首先安装Requests库

  	#打开终端,注意本机的虚拟环境保持和项目环境一致
  	pip3 install requests

2.使用requests库进行最基本的下载

#下载百度首页,requests库将下载结果封装为response类
response = requests.get("http://www.baidu.com")
#dir可以查看类的内部结构
#暴力调试可以了解类的内部方法行为
print(dir(response))
#text会使用默认的编码方式转换字符串
print(response.text)

3.将下载内容存入文件

  #with as 能够实现自动清理的条件是相应类必须实现__enter__,__exit__两个魔法方法
with open('baidu.html','w+') as f:
    #response.content是bytes类型使用decode方法还原为相应编码的字符串
    f.write(response.content.decode('utf-8'))

乱码是怎么产生的

产生乱码的原因:使用不同字库上的编码序号进行了解码操作.

例如:b’\xe4\xbd\xa0\xe5\xa5\xbd’在utf-8编码库中对应你好,在gbk编码库中对应’浣犲ソ’

00000100000
00010001000
00100000100   字符在字库的编码就是字符在字库的序号,左边是一个‘A’字符点阵显示示例
01000000010
10000000001

几个常见的进制转换

#转换为二进制
bin(10)
#转换为10进制
int(0xec)
#转换为16进制
hex(10)
#获取字符的编码位置
ord('你')

回顾HTTP协议

  • 什么是HTTP
    HTTP是超文本传输协议,具体概念参考HTTP协议
    主要用在浏览器和Web服务器之间通信

  • HTTP协议的主要特点
    1.无状态
    2.无连接
    3.支持多种媒体格式

  • HTTP消息格式
    1.请求

    GET /hello.txt?name=jack&age=21 HTTP/1.1 #请求的方式及请求的文件路径以及http协议版本号
    #后续信息是HTTP协议定义的Key-Value键值对,Key不能乱写,必须符合HTTP协议的要求
    #GET方法没有消息体,参数通过在url后面缀上问号传递
    User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
    Host: www.example.com

    2.应答

    #POST方法含有消息体,消息在消息头后方加空行来传递
    HTTP/1.1 200 OK
    Date: Mon, 27 Jul 2009 12:28:53 GMT
    Server: Apache
    Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
    ETag: “34aa387-d-1568eb00”
    Accept-Ranges: bytes
    Content-Length: 51
    Vary: Accept-Encoding
    Content-Type: text/plain

    //后续内容为消息体,与消息头之间有一个空行。

使用POST方法实现有道翻译

1.使用火狐打开有道翻译

2.右键->检查元素

3.在弹出的调试界面选择网络,如下图

4.找到相应是json类型的地址,一般情况是我们的接口地址

5.选中相应接口地址,如上图,点击参数,在表单数据中是我们要提交的数据

6.分析完接口数据,添加如下代码:

import json
import requests

#构建POST消息体
post_data = {}
post_data['i'] = "こんにちは"
post_data['doctype'] = "json"

#发出POST请求,web api,返回json数据结构的网址称为网络接口或web api
response = requests.post('http://fanyi.youdao.com/translate',data=post_data)
#解析返回的json结果
json_data = json.loads(response.text)
print("翻译结果是:",json_data['translateResult'][0][0]['tgt'])

cookies和session

  • 什么是cookies和session
    1.主要解决HTTP协议无连接、无状态的特点,使服务器能够识别用户
    2.cookies是保存在客户端的一组识别信息(例如会员卡),session是存在服务器端的数据
    3.cookies和session通过seesionid关联
    4.当客户机登录成功后,关闭了相关页面,一段时间以内(没有到超时时间)再次访问相关网页,浏览器会自动携带相应的cookies信息,并发送给服务器(cookies中携带sessionid),服务器检查相应sessionid的超时状态,如果没有超时,按照已登录提供服务
  • 使用cookies实现免登录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值