简单爬虫的通用步骤

本文介绍了Python爬虫的基本步骤,包括使用requests库获取数据、火狐浏览器开发者工具的运用、参数设置、提取数据(文字、图片)、处理动态加载内容以及高效抓取策略。讲解了多线程、多进程和分布式爬虫的概念,最后讨论了反爬虫策略,如动态加载、验证码、登录和cookie管理。提供了一些实用技巧和学习资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文首发:ZKeeer’s Blog——简单爬虫的通用步骤
多图预警,长文预警
不详细的部分,后面会陆续补充
知识点很多,适合小白,大神绕路
欢迎转载
填坑系列一:简单爬虫的通用步骤——多线程/多进程爬虫示例
填坑系列二:待定
.
.
.

这里写图片描述

1.获取数据

爬虫,就是要千方百计地装成浏览器从网站骗数据。——我说的

1.1从requests.get()说起

最开始一个简单的爬虫就是调用python的requests模块,使用get函数。(为了不祸害别人网站,我以自己的网站为例)

import requests
url_response = requests.get("http://zkeeer.space")
print(url_response.status_code, url_response.text)

这里get函数从给出的URL获取数据,打印出状态码和获取的内容看看。

200 <!DOCTYPE html>
<html lang="zh-CN">
 <head>......

状态码200,说明平稳落地。后面是获取到的网页。

这里要说明一点,url_response.text 和 url_response.content的区别:

.text返回的是Unicode类型,.content返回的是bytes型也就是传说的二进制的数据。当需要的数据是文本时,最好用.text,当你需要下载图片时,要用.content

上面是.text返回的值,下面打印出来.content的值让大家看看。

200 b'<!DOCTYPE html>\r\n<html lang="zh-CN">\r\n <head>

看到前面的小b以及后面赤裸裸的\r\n了么?

我的博客挺简单没有那么大访问量,也不需要限制访问量,也不需要严查你的IP,UserAgent,Cookie等。当你需要大量,高频次访问,而且访问的还是淘宝这样的商业网站,这时候你就需要伪装了,不能只是赤裸裸的用个get加个url,就向网站大喊:“我!浏览器!给数据!” 也就我的博客这么好心给你,淘宝早就会“淘宝不想理你,并向你扔了个大创可贴”。

1.2学会使用火狐浏览器开发者工具

如何伪装一个浏览器?

学习当然都是从模仿开始——也是我说的!

这里使用的是火狐浏览器开发者工具,别听这么高大上,其实就是打开火狐浏览器按F12!

第一步输入网址进入我的博客,http://zkeeer.space 然后按F12,找到网络这一栏。它会提示你重新载入,那就按一下F5,刷新一下。
这里写图片描述

注意以下几栏。然后找到并点开我们需要的,也就是第一个
这里写图片描述

右侧会出来对应的详细信息。包括:消息头,Cookie,参数,响应,耗时,堆栈跟踪。

首先requests.get(url, params=None, **kwargs),下面的顺序按照参数顺序,一一来。

1.3requests.get()参数一:url

消息头这一栏给出的请求方法是GET,即请求时使用requests.get(),如果这里是POST,对应使用requests.post()。get函数的url,即请求头的Host,这里是“zkeeer.space”
这里写图片描述

1.4requests.get()参数二:params
get(url, params=None, **kwargs)中params,是构成网址中一些参数,网址链接“?”后面的那些参数。举个栗子:我的一篇文章链接是http://zkeeer.space/?p=383 那么后面p=383就是get 的参数(当然你也可以直接访问http://zkeeer.space/?p=383,而不需要参数)。

这里写图片描述

需要把这里列举的参数都写到params里面,哪怕是该参数没有值。
那么一开头我们那几行代码就应该这么写了。

import requests

tar_url = "http://zkeeer.space"  # 目标网页
param = {"p": 383}  # 请求头的参数
url_response = requests.get(url=tar_url, params=param)
print(url_response.status_code, url_response.text)

这样获取到的页面就是“zkeeer.space/?p=383”对应的文章了。
这里写图片描述

1.5requests.get()参数三:headers
可能会有疑问,get(url, params=None, **kwargs)并没有headers这个参数啊。这个包含在**kwargs里面,同样还有另一常用的proxies,待会儿会说到。

headers应该写什么呢?下图所示的消息头中的请求头即是这里的headers参数。
这里写图片描述

跟参数一样,需要把请求头的所有信息写入headers(如果网站不查cookie的话,cookie没必要写)。如果对这些参数不了解,可以点击后面对应的详细了解,介绍的很详细。

上面的几行代码又要进

### 爬虫开发基本步骤 爬虫是指向网站发起请求,获取资源后分析并提取有用数据的程序。从技术层面上讲,这是通过程序模拟浏览器请求站点的行为,把站点返回的各种形式的数据抓取到本地,再进一步处理这些数据[^4]。 #### 发起请求 使用HTTP库像`requests`这样的工具来向目标网址发送请求。这个过程中构建了一个包含请求头和其他必要参数在内的Request对象。需要注意的是,某些情况下,普通的HTTP库可能无法执行JavaScript或CSS代码,这可能会限制能够访问的内容种类。 ```python import requests url = 'http://example.com' headers = {'User-Agent': 'Mozilla/5.0'} response = requests.get(url, headers=headers) ``` #### 获取响应内容 一旦服务器接收到请求并且成功回应,就会返回一个包含了HTML文档、JSON结构化数据或是多媒体文件等内容类型的Response对象。开发者可以根据实际需求从中抽取特定的信息片段。 #### 解析与提取数据 对于获得的网页源码或其他格式的数据,通常需要利用专门设计用来解析这类结构化的工具来进行信息挖掘工作。例如,在面对HTML时可以选择BeautifulSoup或者lxml库;如果是API接口返回的JSON,则可以直接调用Python内置的方法读取字典键值对[^1]。 ```python from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'html.parser') data = soup.find_all('div', class_='content') # 假设我们要找所有的<div>标签且class属性为'content' ``` #### 存储数据 最后一步是将经过筛选后的有价值资料保存下来以便后续分析使用。常见的做法有写入CSV表格、存入关系型数据库如MySQL或者是NoSQL存储方案比如MongoDB等。 ```python with open('output.csv', mode='w', newline='', encoding='utf-8') as file: writer = csv.writer(file) for item in data: row = [item.get_text(strip=True)] writer.writerow(row) ``` ### Scrapy框架下的具体操作指南 当采用Scrapy这一流行的开源Web爬取框架时,除了上述通用流程外还需要遵循其特有的命令集完成项目初始化以及Spider类定义等工作。例如,可以通过运行`scrapy genspider spider_name http://example.com`来自动生成一个新的爬虫模板文件[^2]。
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值