Python 爬虫案例

以下是一些常见的 Python 爬虫案例,涵盖了不同的应用场景和技术点:

  1. 简单网页内容爬取

案例:爬取网页标题和简介

import requests

from bs4 import BeautifulSoup

url = "https://www.runoob.com/"

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

title = soup.title.string

description = soup.find('meta', attrs={'name': 'description'})'content'

print(f"标题: {title}")

print(f"简介: {description}")

  1. 爬取图片

案例:爬取图片网站并下载图片

import os

import requests

from bs4 import BeautifulSoup

url = "https://unsplash.com/s/photos/nature"

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

创建文件夹存储图片

if not os.path.exists('images'):

os.makedirs('images')

找到所有图片标签

img_tags = soup.find_all('img')

for idx, img in enumerate(img_tags):

img_url = img'src'

下载图片

img_data = requests.get(img_url).content

with open(f'images/img_{idx}.jpg', 'wb') as handler:

handler.write(img_data)

  1. 爬取数据并存储

案例:爬取豆瓣电影 Top250 并存储到 CSV

import csv

import requests

from bs4 import BeautifulSoup

url = "https://movie.douban.com/top250"

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

movies = \[\]

for item in soup.select('.item'):

title = item.select('.title')0.get_text()

rating = item.select('.rating_num')0.get_text()

director = item.select('.bd p')0.get_text().split('\n')1.strip().split('/')0

movies.append(title, rating, director)

写入 CSV 文件

with open('douban_top250.csv', 'w', newline='', encoding='utf-8') as f:

writer = csv.writer(f)

writer.writerow('标题', '评分', '导演')

writer.writerows(movies)

  1. 动态网页爬取

案例:使用 Selenium 爬取动态加载的网页

from selenium import webdriver

from selenium.webdriver.common.by import By

from selenium.webdriver.common.keys import Keys

import time

启动浏览器

driver = webdriver.Chrome()

driver.get("https://www.jd.com")

搜索商品

search_box = driver.find_element(By.ID, 'key')

search_box.send_keys('笔记本电脑')

search_box.send_keys(Keys.RETURN)

time.sleep(3) # 等待页面加载

获取商品列表

products = driver.find_elements(By.CLASS_NAME, 'gl-item')

for product in products:

try:

name = product.find_element(By.CLASS_NAME, 'p-name').text

price = product.find_element(By.CLASS_NAME, 'p-price').text

print(f"商品: {name}, 价格: {price}")

except Exception as e:

print(e)

driver.quit()

  1. API 数据爬取

案例:爬取 GitHub API 数据

import requests

获取 Python 仓库信息

url = "https://api.github.com/search/repositories?q=language:python\&sort=stars"

response = requests.get(url)

data = response.json()

for item in data'items':

name = item'name'

description = item'description'

stars = item'stargazers_count'

print(f"仓库: {name}, 描述: {description}, 星数: {stars}")

  1. 爬取登录后的数据

案例:模拟登录并爬取数据

import requests

login_url = "https://example.com/login"

data_url = "https://example.com/dashboard"

登录信息

payload = {

'username': 'your_username',

'password': 'your_password'

}

使用会话保持登录状态

with requests.Session() as session:

发送登录请求

session.post(login_url, data=payload)

访问需要登录的页面

response = session.get(data_url)

print(response.text)

注意事项

  1. 遵守网站规则:在爬取之前,查看目标网站的 robots.txt 文件,了解哪些页面允许爬取。

  2. 设置合理的请求间隔:避免频繁请求导致服务器压力过大或被封禁。

  3. 处理反爬机制:如果遇到反爬,可以尝试使用代理 IP、设置请求头(User-Agent)等方法。

  4. 合法性:确保爬取的数据和行为符合法律法规。

这些案例可以帮助你快速上手 Python 爬虫开发,根据实际需求选择合适的技术和工具。

相关推荐
ServBay15 小时前
9 个 Python 第三方库推荐,不用 AI 都好像多出一个团队
后端·python
用户83562907805115 小时前
如何使用 Python 添加和管理 Excel 批注(完整示例)
后端·python
用户83562907805116 小时前
使用 Python 管理 Excel 工作表:创建、复制、删除与重命名
后端·python
荣码1 天前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑
java·python
用户8356290780512 天前
Python 操作 PDF 附件:添加、查看与管理指南
后端·python
宇宙之一粟2 天前
乐企版式文件生成平台
java·后端·python
学测绘的小杨3 天前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3103 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐3 天前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱3 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构