一、Python爬虫基本概念
网络爬虫,又称为网页蜘蛛或爬虫,是一种自动浏览万维网的程序。它按照一定的算法顺序抓取网页内容,同时将抓取到的数据存储起来,用于进一步的分析和处理。网络爬虫在信息获取、数据挖掘、搜索引擎构建等方面发挥着关键作用。
二、工作流程
- 确定目标网站:明确需要抓取数据的网站和具体页面。
- 分析网页结构:使用开发者工具查看网页的HTML结构,确定数据存放的位置。
- 编写爬虫代码:
- 使用Python的
requests
库进行网页请求。 - 使用
BeautifulSoup
、lxml
、PyQuery
等库进行HTML解析。
- 使用Python的
- 存储数据:将抓取的数据存储到数据库或文件中,如MySQL、MongoDB、CSV文件等。
- 遵守规则:在抓取过程中,要遵守目标网站的
robots.txt
文件规定,合法合规地进行数据抓取。
三、常用库
- 请求库:
requests
:简洁、强大的HTTP库,支持HTTP连接保持和连接池,支持SSL证书验证、Cookies等。aiohttp
:基于asyncio
的异步HTTP网络库,适用于需要高并发的爬虫场景。
- 解析库:
BeautifulSoup
:一个HTML和XML的解析库,简单易用,支持多种解析器。lxml
:一个高效的XML和HTML解析库,支持XPath和CSS选择器。PyQuery
:一个Python版的jQuery,语法与jQuery类似,易于上手。
- 存储库:
pandas
:一个强大的数据分析库,提供数据结构和数据分析工具,支持多种文件格式。SQLite
:一个轻量级的数据库,支持SQL查询,适用于小型爬虫项目。
四、实际案例
以下是一个使用requests
和BeautifulSoup
库爬取网页数据并保存到CSV文件的简单案例。
案例:爬取豆瓣电影Top250
目标:爬取豆瓣电影Top250的电影名称、评分和评价人数等信息,并将这些信息保存到CSV文件中。
步骤:
-
发送HTTP请求:使用
requests
库发送GET请求到豆瓣电影Top250的URL。 -
解析网页内容:使用
BeautifulSoup
库解析返回的HTML内容,找到包含电影信息的部分。 -
提取数据:通过BeautifulSoup的
find
和find_all
方法,提取电影名称、评分和评价人数等信息。 -
保存数据:将提取的数据写入CSV文件。
代码示例:
import requests
from bs4 import BeautifulSoup
import csv
# 请求URL
url = 'https://movie.douban.com/top250'
# 请求头部
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.36'
}
# 保存数据函数
def save_data():
f = open('douban_movie_top250.csv', 'a', newline='', encoding='utf-8-sig')
writer = csv.writer(f)
writer.writerow(['电影名称', '评分', '评价人数'])
for i in range(10): # 假设只爬取前10页数据
url = f'https://movie.douban.com/top250?start={i*25}&filter='
response = requests.get(url, headers=headers)
html = response.text
# 解析页面函数(这里简化处理,实际应更复杂)
soup = BeautifulSoup(html, 'lxml')
movie_list = soup.find('ol', class_='grid_view').find_all('li')
for movie in movie_list:
title = movie.find('div', class_='hd').find('span', class_='title').get_text()
rating_num = movie.find('div', class_='star').find('span', class_='rating_num').get_text()
comment_num = movie.find('div', class
原理:
爬虫通过模拟浏览器的行为,向目标网站发送请求(Request),并接收响应(Response)。响应内容通常包括HTML代码、JSON数据、图片、视频等,爬虫会解析这些内容,提取出需要的数据,并保存到本地文件或数据库中。
最后,如果你也想自学Python,可以关注我。我会把踩过的坑分享给你,让你不要踩坑,提高学习速度,还整理出了一套系统的学习路线,这套资料涵盖了诸多学习内容:开发工具,基础视频教程,项目实战源码,51本电子书籍,100道练习题等。相信可以帮助大家在最短的时间内,能达到事半功倍效果,用来复习也是非常不错的。