用Python脚本做数据采集,效率翻倍的实战技巧

为什么越来越多的人用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脚本不是程序员的专利。学会基础语法,配合现成库,普通人也能做出趁手的工具。重点不是代码多高级,而是解决眼前的问题。你省下的每一分钟,都在为更重要的事腾空间。