Python 爬虫基础教学

爬虫是自动从互联网上抓取数据的程序,Python 因其丰富的库和简洁语法成为爬虫开发的首选语言。下面我将介绍Python爬虫的基础知识。

一.基本组件

1. Requests库- 用于发送HTTP请求

2. BeautifulSoup库 - 用于解析HTML/XML文档

3. 正则表达式 - 用于提取特定模式的数据

二.安装必要库

bash

pip install requests beautifulsoup4 lxml

三.简单爬虫示例

python

import requests

from bs4 import BeautifulSoup

1. 发送HTTP请求获取网页内容

url = 'https://example.com'

response = requests.get(url)

检查请求是否成功

if response.status_code == 200:

2. 解析网页内容

soup = BeautifulSoup(response.text, 'lxml')

3. 提取所需数据

获取页面标题

title = soup.title.string

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

获取所有链接

links = soup.find_all('a')

for link in links:

print(link.get('href'))

else:

print(f"请求失败,状态码: {response.status_code}")

四.常用数据提取方法

python

通过标签名查找

soup.find('div') # 查找第一个div标签

soup.find_all('p') # 查找所有p标签

通过类名查找

soup.find_all(class_='class-name')

通过ID查找

soup.find(id='element-id')

通过CSS选择器查找

soup.select('div.content > p') # 查找div.content下的所有p标签

```

五.处理动态内容

对于JavaScript渲染的页面,可以使用Selenium:

python

from selenium import webdriver

from selenium.webdriver.common.by import By

driver = webdriver.Chrome()

driver.get('https://example.com')

等待页面加载完成

driver.implicitly_wait(10)

查找元素

element = driver.find_element(By.TAG_NAME, 'h1')

print(element.text)

driver.quit()

六.爬虫伦理与法律注意事项

1. 尊重robots.txt - 遵守网站的爬虫规则

2. 设置合理的请求间隔 - 避免给服务器造成过大压力

3. 注明数据来源 - 如果公开使用爬取的数据

4. 不爬取敏感或个人数据 - 遵守隐私法律法规

5. 检查网站的使用条款- 确保爬虫行为不违反条款

七.高级技巧

1. 使用Session保持会话

2. 处理Cookies

3. 设置请求头模拟浏览器

4. 使用代理IP

5. 处理验证码

6. 数据存储(CSV, JSON, 数据库)

八.简单实战示例

python

import requests

from bs4 import BeautifulSoup

import csv

def simple_crawler(url, output_file):

设置请求头模拟浏览器

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'

}

response = requests.get(url, headers=headers)

if response.status_code == 200:

soup = BeautifulSoup(response.text, 'lxml')

假设我们要提取所有新闻标题和链接

news_items = soup.select('.news-item') # 根据实际网站结构调整选择器

with open(output_file, 'w', newline='', encoding='utf-8') as file:

writer = csv.writer(file)

writer.writerow(['标题', '链接'])

for item in news_items:

title = item.select_one('h2').text.strip()

link = item.find('a')['href']

writer.writerow([title, link])

print(f"数据已保存到{output_file}")

else:

print("请求失败")

使用示例

simple_crawler('https://news.example.com', 'news_data.csv')

希望这份基础教学能帮助你入门Python爬虫开发!记得始终遵守法律和道德规范。

相关推荐
被摘下的星星3 分钟前
Java的类加载
java·开发语言
skilllite作者6 分钟前
SkillLite 多入口架构实战:CLI / Python SDK / MCP / Desktop / Swarm 一页理清
开发语言·人工智能·python·安全·架构·rust·agentskills
秋月的私语12 分钟前
遥感影像拼接线优化工具:基于Qt+GDAL+OpenCV的从零到一实践
开发语言·qt·opencv
xwz小王子20 分钟前
智元发布 GO-2:动作空间推理 + 全生命周期闭环,让机器人稳定可靠落地
开发语言·golang·机器人
charlie11451419120 分钟前
通用GUI编程技术——图形渲染实战(二十八)——图像格式与编解码:PNG/JPEG全掌握
开发语言·c++·windows·学习·图形渲染·win32
ZC跨境爬虫21 分钟前
批量爬取小说章节并优化排版(附完整可运行脚本)
前端·爬虫·python·自动化
ths51223 分钟前
Python 正则表达式实战指南:从入门到精通(12 个高频案例)(三)
python·正则表达式
ZC跨境爬虫23 分钟前
海南大学交友平台登录页开发实战day4(解决python传输并读取登录信息的问题)
开发语言·前端·python·flask·html
Wyawsl24 分钟前
Python操作MySQL数据库
数据库·python·mysql
wjs202426 分钟前
SQL LEN() 函数详解
开发语言