为什么越来越多的人用Python采集数据
每天上班第一件事就是打开几个网站,复制粘贴价格、库存、新闻标题,再整理成Excel表格。这种重复劳动占掉大半天,还容易出错。老同事靠经验,新人靠加班,其实换个思路,一条Python脚本就能搞定。
从零开始写一个简单的网页采集脚本
比如你想监控某电商平台一款耳机的价格变动,手动查太麻烦。Python几行代码就能自动抓取:
import requests
from bs4 import BeautifulSoup
url = "https://example-shop.com/earphone"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
price = soup.find("span", class_="price").get_text()
print(f"当前价格:{price}")
这段代码会访问指定页面,提取价格标签里的内容。只要把网址换成你关注的页面,改一下class名称,马上就能用。
定时运行,数据自动更新
光跑一次不够,得让它每天自动执行。Windows可以用任务计划程序,macOS或Linux用cron。比如在终端输入:
crontab -e
添加一行:
0 9 * * * /usr/bin/python3 /home/user/price_tracker.py
意思是每天早上9点自动运行脚本,价格变化直接发邮件或者写进CSV,连打开浏览器都省了。
遇到反爬怎么办
有些网站发现你是脚本访问,直接返回验证码或者封IP。这时候别硬来,学点“伪装”技巧:
- 加随机延时:
time.sleep(2 + random.random() * 3),模拟人类操作节奏 - 换User-Agent,别总用默认的那个
- 用requests.Session()保持会话,像真实用户一样浏览
要是数据藏在JavaScript里,requests抓不到,就上Selenium。虽然慢一点,但能加载完整页面:
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument("--headless") # 不弹出浏览器窗口
driver = webdriver.Chrome(options=options)
driver.get("https://dynamic-site.com")
elem = driver.find_element_by_css_selector(".data-box")
print(elem.text)
driver.quit()
别只盯着网页,本地文件也能批量处理
公司系统导出一堆CSV,要合并统计?Python比Excel快多了:
import pandas as pd
import glob
files = glob.glob("/downloads/sales_*.csv")
all_data = [pd.read_csv(f) for f in files]
merged = pd.concat(all_data, ignore_index=True)
merged.to_csv("combined_sales.csv", index=False)
几十个文件一键合并,还能加筛选条件,比如只保留本月数据,或者按地区分类。
实际场景举例:自媒体运营的标题库
做公众号的朋友常愁没选题。其实热门平台的榜单就是灵感来源。写个脚本定时抓取知乎热榜、微博热搜,存到本地,用关键词过滤,很快就能建立自己的素材库。
一开始可能要调几次选择器,但一旦跑通,每天花3分钟看结果就行。比起刷一小时手机找灵感,这种方式更高效也更系统。
工具是死的,思路是活的
Python脚本不是程序员的专利。学会基础语法,配合现成库,普通人也能做出趁手的工具。重点不是代码多高级,而是解决眼前的问题。你省下的每一分钟,都在为更重要的事腾空间。