主题:
字号:
16
行距:
2.0

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

tem.find('div',class_='p-commit')else'0'

books.append([title,price,shop,commit])

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['价格'

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

坐忘长生
飞翔的黎哥
华娱从洪世贤开始
在下励志师
长生修仙:从福修开始
宅到时间尽头
以一龙之力打倒整个世界!
唐宋元明氢
从霍格沃茨到斯翠海文
上菜大厨
白手起家,蝙蝠侠干碎我的致富梦
火星咖啡
我以奥术登临神座
危楼听雨
非正常武侠:别人练武我修仙
宝石岩
领主求生:从残破小院开始攻略
中华小铁匠
影视剧中的王牌特工
龙战将
全球觉醒:开局加入聊天群
飞翔的四眼
凌霄仙族
迷糊小神通
我大明武德充沛但选择文化胜利
江南说书人
古神的诡异游戏
宝月流光
我的混沌城
凌虚月影
我有一座山
老街板面
系统提前两年降临,我成神了!
写书太难啦
从捡到离家出走的沙优开始重生东京
筱筱有四只猫
美食计
非10
诸天尽头
凤嘲凰
诡秘:我给极光会当外援那些年
作家NKYGZ7
斗罗:我的武魂是十凶天角蚁
冬瓜战宝
我打造了旧日支配者神话
金色梦乡
亚人娘补完手册
伊巍蟹
飞越泡沫时代
斜线和弦
抗战:从常德保卫战开始
汉唐风月1
韩娱之全职丈夫
李慎行
大道之上
宅猪
英雄联盟之千年军阀
红林夜霜
千年军阀从诺克萨斯开始
红林夜霜
这个影帝要加钱
游方老盗
蜀山镇世地仙
东海镇守
游戏异界?异界游戏!
喝可乐不
永噩长夜
zhttty
黄金召唤师
醉虎
重燃青葱时代
蜜汁姬
北海道赛马物语
点旗2009
星际:从清洁工开始
大嘴虾
重建修仙家族
九玄山主
影视:开局获得阿尔法狗
水晶咕咾肉
影视世界从小舍得开始
山俪
诸天影视从四合院开始
洒家要吃肉
至尊天帝凌峰苏琳
剑轻阳
重生鉴宝:我真没想当专家
眀智
人在斗破,预支成帝
白鹤赛羔
至尊神瞳凌峰苏琳
剑轻阳
东京房东
八鸽子
华娱:童星出身的我只想成名
兵法36计
谁教你这么当兵的!
东流不鸽
CS:最后一舞,舞成职业通天代
Iced子夜