Python 爬虫学习笔记(一)爬虫基础知识与urllib的基本使用

前言

一直对爬虫比较感兴趣,网络爬虫不仅能获取自己想要的数据,还能做到一些有趣的事情。例如破解影视VIP。。图书馆座位自动预约脚本等。。咳咳,主要还是可以做一些好事情!下面跟着b站的视频做一些相应的学习记录,不断更新,视频链接如下:

爬虫学习视频


一、爬虫核心

  1. 爬取网页:通过程序(模拟浏览器),根据url爬取整个网页的内容
  2. 解析数据:将网页中的所有信息进行解析,抓取想要的数据
  3. 关键难点:爬虫和反爬虫之间的博弈

二、爬虫的分类

  1. 通用网络爬虫(Scalable Web Crawler):主要为门户站点搜索引擎和大型Web服务提供商采集数据。缺点是抓取到的数据大多是无用的,并且因为其商业性,例如百度就可以进行竞价排名,影响用户需求的精准度。

  2. 聚焦网络爬虫(Focused Crawler):根据需求,实现爬虫程序,抓取需要的数据。和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。这也是程序员主要学习的类型。

    设计思路:

    1. 确定要爬的url
    2. 模拟浏览器通过http协议访问url,获取服务器返回的html页面
    3. 解析html字符串

三、反爬手段

  1. User-Agent
  2. 代理IP
  3. 验证码
  4. 动态加载网页
  5. 数据加密

四、urllib库的简单使用

urllib是python自带的一个库,无需手动下载。我们可以用urllib.request.urlopen()方法爬取某个url。

这里做一个小提醒,是我做的一件很蠢的事情,大神请忽略。。我首先创建了一个项目,然后在项目下创建了一个py文件,想着是学习urllib库,干脆就起名urllib.py吧。因为urllib是python自带的库,直接import urllib.request。咦!怎么回事,怎么导入语句老是报错!拼写明明没有问题。找了很久才发现问题,这里记录下来避免再犯同样的蠢问题:py文件的命名一定不要和库重名,这样程序不知道导入哪一个会起冲突。

言归正传,具体步骤为:

  1. 拿到url,即要爬取的地址,以百度为例
import urllib.request

url = "http://www.baidu.com"
  1. 模拟浏览器向服务器发送请求
res = urllib.request.urlopen(url)
  1. 使用read()方法获取响应中页面的源码
content = res.read()
  1. 打印数据(页面源码)
print(content)

结果如下,发现问题,根本不是人能读懂的东西。。
在这里插入图片描述
可以发现打印的内容中以’b’开头。在python里,以b开头的字符串是字节(bytes)类型,这是因为read()方法返回的就是字节形式的二进制数据,很明显不是我们想要的,我们需要改变她的编码格式,从而可读。

处理方法很简单,在read()函数后再添加一个decode(‘utf-8’)即可。及将二进制字符串解码为‘utf-8’编码形式。

完整代码如下:

import urllib.request

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

res = urllib.request.urlopen(url)

content = res.read().decode('utf-8')

print(content)

最终结果如下图,也有了中文,是我们需要的页面源码,之后就可以进行解析了。
在这里插入图片描述


总结

爬虫的应用十分广泛,给自己立个flag,坚持学习做到日更。本节主要是简单总结了爬虫的基础知识,还有使用urllib库完成了爬虫的第一步——爬取页面,继续加油!欢迎交流指导!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

湫兮如风i

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

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

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

打赏作者

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

抵扣说明:

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

余额充值