Python爬虫冲吖~

本文详细指导了如何安装Python和PyCharm,介绍了爬虫的基本流程,包括使用HTTP请求库requests和BeautifulSoup解析HTML。还强调了爬虫道德和最佳实践,如合理请求频率和遵循robots.txt协议。以抓取豆瓣电影Top250为例,展示了实际操作。

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

〇、安装Python解释器

Python程序一般是翻译一行,执行一行。

一、安装pycharm集成开发环境

二、了解python基础

三、爬虫的流程

写一个爬虫程序的步骤:

  1. 获取网页内容
    通过代码给一个网站服务器发送请求,服务器返回网页内容。
    (浏览器的作用与此相同,之后会将网页内容渲染展示)
  2. 解析网页内容
    把想要的内容提取出来
  3. 储存或分析数据
    看具体需求:收集数据集(将数据储存进数据库);分析数据趋势(把数据做成可视化图表);舆情监控(使用AI做做文本情绪分析)。

必须遵守的规则
不要爬取公民隐私数据
不要爬取受著作权保护的内容
不要爬取国家事务、国防建设、尖端科学技术领域的计算机系统等

保证自己写的虫是一只温和善良的虫

  • 请求数量和频率不能过高(否则无异于DDos攻击【通过给服务器发送海量高频的请求,抢占资源,其他用户访问受限】);
  • 网站有明显的反爬限制(需登录或者有验证码),不要强行突破;
  • 可以通过查看网站的robots.txt文件,了解可爬取的网页路径范围。

所需知识:

  • HTTP请求
  • python request库
  • HTML网页结构
  • python Beautiful Soup库

四、HTTP请求和响应

HTTP(Hypertext Transfer Protocol)超文本传输协议:是一种客户端和服务器之间的请求协议。

Get方法(用于获得数据)和Post方法(用于创建数据)

HTTP请求分为请求行、请求头和请求体三部分组成:

请求行:
POST /user/info HTTP/1.1
方法类型、资源路径(查询参数)和协议版本
请求头:
Host:www.example.com
主机域名【主机域名和请求行中的资源路径可以得到一个完整的网址】
User-Agent:curl/7.77.0
用于告知服务器客户端的相关信息,请求来自浏览器还是其他方式发出。
Accpet:*/*
告诉服务器客户端想接收的响应数据是什么类型的,多种类型用逗号分隔 
*/*表示什么类型都可以
请求体:
{"username":"laomao",
"email":"laomao@csdn.com"}
get的请求体一般为空

HTTP响应由状态行、响应头和响应体三个部分组成:

状态行:
HTTP/1.1 200 OK
协议版本、状态码、状态消息
状态码【2开头成功、3开头需要进一步操作、4开头客户端错误、5开头服务器错误】
响应头:
Date:Fri,27 Jan 2024 02:10:48 GMT
Content-Type:text/html;charset=utf-8
时间和响应数据类型
响应体:
<!DOCTYPE html>
	<head><title>首页</title></head>
	<body><h1>老猫加油鸭!</h1><p>小路冲吖!</p></body>
<html>
服务器给客户端的数据内容

五、python request库

在终端输入 pip install requests(Mac输入pip3 install requests)

import requests
# 定义请求头
headers = {
	"User-Agent""XXX"
}
response = requests.get("https://movie.douban.com/top250",headers=headers)
print(response.status_code)
print(response.text)

六、HTML网页结构

关注更多html课程即可!

七、Beautiful Soup库

用于解析网页内容
安装 pip install bs4
引入 from bs4 import BeautifulSoup

八、实战,获取豆瓣电影TOP250

import requests
from bs4 import BeautifulSoup
# 将爬虫伪装为浏览器
headers = {
	"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Edg/123.0.0.0"
}
for start_num in range(0, 250, 25):
	response = requests.get(f"https://movie.doban.com/top250?start={start_num}", headers=headers)
	html = response.text
	soup = BeautifulSoup(html, "html.parser")
	all_titles = soup.findAll("span", attrs={"class": "title"})
	for title in all_titles:
		title_string = title.string
		if "/" not in title_string:
			print(title_string)

可以通过正则表达式根据自定义规则匹配一个或多个目标;
使用多线程增加爬虫程序的效率。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值