携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情 前言 大家好,我是辣条
相信各位男同胞们对刚刚过去不久的520仍然心有余悸吧,掏空钱包就算了还不一定能博得红颜一笑。我有一个同事给心仪的女孩送键盘!当时我第一反应是以后用来跪的还是说给他自己用的,看网上就更强了,不过我很好奇有没有人是送显卡的,真有的话我觉得单身也是有一定道理的。
不过对于辣条这么有情商的人是完全不可能犯这样的错误的,这时候我又掏出了我的杀手锏,直接采集数据分析,大数据会给我答案~ 目录 前言 工具准备 效果展示 项目思路解析 简易源码分享
工具准备 开发工具:pycharm 开发环境:python3.7, Windows10 使用工具包:requests, csv, re
效果展示
项目思路解析 首先对当前的网页进行分析,明确我们需要采集哪些数据信息,既然是520的节日礼物那我们肯定会关心它的标题,销量,地址,展示图片,店铺名,先对它的页面进行分析看看他的数据是动态还是静态数据,在浏览器页面鼠标右击点击查看网页源代码,看看是否存在我们想要的数据信息
可以看到我们想要的数据在源代码里,数据为静态数据,我们直接请求当前的网址就行,发送网请求之后需要进行数据的筛选筛选数据的方法有很多,可以使用xpath,也可以使用正则,我们今天用正则的方式提取数据信息,将获取到的数据进行筛选,获取到我们想要的数据信息,正则表达式会专门出一篇文章讲解,将我们的数据保存在csv的文件里
简易源码分享
import csv import json import random import time
import requests import re
headers = { 'referer': 'https://s.网址.com/', 'cookie': '', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36', }
def save_data(data): f = open('520女友礼物.csv', "a", newline="", encoding='utf-8') csv_writer = csv.DictWriter(f, fieldnames=['标题', '价格', '购买人数', '地点', '网址', '图片地址', '评论数', '店铺']) csv_writer.writerow(data)
def get_data(url): response = requests.get(url, headers=headers) print(response.text) data = re.findall('"auctions":(.*?),"recommendAuctions', response.text)[0] for info in json.loads(data): item = {} item['网址'] = info['detail_url'] item['标题'] = info['raw_title'] item['图片地址'] = info['pic_url'] item['价格'] = info['view_price'] item['地点'] = info['item_loc'] item['购买人数'] = info.get('view_sales') item['评论数'] = info['comment_count'] item['店铺'] = info['nick'] print(item) save_data(item)
if name == 'main': key = "520女友礼物" file = open('{}.csv'.format(key), "w", encoding="utf-8-sig", newline='') csv_head = csv.writer(file) # 表头 header = ['标题', '价格', '购买人数', '地点', '网址', '图片地址', '评论数', '店铺'] csv_head.writerow(header)
for i in range(1, 4):
urormat(key, str(i*44))
(ul) time.sleep(5) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52