Skip to content

python爬虫快速入门

爬虫介绍

image-20241231213918847

什么是网络爬虫?

网络爬虫(又称为 网页蜘蛛,网络机器人,在 一定的规则,自动地抓取 万维网信息的 模拟程序或者蠕虫。 比如百度 FOAF社区中间,更经常的称为网页追逐者),是一种按照 程序或者脚本。另外一些不常使用的名字还有蚂蚁、 自动索引、 www.baidu.com 搜索引擎的所有检索内容,都是百度的很多蜘蛛去万维网上去抓取,以及进 行持久化存储,用户通过百度搜索框,输入想要搜索的内容,百度服务器再通过算法检索出最相关,最 佳的内容显示给搜索结果页面给用户展示。

网络爬虫的核心工作内容

网络爬核心工作内容是去目标站点爬取网页,将网页中我们需要的内容进行解析,最后保存,比如保存 到Excel,数据库等。

网络爬虫的用途

应用场景1:搜索引擎抓取网页信息。

不知道大家对于Google、百度这种搜索引擎的工作原理都了解多少,搜索引擎的首要工作流程就是利用 网络爬虫去爬取各个网站的页面。以百度蜘蛛为例,一旦有网站的页面更新了,百度蜘蛛就会出动,然 后把爬取的页面信息搬回百度,再进行多次的筛选和整理。最终在大家搜索相关信息的时候,通过排名 呈现给大家。可以说,没有网络爬虫,我们使用搜索引擎查询资料的时候,就不会那么便捷、全面和高 效。

应用场景2:爬取需要数据进行统计。

冷数据启动时丰富数据的主要工具,新业务开始时,由于刚起步,所以没有多少数据,此时就需要爬取 其他平台的数据来填充我们的业务数据。比如说,如果我们想做一个类似大众点评这样的平台,一开始 没有商户等信息,就需要去爬取大众,美团等商家的信息来填充数据,比如天眼查,企查查,西瓜数据 等等。

应用场景3:出行类软件通过爬虫抢票。

如果问网络爬虫技术应用最多的领域是什么?那一定是出行行业。相信每逢春运或是节假日,大家都用 过一些抢票的软件,就为了获得一张机票或者是一张火车票,而这种出行类软件正是运用网络爬虫技术 来达到抢票的目的。像抢票软件这样的网络爬虫,会不停地爬取交通出行的售票网站,一旦有票就会点 击拍下来,放到自己的网站售卖。如果一定时间内没有人购买,就又会自动退票。然后又通过网站爬虫 把票拍下来,到时间又继续退票,如此反复循环。

应用场景4:聚合平台整合信息进行比较。

如今,出现了很多比价平台、聚合电商还有返利平台等等给,这类聚合平台的本质都是提供横向数据比 较,聚合服。比如说电商中经常需要有一种比价系统,从各大电商平台,如拼多多,淘宝,京东等抓取 同一个商品的价格信息,以给用户提供最实惠的商品价格,这样就需要利用网络爬虫从各大电商平台爬 取信息。

应用场景5:爬取个人信用信息

黑产,灰产,风控等,比如我们要向某些资金方申请授信,在资金方这边首先要部署一道风控,来看你 的个人信息是否满足授信条件,这些个人信息通常是某些公司利用爬虫技术在各个渠道爬取而来的,当 然了这类场景还是要慎用,不然正应了那句话“爬虫用的好,监牢进得早”。

Python的爬虫技术

爬虫的总流程可以理解为:蜘蛛要抓某个猎物-->沿着蛛丝找到猎物-->吃到猎物;即爬取-->解析-->存 储;

在爬取数据过程中所需参考工具如下:

请求库:urllib、requests、selenium

解析库:正则、xpath、jsonpath、beautifulsoup、pyquery

存储库:文件、MySQL、Mongodb、Redis……

爬虫框架:Scrapy

requests网络请求模块

requests模块简介及安装

Requests是一个优秀的Http开发库,支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文 件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码等

开源地址: https://github.com/psf/requests 中文官方文档: https://requests.readthedocs.io/projects/cn/zh_CN/latest/

request安装:

shell
pip install requests -i https://pypi.tuna.tsinghua.edu.cn/simple

测试

shell
import requests

r = requests.get("http://www.baidu.com")

# r = requests.get("http://www.baidu.com/s?wd=宝马")

# 设置返回对象的编码
r.encoding = "utf-8"
# 查看返回的响应状态码
print(r.status_code)
# 获取网页内容
print(r.text)
# 查看返回对象类型
print(type(r))

requests之get请求实例-百度搜索

