定义
爬虫(Web crawler),也被称为网络爬虫、网络蜘蛛或网络机器人,是一种自动化程序,用于浏览互联网并收集网页内容。
基本原理
爬虫的工作原理是通过发送HTTP请求从网页服务器获取网页的内容,然后解析网页并提取所需的数据。具体步骤如下:
-
发送HTTP请求:通过爬虫程序发送HTTP请求到目标网站的服务器,请求获取网页的内容。
-
接收网页内容:爬虫程序接收到服务器返回的网页内容,这通常是HTML、XML或JSON格式的文本。
-
解析网页:爬虫程序使用解析器(如解析库或正则表达式)对网页内容进行解析,提取出需要的数据,如文本、链接、图片地址等。
-
数据处理和存储:爬虫程序对提取的数据进行处理,进行清洗、筛选、转换等操作,然后将数据保存到数据库、文件或其他存储介质中。
-
进行下一步操作:根据需要,爬虫程序可以继续访问其他链接,深入爬取更多的网页内容,或者执行其他相关任务。
应用
爬虫主要应用于数据采集、搜索引擎、监测与分析、推荐系统、自动化任务等领域。通过爬虫,可以自动化地收集互联网上的信息,并进行数据分析和运用,从而为用户提供更丰富的服务和策略。
例子
对此网站进行爬取,首先需要分析源码,思考构造什么样的正则表达式
import requests
from bs4 import BeautifulSoup
import os
def download_image(url, save_dir):
# 发送HTTP请求下载图片
response = requests.get(url)
if response.status_code == 200:
# 提取图片文件名
filename = url.split("/")[-1]
# 拼接保存路径
save_path = os.path.join(save_dir, filename)
# 保存图片到本地文件夹
with open(save_path, "wb") as f:
f.write(response.content)
print(f"成功下载并保存图片: {filename}")
else:
print(f"下载图片失败: {url}, HTTP状态码: {response.status_code}")
# 指定目标网页的URL
url = "http://192.168.21.154/pythonSpider/"
# 发送HTTP请求获取网页内容
response = requests.get(url)
if response.status_code == 200:
# 使用BeautifulSoup解析网页内容
soup = BeautifulSoup(response.content, "html.parser")
# 指定保存图片的文件夹路径
save_dir = "./images"
# 创建保存图片的文件夹
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 提取并下载网页中的图片
images = soup.find_all("img")
for image in images:
image_url = url + image["src"]
download_image(image_url, save_dir)
else:
print(f"访问网页失败, HTTP状态码: {response.status_code}")
tips:爬虫的高效性与python的强大的库不可分离
进行爬虫开发时,可以使用多种Python库来实现不同的功能。以下是几个常用的库:
-
Requests:用于发送HTTP请求获取网页内容。
-
Beautiful Soup:用于解析HTML或XML网页内容,提取所需的数据。
-
Scrapy:一个高级的爬虫框架,提供了强大的功能和灵活性,用于构建大规模、高效的爬虫。