这是我第一次接触python时,我们学校做的项目实训,其实整个项目实训过程很简单,并没有什么难度,认真学学就会。
首先,我们要明确我们的目标:从京东上爬取产品的评论。一般评论都是进行情感分析,但我还没进行到那一步,只能先进行相关数据爬取下来,然后把爬到的数据以csv或者json格式保存成文件。
其次,找到数据源的京东官网首页,然后点击搜索框填入手机,拿苹果手机举例
由于可以看到我们的评论是动态的,且可能不断更新,我们便在谷歌网页右键,点击检查或者直接F12快捷键,之后就是显示以下这种界面:
点击右上角的network,发现下面是空的,我们刷新页面,network下面就有东西了,但是我们需要评论,直接下拉到评论,网址不会改变,我们可以点击下一页,多了comment部分,但同时在右边找到了评论所在的JS,具体怎么找呢,我们先点击JS,然后从最下面找,主要看Response,若是在Response里面找到了评论,那就是在那里,然后点击Headers,找到我们需要的URL
然后,我们便开始进行相应的爬虫第一步:
import scrapyimport re, jsonfrom JDSpider.items import JDCommentItem# 定义一个爬虫类,继承自scrapy框架的spiderclass JDSpider(scrapy.Spider):# 定义爬虫名,保证在项目中是唯一的name="JDSpider"header = {"Accept": " */*","Accept-Language": "zh-CN,zh;q=0.9","Host": "","User-Agent": " Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.77 Safari/537.36"}# 告诉爬虫从哪个链接开始start_urls = ["/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100006460635&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1"]# 另外一种告诉爬虫从哪个链接开始def start_requests(self):# 手动发起一个请求# headers自定义请求头# callback指定回调函数url_format = "/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100006460635&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1"# 爬取10页评论for i in range(10):url = url_format.format(i)yield scrapy.Request(url=url, headers=self.header, callback=self.parse)
'nickname': 'A***洋','productColor': 'R7-4800H\\RTX2060\\8G\\512GSSD','score': 5}-07-03 11:38:40 [scrapy.core.scraper] DEBUG: Scraped from <200 /comment/productPageComments.action?callback=fetchJSON_comment98&productId=100006460635&score=0&sortType=5&page=2&pageSize=10&isShadowSku=0&fold=1>{'content': '包装保护:纸箱一个,卡的比较严实\n''外形外观:正面挺漂亮,反面蜂窝型散热的还好吧\n''画面品质:画面没有网上吐槽的那么不堪,至少对我来说够用了\n''跑分评测:加了一个8G镁光内存,43万跑分很不错\n''运行速度:运行速度很赞,开机20S内\n''游戏效果:玩了几把LOL,全特效无压力','nickname': '****7','productColor': 'R7-4800H\\新GTX1650Ti','score': 5}
这样,简单的某个人评论就爬下来了,我这边显示的数据是经过了格式化处理,主要还是为了让整个格式显的好看一点。
这样我们就获得了苹果手机前100条评论
***注意:
我们在获取网页响应时,网页编码是比较麻烦的,一般的如果是utf-8,我们就用text,若是乱码,可以用content,获得原始网页,然后为了显示正常,可以解码content.decode(‘gbk’),解码还是看源码是什么格式的。
补充说明:这篇文章主要是因为评论是以JS的格式保存在网页中,因此我们需要慢慢找到相应的JS网页。后期有时间,会进一步实现价格、评论爬取等等。
整个项目的代码都在这个链接里,有需要的自取哦!
链接:/s/1ZRrwR5zI02BO_HTyOj7wLg
提取码:7428
如果觉得《利用Python爬虫技术爬取京东商品评论》对你有帮助,请点赞、收藏,并留下你的观点哦!