电商数据分析是个香饽饽,可市面上的数据采集工具 要不贵得吓人,要不就是各种广告弹窗。干脆自己动手写个爬虫,想抓啥抓啥,还能学点技术。今天咱聊聊怎么用Python写个简单的电商数据爬虫。
打好基础:搞定请求头 别看爬虫很牛,但基础工作得做足。浏览器访问网页时会带上各种 请求头信息 ,咱们写爬虫也得模仿这个行为,不然分分钟被网站拦截。
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5', } 温馨提示:每个网站的反爬策略不一样,有时候可能需要加上Cookie、Referer等信息。要是遇到了再加就成。
发起请求:requests库来帮忙 发请求用 requests库 准没错,简单好用还稳定。pip安装一下就能用:
import requests def get_page(url): try: response = requests.get(url, headers=headers, timeout=5) return response.text except Exception as e: print(f'哎呀,出错了:{e}') return None 解析数据:BeautifulSoup大显神通 拿到网页内容后,就该解析数据了。 BeautifulSoup 是个好帮手,把乱糟糟的HTML转成结构化的数据:
from bs4 import BeautifulSoup def parse_product(html): if not html: return [] soup = BeautifulSoup(html, 'html.parser') products = [] items = soup.findall('div', class='item') # 具体class名要看网站结构 for item in items: product = { 'title': item.find('div', class='title').text.strip(), 'price': item.find('span', class='price').text.strip(), 'sales': item.find('span', class_='sales').text.strip() } products.append(product) return products 存储数据:pandas帮你整理 数据爬下来了,得好好存起来。用 pandas 转成Excel,分析起来贼方便:
import pandas as pd def save_data(products): df = pd.DataFrame(products) df.to_excel('products.xlsx', index=False) print(f'搞定!共保存了{len(products)}条数据') 完整代码:整合一下 把上面的代码整合一下,就能一键采集数据了:
def main(): base_url = 'https://example.com/products?page={}' # 替换成实际的网站 all_products = [] for page in range(1, 6): # 采集5页数据 url = base_url.format(page) print(f'正在爬取第{page}页...') html = get_page(url) products = parse_product(html) all_products.extend(products) time.sleep(1) # 别爬太快,对别人服务器好点 save_data(all_products) if name == 'main': main() 温馨提示:记得改成你要爬的网站地址,不同网站的HTML结构不一样,解析规则也得相应调整。
反爬处理:多动点小脑筋 网站肯定不愿意让你随便爬数据,咱得讲究点技巧:
• IP代理池:换着IP访问,降低被封风险 • 随机延时:别一直用固定间隔,显得太机械 • 随机UA:多准备几个User-Agent轮着用 • 验证码处理:遇到验证码可以用OCR识别
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。