Python---爬虫

文章目录


前言

Python爬虫是一种通过自动化程序爬取互联网上的信息的技术。爬虫可以自动访问网页并提取所需的数据,比如网站的文本、图片、视频等。Python是一种简单易学的编程语言,广泛用于开发爬虫程序。


一.requests模块

requests模块可以用于发送GET、POST、PUT、DELETE等各种类型的HTTP请求,并且可以处理URL参数、请求头、响应内容等。

常用函数:

请求函数

  • 发送GET请求,并返回一个Response对象
requests.get(url)
  • 发送POST请求,并返回一个Response对象
requests.post(url)

响应函数 

  • 获取响应的文本内容
response.text
  •  以字节(bytes)形式获取响应体的内容
response.content
  •  获取Http响应的状态码
response.status_code
  •  获取Http响应的头部信息
response.headers
  •  获取响应的JSON格式数据
response.json()

 二.re模块

re模块是Python中的正则表达式模块,它提供了对字符串进行模式匹配和替换的功能。

  • 返回字符串中所有与正则表达式匹配的非重叠模式的列表。
re.findall(pattern, string)

三. 爬虫模板

第一步:安装必要的库如:requests库

 第二步:在爬取站点页面右键检查,查找User-Agent内容,如下图

 

第三步:使用requests库向目标网页发送请求,并获取网页的HTML内容

import requests  
  
header = {"User-Agent":"..."} 填入请求报文中User-Agent内容
url = 'http://example.com'  
response = requests.get(url,headers=header)   
response.encoding = 'utf-8'   如果有需要,设置正确的编码  
html_content = response.text  获取响应文本内容

 爬虫案例

下面通过爬取站点​​​​​​ https://pic.netbian.com/的图片做一个演示。

  • 第一步:发送Http请求访问需要爬取的网站
import re
import requests
import os
header = {"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36 Edg/128.0.0.0"}
response = requests.get("https://pic.netbian.com/",headers=header)
#防止乱码对response返回数据进行解码
response.encoding = response.apparent_encoding
print(response.text)

  •  第二步:利用正则表达式筛选出图片链接的相对路径
#利用正则表达式匹配以字符串 /uploads/allimg/ 开头,后面跟着一个或多个非双引号(")字符的序列
#此处findall函数会找出所有以/uploads/allimg/开头的图片链接的相对路径
image = re.findall("/uploads/allimg/[^\"]+",response.text)

  • 第三步: 创建图片链接的绝对路径

如下图,不难发现第二步获取的图片链接与图片源中的链接还有差别,此时需要我们将获取的相对链接扩展为绝对链接

#image获取的是图片链接的相对路径,绝对路径需要添加https://pic.netbian.com/
#创建空列表link用于存储图片链接的绝对路径
link = []
#利用for循将图片链接的绝对路径添加到空列表link中
for i in image:
    link.append("https://pic.netbian.com/"+i)

 

  •  第四步:创建用于保存爬取图片的文件并保存爬取图片
#for循环每次遍历一个图片链接
for i in range(1,len(link)+1):
    #遍历的同时创建一个保存图片的文件
    with open(f"爬虫/image{i}.jpg.","wb") as img:
        #向图片链接发送Http请求
        res = requests.get(link[i - 1])
        #将返回的字节数据写入文件
        img.write(res.content)
        img.close()

整体代码演示:

import re
import requests
import os
header = {"User-Agent":"Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Mobile Safari/537.36 Edg/128.0.0.0"}
response = requests.get("https://pic.netbian.com/",headers=header)
response.encoding = response.apparent_encoding


image = re.findall("/uploads/allimg/[^\"]+",response.text)
link = []
for i in image:
    link.append("https://pic.netbian.com/"+i)

for i in range(1,len(link)+1):
    with open(f"爬虫/image{i}.jpg.","wb") as img:
        res = requests.get(link[i - 1])
        img.write(res.content)
        img.close()


 


总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

北 染 星 辰

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

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

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

打赏作者

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

抵扣说明:

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

余额充值