主题:
字号:
16
行距:
2.0

第77章 爬虫抓取的第一份数据:教辅价格[3 / 6]

int(f"解析错误:{e},跳过此项")

continue

df=pd.DataFrame(books,columns=['书名','价格','店铺','评价数'])

df.to_csv('jd_math_books_page1.csv',index=False,encoding='utf-8-sig')

短短几十行代码,他调试了大半天。问题层出不穷:标签class名不准确、某些商品信息缺失导致find返回None进而引发AttributeError、价格符号和评价文本中夹杂着“¥”、“+”等需要清洗的字符、以及最棘手的——京东的部分商品信息是通过JavaScript动态加载的,直接请求HTML页面获取不到。他不得不学习使用requests抓取实际的接口数据(通过开发者工具查看Network中的XHR请求),这比解析静态HTML复杂得多。

第四、五天:优化、多页抓取与当当网适配。

解决动态加载问题后,他增加了循环,尝试抓取前5页数据(约100条)。他加入了time.sleep(random.uniform(1,3))在每次请求之间随机休眠1-3秒,避免访问过快触发反爬。数据存储也从单页覆盖改为追加模式。

接着,他用类似的方法分析当当网的结构,编写了适配的爬虫脚本。当当的反爬似乎弱一些,但页面结构也略有不同,需要调整选择器。

第六天:数据清洗与初步分析。

他成功抓取了京东156条、当当189条有效数据。但原始数据很“脏”:价格是字符串“¥39.80”,需要提取数字;评价数可能是“2万+”,需要转换为近似数值(如20000);店铺名有冗余信息。他用pandas进行了清洗:

#价格清洗

df['价格']=df['价格'].str.replace('¥','').astype(float)

#评价数清洗(简化处理,将“万+”乘以10000)

defclean_commit(x):

if'万'instr(x):

returnfloat(str(x).replace('万+','').replace('万',''))*10000

else:

本章未完,请点击下一页继续阅读!

叶无缺玉娇雪
一念汪洋
超凡纪元
莫笑几人回
回到1978,我和兄弟当父子
不造谣的杀手
军王龙首(九五之尊)
风情犹在
死后第十年,白月光大师姐回来了
叶芷青
魔道学院:从征服丰满校花开始
黑黄教主
摄政妖妃的赤胆忠臣
点子大王
我在大唐当闲王李慎李世民
悟途reborn
四合院,易中海要给我招赘婿
浮月人生
分家,继母渣爹跪求我回家
炸了小番茄
被长姐换亲之后
墨笔生金
炼气炼了五千年方羽唐小柔
李道然
穿越之后想苟命,就给男主当新妈
咸鱼小姨娘
丰腴美人小保姆,沈技术员沦陷了
梧生花
人在修仙界,给我都市神豪系统?
会说话的键盘
快穿:天生好孕被绝嗣大佬宠上天
六月榴花照
让你辅佐曹操,你天天骂他送死
天煞门的小花娘
天官赐邪
幻梦猎人
李慎李世民
悟途reborn
谁懂啊!侯府庶女心声自动广播
梦想翻身的闲鱼
1978,父子双穿记
不造谣的杀手
穿越:我在大唐当闲王李慎李世民
悟途reborn
为他挨了一枪后,我成全了他和白月光
南宫紫嫣
潜伏台湾:海燕的使命
清风辰辰
村医寡嫂
林公子
维度乐园,我是召唤系使徒
四诗风雅颂
四合院:从钳工学徒开读书攒技能
红一点点
贞观小闲王李慎李世民
悟途reborn
韦贵妃李世民
悟途reborn
武道丹帝
烧烤西瓜
玄幻:开局一身无敌大招
丸子先生
特种兵:我创造了恐怖幽灵
我是小熊猫
武道丹帝叶炎云飞雪
烧烤西瓜
一胎!又一胎!绝嗣大伯哥有后了
九亿
贞观小闲王
悟途
港片:我的老婆全是极品尤物
一枚超级大帅哥
素人选秀?顶流导师是我学生
落地菠萝
竹马薄情寡恩?我毒祸天下不原谅!
无风
武道长生,不死的我终将无敌
戒界
重回1982小渔村
米饭的米
公若不弃,愿拜为义父
辣酱热干面
第四天灾从不相信钢铁洪流!
喀秋莎第一可爱
修仙界只有妖女了是吗
月下千早
四合院之扮猪吃老虎
戈壁孤狼夜
青山
会说话的肘子
仙命在我
杜养吾
半岛头号玩咖!
HKDoll
被夺一切后我成了仙道魁首
盛唐无夜
秦时小说家
偶米粉
重生鉴宝:我真没想当专家
眀智