博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
爬取淘宝商品信息
阅读量:5920 次
发布时间:2019-06-19

本文共 3248 字,大约阅读时间需要 10 分钟。

hot3.png

相信学了python爬虫,很多人都想爬取一些数据量比较大的网站,淘宝网就是一个很好的目标,其数据量大,而且种类繁多,而且难度不是很大,很适合初级学者进行爬取。下面是整个爬取过程:

第一步:构建访问的url

#构建访问的url    goods = "鱼尾裙"    page = 10    infoList = []    url = 'https://s.taobao.com/search'    for i in range(page):        s_num = str(44*i+1)        num = 44*i        data = {'q':goods,'s':s_num}

第二步:获取网页信息

def getHTMLText(url,data):    try:        rsq = requests.get(url,params=data,timeout=30)        rsq.raise_for_status()        return rsq.text    except:        return "没找到页面"

第三步:利用正则获取所需数据

def parasePage(ilt, html,goods_id):    try:        plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)        slt = re.findall(r'\"view_sales\"\:\".*?\"', html)        tlt = re.findall(r'\"raw_title\"\:\".*?\"', html)        ult = re.findall(r'\"pic_url\"\:\".*?\"', html)        dlt = re.findall(r'\"detail_url\"\:\".*?\"', html)        for i in range(len(plt)):            goods_id += 1            price = eval(plt[i].split(':')[1])            sales = eval(slt[i].split(':')[1])            title = eval(tlt[i].split(':')[1])            pic_url = "https:" + eval(ult[i].split(':')[1])            detail_url = "https:" + eval(dlt[i].split(':')[1])            ilt.append([goods_id,price,sales,title,pic_url,detail_url])        return ilt    except:        print("没找到您所需的商品!")

第四步:将数据保存到csv文件

def saveGoodsList(ilt):    with open('goods.csv','w') as f:        writer = csv.writer(f)        writer.writerow(["序列号", "价格", "成交量", "商品名称","商品图片网址","商品详情网址"])        for info in ilt:            writer.writerow(info)

下面是完整代码:

import csvimport requestsimport re #获取网页信息def getHTMLText(url,data):    try:        rsq = requests.get(url,params=data,timeout=30)        rsq.raise_for_status()        return rsq.text    except:        return "没找到页面" #正则获取所需数据def parasePage(ilt, html,goods_id):    try:        plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)        slt = re.findall(r'\"view_sales\"\:\".*?\"', html)        tlt = re.findall(r'\"raw_title\"\:\".*?\"', html)        ult = re.findall(r'\"pic_url\"\:\".*?\"', html)        dlt = re.findall(r'\"detail_url\"\:\".*?\"', html)        for i in range(len(plt)):            goods_id += 1            price = eval(plt[i].split(':')[1])            sales = eval(slt[i].split(':')[1])            title = eval(tlt[i].split(':')[1])            pic_url = "https:" + eval(ult[i].split(':')[1])            detail_url = "https:" + eval(dlt[i].split(':')[1])            ilt.append([goods_id,price,sales,title,pic_url,detail_url])        return ilt    except:        print("没找到您所需的商品!") #数据保存到csv文件def saveGoodsList(ilt):    with open('goods.csv','w') as f:        writer = csv.writer(f)        writer.writerow(["序列号", "价格", "成交量", "商品名称","商品图片网址","商品详情网址"])        for info in ilt:            writer.writerow(info) #运行程序if __name__ == '__main__':    #构建访问的url    goods = "鱼尾裙"    page = 10    infoList = []    url = 'https://s.taobao.com/search'    for i in range(page):        s_num = str(44*i+1)        num = 44*i        data = {'q':goods,'s':s_num}        try:            html = getHTMLText(url,data)            ilt = parasePage(infoList, html,num)            saveGoodsList(ilt)        except:            continue

结果如下图:

a763127600cc400a502d60a1fde0fb69f53.jpg

 

亲,如果您感觉本文有用,请点个赞再走吧✌(>‿◠)!!

转载于:https://my.oschina.net/ZhenyuanLiu/blog/1844882

你可能感兴趣的文章
SVG笔记
查看>>
ES6精华:Symbol
查看>>
Python学习--环境搭建
查看>>
以太坊智能合约开发第六篇:truffle开发框架
查看>>
十年学会编程
查看>>
webpack笔记一:webpack的介绍,安装,加载css、图片、字体等
查看>>
React v16.3.0: New lifecycles and context API
查看>>
深入浅出webpack学习(11)--多种类型配置
查看>>
利用angular4和nodejs-express构建一个简单的网站(四)—angular路由初步
查看>>
分享一些实用的软件工具
查看>>
leetcode164. Maximum Gap
查看>>
underscore 0.1.0版本源码阅读
查看>>
微信小程序入门到实战(一)
查看>>
Notadd PHP 到 Node 版 初步体验与测试
查看>>
一步步教你创建自己的数字货币(代币)进行ICO
查看>>
基于react、socket.io、node.js仿微信开发
查看>>
Struts2 常量配置
查看>>
Redis安装
查看>>
javascript 数据类型判断 (常见库的数据类型判断源码的分析)
查看>>
koa-session学习笔记
查看>>