主题:
字号:
16
行距:
2.0

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

])

exceptAttributeErrorase:

print(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).r

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

进城后被闺蜜哥哥宠上天
我不是煮妇
黑道枭雄,权势滔天
巅峰的神
首辅绝嗣,我连生三子全家宠上天
白兔先生
赶海:黄金渔场,SSS钓竿大黄鱼爆仓
黑大帅
纪念日你和寡嫂过,我离婚独美
似水
逃荒不慌!恶毒后娘一路带崽吃香喝辣
别来春半
情债难逃
朽木可雕
综影视之一叶一菩提
参商*
权势滔天,从救下美女老板开始
闲云野鹤
嫡明
戈昔
祭祀百年,我成了部落先祖
山人有妙计
F1:车神养成日记
诸位贱笑了
渣男骗婚?大佬抱崽上门求名分
烧卖遇上芝士
集体穿越:满城大佬叫我长公主!
烧鸡
F1:绝对车感
身同云轻
木叶手记
短腿跑得慢
辽东沦丧前夜,率军兵谏少帅
吃鱼的小狗
全民:从觉醒特勤处开始搜打撤
扑街蜘蛛呀
夜火倾唇
一只狸猫
夜色迷人
浪里小白龙本尊
重生后昏君幺女杀爆京华
江月寒
总有人间一两风
李想想
长生修仙:从薅妖兽天赋开始
廿三声
开局桥上救下轻生女,系统激活
漠星凡
喜人奇妙夜:比格大王来了
一支南栀
莫欺老年穷,一天增加一个天赋点
被提线的木偶
丑女嫌我穷,你错失真龙!
冻豆腐
寒总别虐了,黎小姐要嫁人了
雪空
骗我养私生子?我转身闪婚千亿总裁
风栖月
崇祯的奋斗!
大罗罗
离婚后,绝美老婆哭晕了
爱吃红番茄
造化吞天诀
关山月
我只是个开青楼的,真没想造反
宁之柠
父子都偏心,这大院贤妻她不当了
星熠
沉塘假死?重生后,这个外室我不当了
西厢月色
三国:朕,袁术,大汉忠良
许君.
哪有啥祖宗,都是我编的
六作
我的时代1979!
老牛爱吃肉
我的天赋面板能加点
肚子吃撑了
重回1982小渔村
米饭的米
公若不弃,愿拜为义父
辣酱热干面
妖尾:我才不要当会长
想吃冰棒
非正常美食文
吨吨吨吨吨
穿越,然后被富家JK堵门
晚不鸽
修仙界只有妖女了是吗
月下千早
四合院之扮猪吃老虎
戈壁孤狼夜
半岛头号玩咖!
HKDoll
半岛小行星
鸡兔同笼
美警生存实录:以德服人
夜叶总差
诡异监管者
露馅的芝麻胡