包含编程籽料、学习路线图、爬虫代码、安装包等!【点击领取】
作为数据采集的利器,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漫画教程,手机也能学习

25万+

被折叠的 条评论
为什么被折叠?



