爬虫urllib

urlopen

form urllib import request
resp=request.urlopen("http://www.baiud.com")
print(reso.read()) # 获取网页源码

reso.readlines() 读取多行
reso.readlines(10) 读取10行
reso.read() 读取一行
reso.getcode() 返回响应码

urlretriexe 函数 (下载网页文件)

from urllib import request
request.urlretrieve("http://www.baiud.com","baidu.html") # 前面的参数是url,后面是路径,

urlencode函数:(url的编码)

用浏览器发送请求的时候,如果url中包含了中文或者其他字符,那么浏览器会自动给我们进行编码.而如果代码发送请求,那么久必须手动进行编码,这个时候就应该用urlencode 函数来实现. urlencode 可以吧字典数据转化为 url 编码的数据

from urllib import parse
data={"name":"爬虫","greet":"hello"}
qs=parse.urlencode(data)
print(qs)

结果:

name=%E7%88%AC%E8%99%AB&greet=hello

parse_qs 函数:(url解码)

可以将经过编码的url参数进行解码:

from urllib import parse
qs="name=%E7%88%AC%E8%99%AB&greet=hello"
print(parse.parse_qs(qs))

输出:
{'name': ['爬虫'], 'greet': ['hello']}

urlparse 和urlsplit(分割网站的用法)

在这里插入图片描述
urlsplit 里面没有 params这个提取属性 其他的和parse 一样

访问网页1(反爬虫)

from urllib import parse,request
url="" # 准备的url 地址
headers={"user-agent":"",
        "referer":"",
         } # 准备的请求头,和之前访问的网站
data={}; # 这个是要请求的表单信息 
# 这里主要要把data的数据格式改一下
re=request.Request(url,headers=headers,data=parse.urlencode(data).encode('utf-8'),method='POST') 
r=request.urlopen(url)
print(r.read())

ProxyHandler 处理器(代理设置)

from urllib import parse,request
# 这个是请求了代理
handler=request.ProxyHandler({"http":"218.66.161.88.31769"})
# 建立代理
opener=request.build_opener(handler)
req=request.Request("要爬取的网页")
......

cookie 的格式

在这里插入图片描述

用cookie登录

1.在headers 里面加cookie

headers={
"cookie":" 这里是浏览器cookie的数据不用吧等号分开! "
}

2.用cookiejar 自动提取cookie

from urllib import parse,request
from http.cookiejar import CookieJar
# 1. 登录
# 1.1 创建一个cookiejar对象
cookiejar=CookieJar()
# 1.2 使用cookiejar 创建一个HYYPCookieProcess 对象
handler=request.HTTPCookieProcessor(cookiejar)
# 1.3 使用上一步创建的handler创建一个opener
opener=request.build_opener(handler)
#1.4 使用 opener 发送登录请求(账号,密码)
headers={} # 规定请求头,和之前访问的网站,不需要cookie
data={

} # 提交post的数据
r_post=request.Request("登录的主页",data=parse.urlencode(data).encode("utf-8"),headers=headers)
opener.open(r_post)
# 2.访问个人主页
# 2.1 获取个人主页的信息,不要新建opener ,要用之前存了信息的opener
r=opener.open("要爬登录后的主页")
# 完成!

3.把cookie 存在本地文件

from urllib import parse,request
from http.cookiejar import MozillaCookieJar
cookiejar=MozillaCookieJar("cookies.txt")
# cookiejar.load(ignore_discard=True) #将过去的cookie下在在python里面
handler=request.HTTPCookieProcessor(cookiejar)
opener=request.build_opener(handler)
resp=opener.open("https://www.baidu.com/")
cookiejar.save()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值