python爬虫第二讲前导知识补充&网络模块上

get和post&url说明

  • get特点

    一般情况下,只从服务器获取数据,没有对服务器产生影响,通常都是get请求,请求参数可以在url地址上显示出来

  • post特点

    向服务器发送数据,会对服务器产生影响,通常使用post请求

  • url(全球统一资源定位符)

    https://new.qq.com/omn/TWF20200/TWF2020032502924000.html
    https 网络协议
    new.qq.com host
    omn/TWF20200/TWF2020032502924000.html 访问资源路径
    anchor 锚点 前端用来做页面定位的

Referer和cookie说明

  • User-Agent 用户代理

    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36
    作用:记录了用户的浏览器、操作系统等 为了让用户更好的获取HTML页面的效果
    一般会作为 反反爬的第一步

  • Referer

表明当前的这个url是从哪个url过来的 通常也是反反爬的一种
https://movie.douban.com/top250 首页
https://movie.douban.com/subject/1292052/ # 肖申克救赎详情页的url

  • cookie

记录用户相关的信息
HTTP协议本身是无状态的 服务器无法判断用户的身份
爬虫里面cookie的作用?
1 反反爬
2 模拟登录

import requests

url = 'https://movie.douban.com/subject/1292052/'
referer = 'https://movie.douban.com/top250'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
    'referer': 'https://movie.douban.com/top250'
}
response = requests.get(url, headers=headers)
header = response.request.headers
print(response)

状态码和抓包工具说明

  • 状态码

301 永久重定向
www.jd.com
www.jingdong.com 重定向到了 jd

302 临时重定向
www.zhihu.com
https://www.zhihu.com/signin?next=%2F 临时重定向到了登录的界面

  • 抓包工具(谷歌浏览器自带的)

Elements 元素 网页源代码(最终页面渲染的结果) 提取数据和分析数据
Console 控制台 后期来分析js代码的时候 可以通过打印的结果来找规律 (前期用不到)
Sources 资源 信息的来源 整个网站价值的资源 分析js代码的时候使用 调试 打断点(前期用不到)
NetWork 网络工作(数据抓包)

urllib模块的说明

  1. urllib是什么?

    Python内置的一个网络请求模块 类似 re time random os

  2. 为什么要学习它呢?

    对比的去学习第三方的(学习方法 你去总结哪些方法对于你本身比较实用)
    有些爬虫项目 用的就是urllib (github下载一些项目)
    有的时候需要 urllib + requests 二者配合使用

urllib.request的使用

把网络上的图片保存到本地

from urllib import request
url = 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2F1812.img.pp.sohu.com.cn%2Fimages%2Fblog%2F2009%2F11%2F18%2F18%2F8%2F125b6560a6ag214.jpg&refer=http%3A%2F%2F1812.img.pp.sohu.com.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1624863122&t=e0ab3e35ec160c7887508edfcc08f30d'
request.urlretrieve(url, 'xs.png')
urllib.request的使用
​
urllib.request.urlopen('网站') / 请求对象
# 作用: 向网站发起请求获得响应
# response为响应对象
# TypeError: urlopen() got an unexpected keyword argument 'headers'
# urlopen() 不支持构建 User-Agent
# headers = {}
# response = urllib.request.urlopen('https://www.baidu.com/')
# # read() 方法把相应的对象里面的内容读取出来
# # 通过打印的结果发现问题了 1 打印的数据是字节流 2 数据不对
# html = response.read().decode('utf-8')
# print(type(html),html)# 创建请求对象并且可以构建User-Agent
import urllib.request
url = 'https://www.baidu.com/'
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
}
# 1 创建请求对象 构建User-Agent
req = urllib.request.Request(url,headers=headers)
# 2 获取响应对象 urlopen()
response = urllib.request.urlopen(req)
# 3 read().decode('utf-8') 读取响应对象的呢日用
html = response.read().decode('utf-8')
print(html)

urllib.parse的使用

import urllib.parse

# 第一种方式  urllib.parse.urlencode(r) r需要传递是字典类型
r = {'wd':'海贼王'}
result = urllib.parse.urlencode(r)
# print(result)
f_url = 'https://www.baidu.com/s?' + result
print(f_url)

# 第二种
r = '海贼王'
result = urllib.parse.quote(r)
# print(result)
f_url = 'https://www.baidu.com/s?wd=' + result
print(f_url)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yerennuo

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

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

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

打赏作者

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

抵扣说明:

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

余额充值