700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【Python爬虫学习】淘宝商品比价爬虫实战

【Python爬虫学习】淘宝商品比价爬虫实战

时间:2023-10-28 04:40:23

相关推荐

【Python爬虫学习】淘宝商品比价爬虫实战

功能描述

目标:获取淘宝搜索页面的信息,提取其中的商品名称和价格。
技术路线:requests­ re
程序的结构设计

步骤1:提交商品搜索请求,循环获取页面步骤2:对于每个页面,提取商品名称和价格信息步骤3:将信息输出到屏幕上

核心操作:

浏览器获取cookie和user-agent信息,设置成kv键值对当做请求头参数header放入requests.get()方法中

在html页面中找到商品名称和价格信息对应的键值对,并使用相应的正则表达式与之匹配,在进行搜索

搜索到匹配的字符串后,需要用eval()和split()函数对其进行去引号处理和切割,并通过索引将其取出来,存入商品列表中

输出模板,使用format()函数

设置depth变量的for循环实现翻页爬取

爬取时需要模拟淘宝登录信息

#cookie的获取方法:

打开淘宝商品页面,登录你的淘宝账号——F12进入浏览器的开发者调试工具,点击Network,重新刷新页面——选择最上面的search?initiative_id=…的dos文件——找到Request Headers,复制里面的cookie内容,这样,你就能够获得你的cookie了

发起请求的函数

需要使用开发者工具获得浏览器cookies信息

导库

import requestsimport re

def gethttptext(url):try:kv = {'cookie':####, 'user-agent':'Mozilla/5.0'}r=requests.get(url,headers=kv,timeout=30)r.raise_for_status()r.encoding=r.apparent_encodingreturn r.textexcept:print("提取失败")

从html中解析出商品信息,存入商品列表中(核心)

知识点:

1.正则表达式:浏览器观察爬取的页面html源码,发现商品名和价格都存在特定的key:value键值对中,所以需要用re库的findall方法+正则表达式来寻找所有能匹配
2.eval()函数去除字符串两边的引号
3.plt、rlt返回的都是一个原始的List,需要切分,然后按条件存取到列表ilt中

def parsePage(ilt,html):try:plt = re.findall(r'"view_price":"[\d.]*"',html)rlt = re.findall(r'"raw_title":".*?"',html)print('爬取成功!')for i in range(len(plt)):price = eval(plt[i].split(':')[1])name = eval(rlt[i].split(':')[1])ilt.append([price,name])#print(ilt[i])except:print("解析错误")

将商品输出到屏幕上

运用到format函数

def printgoodslist(ilt):tplt = "{:4}\t{:10}\t{:10}\t"print(tplt.format('序号','价格','商品名称'))for i in range(len(ilt)):print(tplt.format(i,ilt[i][0],ilt[i][1]))

主函数

设置一个变量depth表示爬取页面数量

通过for循环设置翻页

每个循环仍然需要try…except…语句

最后打印所有商品列表

if __name__=="__main__":goods='口红'depth=10start_url='/search?q='+goodsinfolist=[]# depth变量实现翻页处理for i in range(depth):try:url=start_url+'&s='+str(44*i)html=gethttptext(url)parsePage(infolist,html)except:continueprintgoodslist(infolist)

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