【Python基础】爬取豆瓣电影Top250+爬取知乎专栏文章标题

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨

📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】

📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉

📢:内容若有错误,敬请留言 📝指正!原创文,转载请注明出处

文章目录

  • 一、Python爬虫基础知识
    • [1. 什么是爬虫?](#1. 什么是爬虫?)
    • [2. 爬虫的基本原理](#2. 爬虫的基本原理)
    • [3. 爬虫的技术栈](#3. 爬虫的技术栈)
    • [4. 爬虫的对象](#4. 爬虫的对象)
    • [5. 爬虫的使用及环境依赖构建](#5. 爬虫的使用及环境依赖构建)
  • 二、Python爬虫实例
    • [1. 爬取豆瓣电影Top250](#1. 爬取豆瓣电影Top250)
    • [2. 爬取知乎专栏文章标题](#2. 爬取知乎专栏文章标题)
  • 三、反爬机制

一、Python爬虫基础知识

1. 什么是爬虫?

爬虫是一种自动获取网页内容的程序,它可以从互联网上抓取所需的信息。爬虫可以用于各种场景,如数据挖掘、信息收集等。

2. 爬虫的基本原理

爬虫的基本原理是通过发送HTTP请求(如GET或POST)来获取网页内容,然后解析网页内容,提取所需信息。常用的解析方法有正则表达式、BeautifulSoup和XPath等。

3. 爬虫的技术栈

常见的爬虫技术栈包括:

  • 编程语言:Python
  • 网络库:requests、urllib
  • 解析库:BeautifulSoup、lxml、re
  • 数据库:MySQL、MongoDB
  • 框架:Scrapy、PySpider

4. 爬虫的对象

爬虫对象主要包括以下几个部分:

  • 用户代理:模拟浏览器访问,避免被网站识别为爬虫。
  • 请求头:设置请求头,模拟浏览器行为。
  • 请求方法:如GET、POST等。
  • 请求参数:如URL参数、表单参数等。
  • 响应对象:包含响应状态码、响应头、响应内容等信息。

5. 爬虫的使用及环境依赖构建

使用爬虫需要先安装相关库,如requests、BeautifulSoup等。可以使用pip进行安装:

bash 复制代码
pip install requests
pip install beautifulsoup4

二、Python爬虫实例

1. 爬取豆瓣电影Top250

目标网址:https://movie.douban.com/top250

代码实现:

python 复制代码
import requests
from bs4 import BeautifulSoup

def get_movie_info(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    movie_list = soup.find('ol', class_='grid_view')
    for movie_li in movie_list.find_all('li'):
        detail = movie_li.find('div', class_='hd')
        movie_name = detail.find('span', class_='title').text
        movie_url = detail.a['href']
        print(movie_name, movie_url)

if __name__ == '__main__':
    base_url = 'https://movie.douban.com/top250?start='
    for i in range(0, 250, 25):
        url = base_url + str(i)
        get_movie_info(url)

2. 爬取知乎专栏文章标题

目标网址:https://zhuanlan.zhihu.com/p/xxxx

代码实现:

python 复制代码
import requests
from bs4 import BeautifulSoup

def get_article_title(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    title = soup.find('h1', class_='Post-Title').text
    print(title)

if __name__ == '__main__':
    url = 'https://zhuanlan.zhihu.com/p/xxxx'
    get_article_title(url)

三、反爬机制

  1. IP限制:网站会限制同一IP地址的访问次数,超过限制后需要更换IP地址。
  2. User-Agent检测:网站会检测请求头中的User-Agent,如果发现是爬虫,可能会拒绝访问。可以通过设置不同的User-Agent来绕过检测。
  3. Cookie和Session:网站会使用Cookie和Session来识别用户,可以通过模拟登录或者使用cookie池来绕过识别。
  4. 验证码和滑块验证:网站会使用验证码和滑块验证来防止自动化操作,可以通过OCR识别或者模拟滑动滑块来绕过验证。
相关推荐
骑着蜗牛撵大象3276 分钟前
AI Agent 工程化开发实战(三):用 StateGraph 给智能体搭一条可回放的状态流水线
java·开发语言·jvm·ai·状态管理·langgraph·stategraph
itmigrate21 分钟前
Rust 里的所有权误区:不是不写 clone 就叫高性能
开发语言·后端·rust
Brilliantwxx27 分钟前
【Linux】 文件访问与路径解析:目录、文件名、dentry、路径缓冲与 dcache 全解析
linux·运维·服务器·开发语言·spring
摇滚侠1 小时前
《On Java 中文版 基础卷》阅读笔记 初始化和清理 08
java·开发语言·笔记
xiangyun611 小时前
C++ 手撕 shared_ptr:引用计数与控制块到底长什么样?
开发语言·c++·算法·面试·stl
专注仿真1 小时前
Agentic RAG算法详解
人工智能·python·大模型训练·控制算法
XiYang-DING1 小时前
P4009.和为K的子数组个数 & P5522.异或和为 k 的子数组个数
java·开发语言
学习论之费曼学习法1 小时前
无人值守AI内容矩阵实战(8):标题 A/B 实验的 6 个工程实现细节,隔日对比与自动判胜
人工智能·python·算法·矩阵·自动化·a/b测试·内容矩阵
东哥16881 小时前
我用 DeepSeek 做了 4 个零依赖的赚钱小工具,全部开源
python·开源·deepseek
Carl_奕然1 小时前
【机器视觉】最强算法之:3D高斯泼溅(3D Gaussian Splatting)
人工智能·python·算法·目标检测·计算机视觉·3d