先说说为什么写这个小demo吧,说起来还真的算不上“项目”,之前有一个朋友面试,别人出了这么一道机试题,需求大概是这样紫滴:1.给定任意京东商品链接,将该商品评论信息拿下,存入csv或者数据库
2.要求使用多任务来提高爬虫获取数据的效率
3.代码简洁,规范,添加必要注释
4.可以使用函数式编程,或者面向对象编程 看到上面四个简单的需求,层次高的童鞋可能就看不下去了,因为太简单了,这里本人的目的是给初学爬虫的工程师们。
让我们进入正题吧:step1: 选定任意商品详情url地址
这里我们以:Apple iPhone 7 Plus (A1661) 128G 黑色 移动联通电信4G手机 为例
step2: 按照如下图操作找到评论的url地址:
step3:分析接口数据可知:
step4: 找到目标url并确定数据后,分析目标url接口:
1、分析请求方式,由下图可以看出请求是一个get请求
2、分析url地址规律
注意为了确保找到url地址规律需要多对比不同商品下的评论地址,和同一商品不通分类的url地址
结论:由上面的url可知,同一商品下的不同分页的url只有page值不同,不同商品下的同一分页URL地址,只有productId不同,callback该参数可以省略。
主要获取商品的评论数据如下: 用户头像、用户昵称、星级、内容、产品信息、评论图片地址、评论视频地址、发布时间。
下面开始撸代码:代码思路比较简单step1:导入相关模块
import requests
import re,json
from requests.exceptions import HTTPError,Timeout,RequestException,ProxyError,ConnectTimeout
from concurrent.futures import ThreadPoolExecutor
import csv,pymysql,threading
- step2: 定义一个类JdSpider,完成爬虫主体代码 在__init__初始化方法中添加