Python爬虫入门:7个实用案例带你从零开始(附完整源码)

包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】

作为数据采集的利器,Python爬虫技术越来越受到开发者关注。本文将带你从零开始学习Python爬虫,通过7个由浅入深的实战案例,掌握requests、BeautifulSoup、Scrapy等核心库的使用技巧。

一、爬虫基础准备
在开始前,请确保已安装以下库:

pip install requests beautifulsoup4 lxml selenium scrapy

案例1:获取网页源代码(基础版)

import requests

url = "https://www.example.com"
response = requests.get(url)
print(response.text)  # 打印网页HTML源码

技术点:

requests.get()发起HTTP GET请求

response.text获取网页文本内容

案例2:解析HTML提取数据(BeautifulSoup版)

from bs4 import BeautifulSoup
import requests

url = "https://books.toscrape.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')

# 提取所有图书标题
titles = soup.find_all('h3')
for title in titles:
    print(title.a['title'])

技术点:

BeautifulSoup解析HTML文档

find_all()查找所有匹配标签

CSS选择器提取特定属性

案例3:分页爬取数据(翻页处理)

import requests
from bs4 import BeautifulSoup

base_url = "https://quotes.toscrape.com/page/{}/"

for page in range(1, 6):  # 爬取前5页
    url = base_url.format(page)
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'lxml')
    
    quotes = soup.find_all('span', class_='text')
    for quote in quotes:
        print(quote.text)

技术点:

URL格式化处理分页

循环控制爬取页数

案例4:模拟登录(Session保持)

import requests

login_url = "https://www.example.com/login"
data = {
    'username': 'your_username',
    'password': 'your_password'
}

session = requests.Session()
session.post(login_url, data=data)

# 登录后访问需要认证的页面
profile_url = "https://www.example.com/profile"
response = session.get(profile_url)
print(response.text)

技术点:

Session对象保持登录状态

POST请求提交表单数据

案例5:动态页面爬取(Selenium版)

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

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

# 搜索商品
search_box = driver.find_element(By.ID, "key")
search_box.send_keys("Python书籍")
search_box.submit()

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

# 获取商品列表
items = driver.find_elements(By.CLASS_NAME, "gl-item")
for item in items:
    print(item.text)

driver.quit()

技术点:

Selenium模拟浏览器操作

元素定位与交互

显式/隐式等待

案例6:Scrapy框架爬虫(专业版)
创建Scrapy项目:

scrapy startproject book_spider

编写爬虫文件:

import scrapy

class BookSpider(scrapy.Spider):
    name = 'books'
    start_urls = ['https://books.toscrape.com/']
    
    def parse(self, response):
        for book in response.css('article.product_pod'):
            yield {
                'title': book.css('h3 a::attr(title)').get(),
                'price': book.css('p.price_color::text').get()
            }
        
        # 自动处理分页
        next_page = response.css('li.next a::attr(href)').get()
        if next_page:
            yield response.follow(next_page, callback=self.parse)

技术点:

Scrapy项目结构

CSS选择器提取数据

自动跟进链接

案例7:数据存储(MongoDB版)

import pymongo
from case6_scrapy import BookSpider
from scrapy.crawler import CrawlerProcess

# MongoDB配置
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["book_db"]
collection = db["books"]

# 自定义Pipeline存储数据
class MongoPipeline:
    def process_item(self, item, spider):
        collection.insert_one(dict(item))
        return item

# 运行爬虫
process = CrawlerProcess(settings={
    'ITEM_PIPELINES': {'__main__.MongoPipeline': 1}
})
process.crawl(BookSpider)
process.start()

技术点:

MongoDB连接与操作

Scrapy Pipeline数据处理

数据持久化存储

爬虫进阶技巧
反爬应对策略:

设置请求头(User-Agent)

使用代理IP

随机延迟请求

处理验证码

性能优化:

异步请求(aiohttp)

分布式爬虫(Scrapy-Redis)

增量爬取

法律与道德:

遵守robots.txt协议

限制请求频率

不爬取敏感数据

【完整源码获取】

最后:
希望你编程学习上不急不躁,按照计划有条不紊推进,把任何一件事做到极致,都是不容易的,加油,努力!相信自己!

文末福利
最后这里免费分享给大家一份Python全套学习资料,希望能帮到那些不满现状,想提升自己却又没有方向的朋友,也可以和我一起来学习交流呀。

包含编程资料、学习路线图、源代码、软件安装包等!【点击这里】领取!
① Python所有方向的学习路线图,清楚各个方向要学什么东西
② 100多节Python课程视频,涵盖必备基础、爬虫和数据分析
③ 100多个Python实战案例,学习不再是只会理论
④ 华为出品独家Python漫画教程,手机也能学习

Python爬虫入门:7个实用案例带你从零开始(附完整源码)_第1张图片

你可能感兴趣的:(Python爬虫入门:7个实用案例带你从零开始(附完整源码))