python爬虫学习笔记一(基本概念&urllib基础)

学习资料:尚硅谷_爬虫

学习环境:  pycharm

一.爬虫基本概念

爬虫定义

> 解释1:通过程序,根据URL进行爬取网页,获取有用信息
> 解释2:使用程序模拟浏览器,向服务器发送请求,获取相应信息

 

爬虫核心
> 1.爬取整个网页
> 2.解析数据,获取关心的数据
> 3.难点:爬虫VS非爬虫

 

爬虫设计思路
> 1.确定爬取的url 
> 2.模拟浏览器通过http协议访问url,获取服务器返回的html代码 
> 3.解析html代码 

二、urllib库基础

1.任务一:下载想要的网页、图片、视频、音频

(1)确定下载文件的url

 (2)urllib.request.urlretrieve(url,文件名) 注意文件的格式(网页:html,图片:jpg、png...,视频:mp4...,音频:mp3...) 

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=1239151102,985906506&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=756"

urllib.request.urlretrieve(url_img,'SunNan.jpg')

#下载视频
url_video="https://vdept3.bdstatic.com/mda-qfki2ugsvapzwmi5/360p/h264/1718974059553088160/mda-qfki2ugsvapzwmi5.mp4?v_from_s=hkapp-haokan-hbe&auth_key=1718992706-0-0-ec02705d0acdbcc898d46a43306803c0&bcevod_channel=searchbox_feed&pd=1&cr=0&cd=0&pt=3&logid=3506132986&vid=18030693424817568764&klogid=3506132986&abtest=101830_1-102148_2-17451_1"

urllib.request.urlretrieve(url_video,'Kind Of Sadness By Sun Nan.mp4')

#下载音频
url_audio="https://ws6.stream.qqmusic.qq.com/C4000044M6Un0RXph2.m4a?guid=3844259990&vkey=FE194254F48E7427320B0F215EDE6F31C0FE911757B199D0332896D1D5E837402D5BFFD5FADE06533C81288B334789E9411E173F9FED349F&uin=2131640053&fromtag=120032"

urllib.request.urlretrieve(url_audio,"Maple.mp3")

2.任务二:获取百度首页(http协议)的源码

(1)确定url:“http://www.baidu.com”

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

(3)获取页面源码  content=response.read().decode('UTF-8') 解码:二进制->字符串

#使用urllib来获取百度首页的源码
#一个类型 response:HTTPResponse
#六个方法 read、readline、readlines、getcode、geturl、getheaders
import urllib.request

#(1)定义url 就是要访问的地址
url='http://www.baidu.com'

#(2)模拟浏览器向服务器发送请求 response 是 HTTPResponse的类型
response=urllib.request.urlopen(url)

#(3)获取相应中页面源码 content 内容
#read方法 返回的是字节形式的二进制数据 需要转化为字符串
#二进制->字符串 解码 decode('编码的格式')
#read() 按照一个一个字节的去读
#read(n) 返回n个字节
#readline() 读取一行
#readlines() 一行一行读
#response.getcode() 返回状态码 如果是200了 证明逻辑没有错
#response.geturl() 返回url地址
#response.getheaders() 获取状态信息
content=response.read().decode('UTF-8')

#(4) 打印数据
print(content)

3.任务三:获取百度首页(https协议)的源码(请求对象的定制)

url的组成:

例如

#https://www.baidu.com/sf/vsearch?pd=video&tn=vsearch
#url的组成
#http/https   www.baidu.com    80/443   sf/vsearch   pd=xxx&...             #
#协议              主机                     端口号        路径       参数                  锚点
#协议默认端口号:http 80 https 443 mysql 3306 oracle 1521 mongodb 27017 redis 6379

UA介绍:User Agent中文名为用户代理,简称UA,它是一个特殊字符串头,是的服务器识别客户是用的操作系统及
#版本、CPU类型、浏览器及版本等等,例如Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36

#UA反爬:网站通过检查请求中的User-Agent字段来判断请求是否来自正常的浏览器。如果一个请求的User-Agent字段看起来像是一个爬虫程序(例如,没有包含常见的浏览器信息或者包含明显的爬虫标识),
# 网站可能会拒绝响应这个请求,或者返回错误信息、验证码等,以此来阻止爬虫的访问。

遇到UA反爬解决策略:请求对象的定制

(1)确定url

(2)将UA字段以字典形式保存在headers中 

[网页右键检查->network->刷新网页点击name栏第一行->在headers中的request Headers中查看UA]

eb201cb05ed14b028b9785852e55d088.png

headers={'User-Agent':' Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 SLBrowser/9.0.3.5211 SLBChan/111'}
(3)定制请

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值