python 爬虫总结

requests模块

import reqeusts
# get 请求
# 网址
url_login = "url://123.com"

# 请求头
headers = {
        'User-Agent': 'Apipost client Runtime/+https://www.apipost.cn/'
}

# 参数,形式字典
kw = {key:value}
response = reqeusts.get(url=url_login,params=kw)

# post 请求
esponse = reqeusts.post(url=url_login)

# 使用代理
proxies的形式:字典
proxies = {
    "http": "http://代理地址1",
    "https": "http://代理地址2"
}

# 用法
reqeusts.get("http://www.baidu.com",proxies=proxies)

# 使用session
# 实例化一个session对象
# 使用该对象发送get或post请求
session = reqeusts.session()
response = session.get(url,headers=headers)
# 后续使用session请求url会自动携带session完成访问

# 把cookie对象转化为字典
reqeusts.util.dict_from_cookiejar
# 请求ssl证书验证
response = reqeusts.get(url="https://url_login",verify=False)
# 设置请求超时
response = reqeusts.get(url,timeout=10)
# 配合状态码判断是否请求成功(断言)
assert response.status_code == 200

对象.名词 --- 属性

对象.动词 --- 方法

response.text

  • 类型 :str
  • 修改编码方式:response.encoding="gbk"
  • 多用于文本

response.content

  • 类型:bytes
  • 修改编码方式:response.content.deocde("utf-8")
  • 多用于图片等二进制文件保存

数据分类

非结构化数据:html

处理方法: 正则表达式、 xpath

结构化数据:json、xml等

处理方法:转化为python数据类型

json 模块

import json

json中的字符串都是双引号引起来的

如果不是双引号: 

        eval:能实现字符串和python类型的转化

        replace: 把单引号替换为双引号

 正则表达式

用事先定义好的一些特殊字符,及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑

常用正则的方法:

  • re.complie(编译)
  • pattern.match(从头找一个)
  • pattern.search(找一个)
  • pattern.findall(找所有)
  • pattern.sub(替换)

 原始字符串r,字符串中有\带来的转义效果,r能忽视反斜杠

点号默认情况下匹配不到"\n"

"\s" 能够匹配空白字符,不仅能包含空格,还有"\t|\r|\n"

贪婪(.*)非贪婪(.*?) 

xml

 xpath节点选择

 语法

 

 

 

 

 

 lxml使用注意点

lxml补不全功能会使程序出现错误,使用etree.tostring观察html文件样子 完成校验。

lxml可以接受bytes和str字符串

提取页面数据的思路

        先分组,

        在遍历每一个分组取其中数据

爬虫的工作流程

搜索引擎流程

抓取网页-> 数据存储-> 预处理 -> 提供检索服务,网站排名

聚焦爬虫流程

url list  -> 响应内容 - > 提取数据 -> 入库

      /\               |

      |       -     提取url

需要爬取的数据位置:

  • 当前url地址对应的响应中
  • 其他的url地址对应的响应中(ajax请求中)
  • js生成的(部分数据在响应中,或者全部数据由js生成)

格式化字符串

print("hello %s" % "小明")

print("hello {}".fromat("小明"))

列表推导式

# 生成列表
[i for i in range(3)]
# 生成列表时增加判断
[i + 3 for i in range(3) if i%2==0]

cookie和session

  • cookie 数据存放在客户的浏览器上,session数据存放在服务器上
  • cookie不是很安全,可以对cookie进行分析进行cookie欺骗
  • session会在一定时间内保存在服务器上,当访问增多,会占用服务器资源。
  • 单个cookie保存的数据不能超过4K,浏览器限制一个站点最多保存20个cookie
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值