文章目录
一、为什么要学爬虫?(真的超实用!)
在这个数据为王的时代(2024年数据科学薪资又涨了15%!),爬虫技术已经成为程序员必备的生存技能。你肯定遇到过这些场景:
- 想分析某宝商品价格走势但不会批量获取数据
- 需要自动追踪行业新闻却只能手动复制粘贴
- 看到心仪的壁纸网站却不知道怎么批量下载
(别问我怎么知道的,都是血泪史!)掌握爬虫技术后,这些问题都能迎刃而解!不过要注意:必须遵守网站的robots.txt协议,不要恶意爬取哦!
二、环境准备(5分钟快速搭建)
1. 安装Python环境
推荐使用Python 3.8+版本(别再用Python2了!)
# 查看Python版本
python --version
2. 安装必备库(记好这三个神器)
pip install requests beautifulsoup4 pandas
- requests:网络请求库(比urllib好用十倍!)
- BeautifulSoup:HTML解析神器
- pandas:数据处理专家
三、第一个爬虫程序(10行代码抓取网页)
import requests
url = "http://books.toscrape.com/" # 练习用网站
response = requests.get(url)
if response.status_code == 200:
print("成功获取网页内容!")
print(response.text[:500]) # 打印前500个字符
else:
print(f"请求失败,状态码:{response.status_code}")
运行这个程序,你会看到网页源码像瀑布一样倾泻而出!(是不是超有成就感?)
四、解析网页内容(BeautifulSoup实战)
from bs4 import BeautifulSoup
# 接上面的代码
soup = BeautifulSoup(response.text, 'html.parser')
book_titles = soup.find_all('h3')
for index, title in enumerate(book_titles[:5], 1):
print(f"第{index}本书:{title.a['title']}")
运行结果示例:
第1本书:A Light in the Attic
第2本书:Tipping the Velvet
第3本书:Soumission
...
(看到没?数据就这样被我们驯服了!)
五、数据存储(CSV文件生成)
import pandas as pd
books_data = []
for title in book_titles:
books_data.append({'书名': title.a['title']})
df = pd.DataFrame(books_data)
df.to_csv('books.csv', index=False)
print("数据已保存到books.csv!")
打开生成的CSV文件,你会看到整齐的书单列表(Excel可以直接打开哦!)
六、常见问题处理(新手避坑指南)
1. 反爬虫应对策略
- 设置请求头(浏览器伪装术)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...'
}
response = requests.get(url, headers=headers)
2. 动态网页处理
遇到JavaScript渲染的页面怎么办?推荐使用Selenium:
from selenium import webdriver
driver = webdriver.Chrome()
driver.get(url)
dynamic_content = driver.page_source
3. 异常处理(重要!)
try:
response = requests.get(url, timeout=5)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f"请求出错:{str(e)}")
七、爬虫进阶路线(学习路径图)
- 正则表达式强化训练
- Scrapy框架学习(企业级爬虫)
- 分布式爬虫搭建
- 验证码破解方案(合法合规前提下)
- 数据清洗与可视化
(偷偷告诉你:掌握Scrapy后,薪资至少涨30%!)
八、法律与道德(必须遵守的红线)
- 严格遵守robots.txt协议
- 控制请求频率(别把人家服务器搞崩了!)
- 不爬取敏感数据(用户隐私、国家安全相关)
- 商业用途需获得授权
实战案例:抓取天气数据(完整代码)
import requests
from bs4 import BeautifulSoup
import pandas as pd
def get_weather(city):
url = f"http://www.weather.com.cn/weather1d/101010100.shtml" # 北京天气
headers = {'User-Agent': 'Mozilla/5.0'}
try:
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析数据
temp = soup.find('div', class_='tem').text.strip()
weather = soup.find('div', class_='wea').text
return {
'城市': city,
'温度': temp,
'天气状况': weather
}
except Exception as e:
print(f"获取{city}天气失败:{str(e)}")
# 使用示例
weather_data = get_weather("北京")
print(weather_data)
输出结果示例:
{'城市': '北京', '温度': '22℃/13℃', '天气状况': '晴'}
总结与展望
恭喜你!现在你已经完成了爬虫的入门之旅。接下来可以尝试:
- 定时自动抓取股票数据
- 构建自己的新闻聚合系统
- 抓取电商平台价格进行比价
- 搭建舆情监控系统
(悄悄说:这些项目写在简历上超加分!)
记住:爬虫只是获取数据的手段,真正的价值在于数据分析与运用。建议后续学习pandas进行数据清洗,用matplotlib做可视化,打造完整的数据处理链条!
遇到问题欢迎随时交流(但别让我帮你破解付费内容哦!),让我们一起在数据的海洋里乘风破浪吧!🚀