网页爬虫抓取百度图片(猫评论信息和图片下载的二合一升级版() )
优采云 发布时间: 2022-03-04 19:07网页爬虫抓取百度图片(猫评论信息和图片下载的二合一升级版()
)
之前我做过天猫评论信息抓取,还有评论图片下载,但是那一次我把所有的信息都存到数据库里,然后从数据库中提取图片信息下载。这次我做了信息爬取和图片下载二合一升级版。
这一次,我们瞄准的是京东nike自营店。
链接是:
老办法,按F12打开流量监控,点击网络中的js,然后在众多信息中找到存放评论信息的链接,如下:
我找到的最后一个链接如下所示:
打开链接后发现也是json格式的,很简单
先用urllib.request打开链接,然后用json加载json文件,代码如下:
url='https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv119&productId=7252788&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1'
html = urllib.request.urlopen(url).read().decode('gbk')
jsondata = re.search(r'\{.*\}', html).group()
data = json.loads(jsondata)
这里使用正则是因为打开html后发现是这样的:
我们需要的json格式文件放在那个()里面。
得到json格式的数据后,需要对数据进行过滤。我把用户名和评论等一些信息放入数据库,图片立即下载
先写一个循环遍历当前url中的所有评论内容,部分代码如下:
for i in range(0, len(data['comments'])):
id = data['comments'][i]['nickname']
# 用户名
content = data['comments'][i]['content']
# 评论
time = data['comments'][i]['creationTime']
# 评论日期
type = data['comments'][i]['referenceName']
# 型号及颜色
在爬取图片链接下载的时候,因为有些评论没有图片,所以需要判断key是否存在。
if('images' in data['comments'][i].keys()):
如果存在,请获取图片链接,完成链接并下载:
pics = data['comments'][i]['images'][k]['imgUrl']
a='http:'+pics
urllib.request.urlretrieve(a, 'D:\jd_pics/' + str(z)+'_'+str(i+1) + '_' + 'pic' + '_' + str(k) + '.jpg')
# 买家秀,命名规则:第几页第几条评论的第几个图片
对于后续审稿的爬取,大体思路同上,这里不再赘述。
最后就是考虑循环抓取了,只要写个循环就可以了
for j in range(0,150):
url='https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv119&productId=7252788&score=0&sortType=5&page='+str(j)+'&pageSize=10&isShadowSku=0&fold=1'
我在这里尝试抓取前150页评论的内容,因为我要边抓取边下载图片,所以需要很长时间。我花了大约25分钟,终于在数据库中得到了1000条信息
和本地1216图片
呵呵~这不对,150页每页10条信息,总数应该是1500!为什么我的数据库中只有 1000 个条目?
我去百度了一下,一位前辈是这样解释的:
“在 MySQL 中,每个数据库最多可以创建 20 亿个表,一个表允许定义 1024 列,每行最大长度为 8092 字节(不包括文本和图像类型的长度)。
当表定义为 varchar、nvarchar 或 varbinary 类型列时,如果插入表中的数据行超过 8092 字节,则 Transact-SQL 语句将失败并生成错误消息。
SQL对每张表的行数没有直接限制,但受数据库存储空间的限制。
每个数据库的最大空间是1048516TB,所以一个表的最大可用空间是1048516TB减去数据库类系统表和其他数据库对象占用的空间。"
也就是说,一个数据库的容量肯定是够用的,那剩下的 500 条记录到哪里去了呢?
找了半天,发现navicat for mysql有分页功能,自动帮我分页
oh~傻哭自己
我是学生,刚开始学习python爬虫。如果本文和代码有漏洞,还望各位大神赐教,谢谢!