1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Python爬虫获取京东大数据!其实爬虫真的很简单!

Python爬虫获取京东大数据!其实爬虫真的很简单!

时间:2022-11-30 00:53:23

相关推荐

Python爬虫获取京东大数据!其实爬虫真的很简单!

简介

Python是一个简洁的语言,集成性非常高,我们可以使用集成的工具库,本文中用到的库有requests、re

找到我们需要爬取的链接

PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取

python免费学习资料以及群交流解答点击即可加入

输入关键字

自己需要爬取的数据

比如:洗面奶

选择评论数最多

(不要去点销量,因为很大部分原因这个可以用钱买)

进入之后

打开开发者工具,F5刷新页面,点击商品评论

抓取链接

这个弄错了,就是在扯犊子了

回车后,

没有看到突出显示的就上下翻,找到为止

复制我们找到的

URL:

/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5561746&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=11

代码部分

先把所需要的库导入

import reimport requests12

定义需要的变量

#由于链接实在太长,我们把链接赋值给一个变量urlurl = "/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5561746&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1"#这里我们然jd知道,我们是通过浏览器访问的(你懂的!)headers= {"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 Edg/86.0.622.69"}#定义用于接收数据的列表productColor, referencComments, referenceName, referenceTime, nickname = [],[],[],[],[]12345678

获取信息

#通过requests模块获取到网页信息content = requests.get(url=url, headers=headers)12

获取关键数据

在这里我们使用正则获取关键数据(re)模块

如果懂json模块的大佬可以直接使用json进行数据整理,我这边主要介绍数据获取思路

我们先把链接放到浏览器中看一下

提取关键字

如:用户名 ,时间,规格,评论,产品名称

关键字:用户名

在我这里是直接找评论区第一个用户(使用Ctrl + F)进行字符串搜索

也可以使用其它的关键字都是一样的

re模块使用

说明位置的特殊字符- ^表示行首:^hello 匹配 hellohello 中的第一个 hello- $表示行尾 hello$ 匹配 hellohello 中的第二个 hello说明数量的特殊字符- ?:表示 0 个或者 1 个,例如 ab?c 匹配 ac 和 abc- +:表示 1 个或更多个,例如 ab+c 匹配 abc\abbc\ab...c- *:表示 0 个或更多个,例如 ab*c 匹配 ac\abc\ab...c- {n} 表示匹配 n 个, ab{3}c 只匹配 abbbc- {n,} 表示匹配最少 n 个,+ 对应 {1,},* 对应 {0,}- {n,m} 表示匹配 n 到 m 个,? 匹配 {0,1}说明类型的特殊字符- [a-zA-Z] 表示一个大小写字母,例如前面的例子匹配任何一个字母- [^a-z]表示除了小写的字母以外的所有字符- \d \D \d 对应 [0-9], \D 对应[^0-9]- \s \S \s 对应 [\n\r\t] \S对应[^\n\r\t]- \w \W \w 对应 [0-9a-zA-Z_] \W 对应[^0-9a-zA-Z_]- . 表示任意一个字符123456789101112131415161718

#把用户名前后直接拿过来分析'''06-21 17:54:06","nickname":"y***2","replyCount2":'''nickname += re.findall(r'","nickname":"(.*?)","', content.text)123

找到时间,规格,评论,产品名称

#同样的把时间,规格,评论都拿过来看一下'''规格:":2,"productColor":"净亮洁面(控油+亮肤)","productS产品:f.jpg","referenceName":"欧莱雅(LOREAL)男士控油炭爽抗黑头双支装(洁面*2 赠:洁面*2)洗面奶男 去黑头 去角质","first评论:8e","content":"作为一个长期油皮者,各种热[门的洗面奶都用\n过,总是各种问题,洗了很干涩。只有这款,\n两支,一支早上用,补水。一支晚上用,控油,\n晚上也睡得很舒服。早.上起来脸上不会油腻油\n腻的感觉了,以后也都会用这款洗面奶了,产品\n好,会一直支持的","cr时间:持的","creationTime":"-06-27 22:02:22","isD'''#使用正则获取关键数据#时间:referenceTime += re.findall(r'","creationTime":"(.*?)","', content.text)#产品名称:referenceName += re.findall(r'","referenceName":"(.*?)","', content.text)#评论:referencComments += re.findall(r'","content":"(.*?)","', content.text)12345678910111213141516171819

结果

这个时候我们输出看一下

#先把数据一一对应Info = [nickname, referenceTime, referenceName, referencComments, productColor]#打印for i in range(0,len(nickname)):print(nickname[i],referenceTime[i], productColor[i],referenceName[i],referencComments[i])12345

进阶

到现在只获取到一页的信息,这怎么能叫做爬虫

现在我们手动找到下一页的链接

按照老方法找到下一页的链接

第二页的链接

/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5561746&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=11

对比一下跟第一条链接有什么区别

很快就找到了

第一条为page=0,第二条page=1

所以在这块我们要把page设置成一个变量

定义URL变量

将之前写的url链接更改

url = "/comment/productPageComments.action?callback=fetchJSON_comment98&productId=5561746&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1"1

我们需要知道一页为10条,在这里我们就测试100条

进行循环获取信息

for index in range(0, 10):#通过requests模块获取到网页信息content = requests.get(url=url.format(index), headers=headers)#用户名nickname += re.findall(r'","nickname":"(.*?)","', content.text)#时间:referenceTime += re.findall(r'","creationTime":"(.*?)","', content.text)#产品名称:referenceName += re.findall(r'","referenceName":"(.*?)","', content.text)#评论:referencComments += re.findall(r'","content":"(.*?)","', content.text)#规格productColor += re.findall(r'"productColor":"(.*?)","', content.text)12345678910111213

再次输出结果

这里我也不知道是不是100条,我们加个索引进行输出

for index, i in enumerate(range(0,len(nickname))):print(index, nickname[i],referenceTime[i], productColor[i],referenceName[i],referencComments[i])12

输出结果

滑倒最后

没错0-99=100

到这里就结束了,谢谢大家,不惜勿喷

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。