0
点赞
收藏
分享

微信扫一扫

爬虫笔记---每日更新

彩虹_bd07 2022-02-04 阅读 51

python 爬虫

​ day 01

​ 1、urllib的基本使用

# 使用urllib来获取百度首页的原码
import urllib.request

# 1、定义一个url  就是访问的地址
url = 'http://www.baidu.com'

# 2、模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)

# 3、获取响应中的页面的原码
# read方法  返回的是字节形式的二进制数据
# 要将二进制的数据转化为字符串
# 二进制-->字符串  ----解码  decode('编码的格式')
content = response.read().decode("utf-8")

# 4、打印数据
print(content)

2、urllib的一个类型&6个方法

一个类型:HTTPResponse

六个方法:read()字节读取、readline()按行读取、readline()多行读取、getcode()状态码、geturl()url地址、getheaders()状态信息

# 先导入urllib
import urllib.request

url = "http://www.baidu.com"

# 要模拟浏览器向服务器发送请求
response = urllib.request.urlopen(url)

# 一个类型&六个方法
# response的类型返回值--> <class 'http.client.HTTPResponse'>
# print(type(response))

# 按照一个字节一个字节的去读取
# content = response.read()
# print(content)

# 返回多少个字节
# content = response.read(5)
# print(content)

# 读取一行
# content = response.readline()
# print(content)

# 读取多行
# content = response.readlines()
# print(content)

# 返回状态码  如果是200  那么就证明-->正确
# print(response.getcode())

# 返回的是url地址
# print(response.geturl)

# 返回的是一些状态信息。
print(response.getheaders())

# 一个类型-->HTTPResponse
# 六个方法  read readline readlines getcode geturl getheaderes

3、urllib下载

import urllib.request

# 下载网页
url_page = 'http://www.baidu.com'

# url代表的是下载的路径  filename 文件的名字
# 在python中  可以是变量的名字  也可以直接写值
urllib.request.urlretrieve(url_page,"baidu.html")

# 下载图片
url_img = 'https://img2.baidu.com/it/u=3570876247,4151830166&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=500'
urllib.request.urlretrieve(url=url_img,filename="lisa.jpg")


# 下载视频
url_video = "https://vd3.bdstatic.com/mda-nat5qj8usux8pm6i/sc/cae_h264_nowatermark_delogo/1643342725114082165/mda-nat5qj8usux8pm6i.mp4?v_from_s=hkapp-haokan-suzhou&auth_key=1643381720-0-0-ff8383c200f6f79f55c9d9dd1ca6e45d&bcevod_channel=searchbox_feed&pd=1&pt=3&logid=1520088520&vid=3711294125448144704&abtest=17451_1-3000212_3&klogid=1520088520"
urllib.request.urlretrieve(url_video,"spaceX.mp4")

4、防治防爬的第一种措施------UA反爬

# UA 反爬

import urllib.request

url = "https://www.baidu.com"

# url的组成  https://www.baidu.com/s?ie=UTF-8&wd=%E5%91%A8%E6%9D%B0%E4%BC%A6
# http、https(ssl协议)    www.baidu.com 80/443  s   wd=zhoujielun     #
#       协议                主机(域名)  端口号  路径      参数        锚点
# 端口号:http:80 https:443 mysql:3306 oracle:1521 redis:6379 mongodb 27017

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36'
}

# 因为urlopen方法中不能存储字典  所以headers不能传递进去
# 请求对象的定制   得加上变量的名字
# 注意因为参数顺序的问题  不能直接写url 和headers 中间还有data  所以我们还需要关键字传参
request = urllib.request.Request(url=url,headers=headers)

response = urllib.request.urlopen(request)

content = response.read().decode("utf8")

print(content)
举报

相关推荐

0 条评论