爬虫基础01—初识爬虫(request)

目录

1. 网络爬虫简述

2.爬虫分类:

3.网络爬虫的基本原理

3.1 如何找headers:

3.2 cookies

3.3 http请求  get  post  put  delete  (curd)增删改查

4.关于http协议:

5.关于requests库:(python第三方模块)


 

1. 网络爬虫简述

能够爬数据,获取网页数据,数据采集

2.爬虫分类:

  1. 通用网络爬虫(url集合,url队列,页面爬行模块,页面分析模块,页面数据库,链接过滤模块)
  2. 聚焦网络爬虫(有目的的爬,例如爬取租房信息)
  3. 增量式网络爬虫(只更新改变的数据,不更新没改变的数据,可以减少下载量与网络资源开销,增加了爬虫算法的难度)
  4. 深层网络爬虫(爬行控制器,解析器,表单分析器,表单处理器,)

响应分析器,lvs控制器(label value set是标签和数值的集合,用来表示填充表单的数据源)

3.网络爬虫的基本原理

1.获取初始的url,第一个要爬的入口

2.爬取特定地址的同时获取新的地址

3.将新的url放入url队列中 (list  if url not in list     list.append(url))

4.始终采集页面上的新url,重复上面的过程

import urllib.request # (标准库  不需要下载直接自带)from urllib import request  这个写法不对

response = urllib.request.urlopen('http://www.baidu.com')
html = response.read()
print(html)

200 请求成功

301/302 重定向 通过一个网址跳到另一个网址

404找不到页面

403禁止访问 反爬

405请求方式不允许get,post

500 后台代码错误

502 网关错误

3.1 如何找headers:

3.2 cookies

存储用户登录状态()例如30天免登陆

3.3 http请求  get  post  put  delete  (curd)增删改查

  1. create->post  insert
  1. update ->put  update
  1. read->get  select
  1. delete->delete delete
import requests

response = requests.get(url='http://www.baidu.com')
print(response.status_code)  #打印状态码
print(response.url)  #请求的url
print(response.headers) #打印头部信息
print(response.cookies)  #打印cookies信息
print(response.text)  #打印源代码
print(response.content)  #以字节流打印bytes
with open('a.txt','w+') as f:
    f.write( str(response.content))

西刺代理:

www.xicidaili.com/nn

西刺代理

4.关于http协议:

http:超文本传输协议(协议:就是一种约束条件)

5.关于requests库:(python第三方模块)

如果安装了Anaconda,则自带requests

如果正常使用Pycharm,则需要安装,命令是:pip install requests

requests常用方法

① get方法:用于发送get请求,返回响应对象 ☆

(1)设置headers:

(2)设置请求参数:get请求用params

(3)设置请求超时:

② post方法:同get

(1)设置请求参数:用data参数

5.1 实例1:

request爬取图片;

import requests
if __name__ == "__main__":
    #爬取图片数据
    url = 'https://img1.baidu.com/it/u=3692773629,2755530085&fm=253&fmt=auto&app=138&f=JPEG?w=499&h=312'
    # headers = {
    #     'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36 Edg/97.0.1072.62'
    # }
    #content返回的是二进制形式的图片数据   text(返回字符串)  json()是以对象的形式返回
    img_data = requests.get(url=url).content
    with open('./zard333.jpg','wb') as fp:
        fp.write(img_data)

 

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Top Secret

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值