爬虫学习笔记

本文详细介绍了Python爬虫的工作原理和步骤,包括发送请求、解析HTML、存储数据,并通过具体案例展示了如何爬取重庆工商大学网站的图片。涉及到的库有requests、BeautifulSoup和lxml。爬虫首先获取网页内容,然后解析HTML寻找图片链接,最后将图片保存到本地。
摘要由CSDN通过智能技术生成

一、什么是爬虫?

爬虫的本质是一个向网站或URL发送请求,获取资源后分析并提取有用数据的应用程序。可用来获取文本数据,也可以用来下载图片或音乐等。爬虫可以验证超链接和HTML代码,用于网络抓取。网络搜索引擎等站点通过爬虫软件更新自身的网站内容或对其他网站的索引。

二、爬虫的工作步骤。

(一)、获取数据

根据提供的网址向服务器发出请求。

确定需要爬取数据的目标url以及发送请求(request)时所需要携带的数据和各种HTTP头部信息。发送请求时常用urlib库和安装的requests库。

(二)、解析数据

分析网页结构(html,网络请求)(先看第0个框架请求看所需要数据是否在HTML中找element,再找XHR动态刷新)

对返回的数据进行解析,提取需要的信息。

常用的数据解析的库有python自带的html.parser及安装的第三方库beautifulsoup4,lxml。

Beautifuisoup4是借助网页的结构和属性等特性来解析网页的工具,可以自动转换编码。

(三)、储存数据

对于提取的数据有时候需要对其进行清洗,有时会直接存入数据库,写入磁盘文件(如csv文件)或缓存。

当爬取的数据量较小时,可使用文档的形式存储,txt、json、csv等格式。

当数据量大时,可选用mysql去对一些数据进行存储。

三、爬虫实例(爬取重庆工商大学网址图片)

1.下载模块

在cmd中依次输入:

pip install requests
 pip install BeautifulSoup4
 pip install lxml

2,模块引入,设置一些基础变量

import re   # 正则模块
import requests  # 爬取网页内容需要的模块
from bs4 import BeautifulSoup  # 解析 HTML的模块 导入BS 
# bs4的解析插件模块
 
# 定义网址
weburl = r"https://www.ctbu.edu.cn/"
 
# 图片保存目录,事先建立好的目录。
dir = "images"
 
# 定义正则,用以判断图片地址是不是 http 开头的绝对地址。
reg = re.compile(r'^http',re.I)

3,利用requests模块,请求访问指定网址,获得HTML代码。

# 设置请求 headers,伪装浏览器 并接受中文数据
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36',
    'Accept-Language': "zh-CN,zh;q=0.9"
}
 
# 开始请求页面
req = requests.get( weburl, headers=headers )
req.encoding = req.apparent_encoding    # 设置接受的编码,免得乱码出现
 
# 如果状态码正确,就获取请求到的HTML代码
if req.status_code == 200:
    html = req.text   # str 数据 , w+

4.通过这些HTML代码,获取指定的图片地址。

# 用BS 解析HTML,获取图片地址
bs = BeautifulSoup( html ,'lxml')  # lxml 需要下载
images = bs.select("img")  # 找到页面中所有的img 标签
imgSrc = []
for img in images:
    # imgSrc.append( weburl+img.get("src") )
    url = img.get("src")
    if not reg.match(url):  # 如果图片开头没有 http ,说明这个是不完整的地址,就给它前面加上网址。获得一个完整的图片地址。
        imgSrc.append( weburl+url )
    else:
        imgSrc.append( url )
print( imgSrc)  # 获取所有的图片地址

5.利用for循环把所有的img标签的地址保存在列表imgSrc中,循环遍历图片地址list,依次使用·requests请求图片地址。

for i in imgSrc:
    imgName =  i.split( "/" )[-1]  # 获取图片的名字
    imgSaveDir = dir + "/" + imgName # 图片的存放地址
    imgRq = requests.get(i)       # 访问图片地址
    with open('imgSaveDir',"w+") as f:
        f.write( 'imgRq.content ')
print( "图片下载完毕" )

通过以上代码可爬取重庆工商大学网页的图片,修改网址,也可得到其他网页的图片。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值