Python爬虫-1-基础

本文深入讲解了爬虫的定义、分类及其在数据抓取中的应用。涵盖了通用爬虫与聚焦爬虫的区别,以及如何利用Python的urllib库进行网页、图片和视频的下载。同时,探讨了反爬虫策略及应对方法,如User-Agent、代理IP和验证码处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫定义

爬虫(spider):是用脚本代替浏览器请求服务器获取服务器资源的程序。(python爬虫优势,支持模块很多,有scrapy非常强大的爬虫框架)

 

爬虫分类

1.通用爬虫

1)实例:百度等搜索引擎

2)功能:访问网页 --> 抓取数据 --> 数据存储 --> 数据处理 --> 提供检索服务

3)爬取流程:

① 给定一些起始的url,放入待爬取队列

② 从队列中获取url对象,开始爬取数据

③ 分析网页,获取网页内所有url,入队,继续重复执行第二步

 

2.聚焦爬虫

1)功能:根据需求,实现爬虫程序,抓取需要的数据

2)设计思路:

① 确定要爬取的url

② 模拟浏览器通过http协议访问url,获取服务器返回的html代码

③ 解析html字符串(根据一定的规则提取需要的数据)

 

使用python库(urllib模块)

from urllib import request

① urllib.request.urlopen(url):打开url,返回一个response对象

② response常用方法:read()、readline()、readlines()、getcode()、geturl()、getheaders()

# coding:utf-8
from urllib import request

res = request.urlopen("https://www.baidu.com/")
print(res.read())  # 返回一个二进制数据
print(res.read().decode())  # 解码显示百度页面源码
print(res.geturl())  # 请求的url
print(res.getheaders())  # 返回响应头
print(res.getcode())  # 返回状态码

③ urllib.request.urlretrieve() :请求网页、图片、视频

# coding:utf-8
from urllib import request

# url为图片地址,会将图片下载在当前路径下并命名为cat.jpg
url = "https://ss0.bdstatic.com/94oJfD_bAAcT8t7mm9GUKT-xh_/timg?image&quality=100&size=b4000_4000&sec=1567754197&di=3c8987357c27e334ce8e565524a2badf&src=http://n.sinaimg.cn/sinacn12/275/w640h435/20180806/7562-hhhczfc3896460.jpg"
res = request.urlretrieve(url,"cat.jpg")

打开图片

# coding:utf-8
from urllib import request

# url为视频地址,会将视频下载在当前路径并命名为zjl.mp4
url = "https://vd2.bdstatic.com/mda-ji2k1egrakc2yraf/sc/mda-ji2k1egrakc2yraf.mp4?auth_key=1567757266-0-0-352d0aa60522101452bc7c1816d745b2&bcevod_channel=searchbox_feed&pd=bjh&abtest=all"
res = request.urlretrieve(url,"zjl.mp4")

打开视频保存目录,视频下载完成,正常播放

 

④ urllib.parse(python自带,需要传入一个字典,parse.urlencode(字典数据))

# coding:utf-8
from urllib import request,parse

base_url = "http://tieba.baidu.com/f?&pn=%s"
source = {
    "kw":"王俊凯"
}
headers = {
"User-Agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Mobile Safari/537.36"
}
# 解析url,请求中有中文的时候需要编码一下再请求
url1 = parse.urlencode(source)  # source为字典
print(url1)  # url1为:kw=%E7%8E%8B%E4%BF%8A%E5%87%AF
for i in range(1,6):
    pn = (i-1)*50
    # 拼接每一页url
    url = base_url%pn + url1
    # print(url)
    # 对每一页构造请求并发送请求
    req = request.Request(url=url,headers=headers)
    response = request.urlopen(req)
    print(response.getcode())

 

解析内容

正则表达式

xpath

bs4

jsonpath

 

反爬虫的一些手段

User-Agent

代理IP(西刺代理)

验证码访问(打码平台)

动态加载网页

数据加密(分析js代码)

爬虫-反爬虫-反反爬虫

 

爬虫的流程

1)分析业务需求、分析出你需要的数据、数据量、周期

2)建模,根据需求,创建数据库,用数据库表、表字段、表关联来描述业务之间的联系

3)分析爬取的路径、html结构、数据传输

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值