requests之post请求实例-百度翻译

requests之代理

很多网站和应用都有反爬虫策略,我们频繁的访问,一旦触发反爬虫策略,我们的IP就会被封掉。 我们为了应对反爬虫,可以使用代理。

代理IP能划分成高度匿名代理(以下简称:高匿)、普通匿名代理(以下简称:普匿)和透明代理三 类,通过名字相信大家也猜出了每个级别的匿名程度是:

高匿 > 普匿 > 透明。

  1. 透明代理IP:顾名思义,服务器知道你在使用代理IP,并且也知道你的真实IP。
  2. 普匿代理IP:普匿代理IP要比透明代理IP好一些,但是对方服务器仍然会知道你使用了代理。
  3. 高匿代理IP:高匿代理IP不仅可以保护你的IP地址,并且不会改变你的访问请求,让对方服务器毫无 察觉,不知道你使用了代理。因此,高匿代理的效果是最好的。

所以我们使用代理IP,建议用高匿代理IP,效果好。 推荐一个不错的代理IP商-快代理 https://www.kuaidaili.com/

测试代码:

shell
# 代理   频繁访问 可能会被反爬虫给封掉 ip 所以 使用代码
# cip.cc   查看你得 ip
import requests

url = "http://www.cip.cc/"
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0',

}

proxy = {
    "http": "8.130.34.44:8800"
}

r = requests.get(url=url, headers=headers, proxies=proxy)
r.encoding = "utf-8"
print(r.status_code)
print(r.text)

with open('proxy.html', 'w', encoding='utf-8') as fp:
    fp.write(r.text)

生成的proxy.html里会显示代理IP地址。

requests之Cookie

在某些需要登录的网站或者或者应用,假如我们需要抓取登录后的内容,技术上本质通过session会话实 现。服务器端存会话信息,浏览器通过Cookie携带客户端访问用户信息,来实现会话机制。

requests对Cookie有很好的支持。

requests之Session

BeautifulSoup网页解析模块

beautifulsoup模块简介及安装

简单来说,Beautiful Soup 是 python 的一个库,最主要的功能是从网页抓取数据。官方解释如下:

Beautiful Soup 提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它 是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以 写出一个完整的应用程序。 Beautiful Soup 自动将输入文档转换为 Unicode 编码,输出文档转换 为 utf-8 编码。你不需要考虑编码方式,除非文档没有指定一个编码方式,这时,Beautiful Soup 就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。 Beautiful Soup 已成为和 lxml、html6lib 一样出色的 python 解释器,为用户灵活地提供不同的解析策略或 强劲的速度。

beautifulsoup可以简称bs4

beautifulsoup安装

shell
 pip install beautifulsoup4 -i https://pypi.tuna.tsinghua.edu.cn/simple

beautifulsoup解析本地文件之基础语法

beautifulsoup支持解析本地文件和网络文件,需要注意的是在实例化 BeautifulSoup 对象时, “html.parser” 是一个解析器,用于解析 HTML 代码,可以使用其他解析器,如 lxml、html5lib 等

通过 bs4 对象,可以使用多种方式来获取 HTML 中的元素信息,包括标签名、属性、文本等。 首先准备一个测试文件test.html

selenium动态网页解析模块

selenium模块简介

有些网站的数据是js动态渲染的,我们无法通过网页源码直接找到数据,只能通过找接口方式来获取数 据,但是很多时候,数据又是json格式的,给我们爬数据增加成本。

比如 https://www.csdn.net/ 这个网站 就是js动态渲染的首页数据。

这时候,使用selenium,我们可以通过模拟真实浏览器的用户操作行为,来获取js动态渲染后的网页数 据,在进行解析网页,获取我们需要的数据。能大大提高我们的抓取效率。

Selenium是一个用于Web 应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户 在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11), Mozilla Firefox, Safari, Google Chrome, Opera, Edge等。

我们使用Selenium,模拟浏览器功能,自动执行网页中的js代码,实现动态加载,然后再进行数据抓 取。

selenium驱动下载,模块安装以及基本使用

selenium元素的定位

selenium获取元素信息

selenium交互

selenium无界面headless

Chrome-headless 模式, Google 针对 Chrome 浏览器 59版 新增加的一种模式,可以让你不打开UI界 面的情况下使用 Chrome 浏览器,所以运行效果与 Chrome 保持完美一致,因此速度快与要打开界面的 selenium,其使用方法和selenium一样。

1.爬取网易云音乐

2.爬取图片

3.爬取列表数据并写入excel

安装

pip install pandas -i https://pypi.tuna.tsinghua.edu.cn/simple