2.3 学习正则表达式 re

2.3.1 为什么使用正则表达式?

典型的搜索和替换操作要求您提供与预期的搜索结果匹配的确切文本。虽然这种技术对于对静态文本执行简单搜索和替换任务可能已经足够了,但它缺乏灵活性,若采用这种方法搜索动态文本,即使不是不可能,至少也会变得很困难。

通过使用正则表达式,可以:

- 测试字符串内的模式。例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
- 替换文本。可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
- 基于模式匹配从字符串中提取子字符串。可以查找文档内或输入域内特定的文本。

可以使用正则表达式来搜索和替换标记。

使用正则表达式的优势是什么? 简洁

  • 正则表达式是用来简洁表达一组字符串的表达式
  • 正则表达式是一种通用的字符串表达框架
  • 正则表达式是一种针对字符串表达“简洁”和“特征”思想的工具
  • 正则表达式可以用来判断某字符串的特征归属

正则表达式在文本处理中十分常用:

  • 同时查找或替换一组字符串
  • 匹配字符串的全部或部分(主要)

2.3.2 正则表达式语法

正则表达式语法由字符和操作符构成:

  • 常用操作符

    • . 表示任何单个字符

    • [ ] 字符集,对单个字符给出取值范围 ,如[abc]表示a、b、c,[a‐z]表示a到z单个字符

    • [^ ] 非字符集,对单个字符给出排除范围 ,如[^abc]表示非a或b或c的单个字符

    • * 前一个字符0次或无限次扩展,如abc* 表示 ab、abc、abcc、abccc等

    • + 前一个字符1次或无限次扩展 ,如abc+ 表示 abc、abcc、abccc等

    • ? 前一个字符0次或1次扩展 ,如abc? 表示 ab、abc

    • | 左右表达式任意一个 ,如abc|def 表示 abc、def

    • {m} 扩展前一个字符m次 ,如ab{2}c表示abbc

    • {m,n} 扩展前一个字符m至n次(含n) ,如ab{1,2}c表示abc、abbc

    • ^ 匹配字符串开头 ,如^abc表示abc且在一个字符串的开头

    • $ 匹配字符串结尾 ,如abc$表示abc且在一个字符串的结尾

    • ( ) 分组标记,内部只能使用 | 操作符 ,如(abc)表示abc,(abc|def)表示abc、def

    • \d 数字,等价于[0‐9]

    • \w 单词字符,等价于[A‐Za‐z0‐9_]

2.3.3 正则表达式re库的使用

  • 调用方式:import re
  • re库采用raw string类型表示正则表达式,表示为:r’text’,raw string是不包含对转义符再次转义的字符串;

re库的主要功能函数:

  • re.search() 在一个字符串中搜索匹配正则表达式的第一个位置,返回match对象

    • re.search(pattern, string, flags=0)
  • re.match() 从一个字符串的开始位置起匹配正则表达式,返回match对象
    • re.match(pattern, string, flags=0)
  • re.findall() 搜索字符串,以列表类型返回全部能匹配的子串
    • re.findall(pattern, string, flags=0)
  • re.split() 将一个字符串按照正则表达式匹配结果进行分割,返回列表类型
    • re.split(pattern, string, maxsplit=0, flags=0)
  • re.finditer() 搜索字符串,返回一个匹配结果的迭代类型,每个迭代元素是match对象
    • re.finditer(pattern, string, flags=0)
  • re.sub() 在一个字符串中替换所有匹配正则表达式的子串,返回替换后的字符串
    • re.sub(pattern, repl, string, count=0, flags=0)

    • flags : 正则表达式使用时的控制标记:

      • re.I --> re.IGNORECASE : 忽略正则表达式的大小写,[A‐Z]能够匹配小写字符
      • re.M --> re.MULTILINE : 正则表达式中的^操作符能够将给定字符串的每行当作匹配开始
      • re.S --> re.DOTALL : 正则表达式中的.操作符能够匹配所有字符,默认匹配除换行外的所有字符

re库的另一种等价用法(编译)

  • regex = re.compile(pattern, flags=0):将正则表达式的字符串形式编译成正则表达式对象

re 库的贪婪匹配和最小匹配

  • .* Re库默认采用贪婪匹配,即输出匹配最长的子串
  • *? 只要长度输出可能不同的,都可以通过在操作符后增加?变成最小匹配

2.3.4 实战:淘宝商品比价定向爬虫

  • 爬取网址:https://s.taobao.com/search?q=书包&js=1&stats_click=search_radio_all%25
  • 爬取思路:
    1. 提交商品搜索请求,循环获取页面
    2. 对于每个页面,提取商品名称和价格信息
    3. 将信息输出到屏幕上
# 导入包
import requests
import re
# import requests
# import re

1. 提交商品搜索请求,循环获取页面

def getHTMLText(url):"""请求获取html,(字符串):param url: 爬取网址:return: 字符串"""try:# 添加头信息,kv = {'cookie': '_samesite_flag_=true; cookie2=195dff0324895b700ba634018a2ac64e; t=6bbdbc591d36d67778340ef719afc85c; _tb_token_=eb63db08164ee; cna=9dQpF7ahfAQCAd9OzfM8zmTS; sgcookie=EKhPCohfwHt5Dg2zgQ09w; unb=3988658748; uc3=id2=UNk%2FQP%2B50d7yBA%3D%3D&lg2=W5iHLLyFOGW7aA%3D%3D&vt3=F8dBxGR00G4Vq8iN838%3D&nk2=F5RGMONYP9KxERo%3D; csg=c55d9bd9; lgc=tb364519060; cookie17=UNk%2FQP%2B50d7yBA%3D%3D; dnk=tb364519060; skt=f3a74c6461da5d67; existShop=MTU4NzczNDQxNQ%3D%3D; uc4=nk4=0%40FY4NBfuSRJNW4XqsCry%2B3TpKGY0MKg%3D%3D&id4=0%40Ug41QXQdvkTdsMbGD9g6QMnhzVJ5; tracknick=tb364519060; _cc_=V32FPkk%2Fhw%3D%3D; _l_g_=Ug%3D%3D; sg=083; _nk_=tb364519060; cookie1=VWYsqwEgWtu8l0Q758GIDYbsNwhhNFtpRArXKgAwLSs%3D; enc=A05bLdQMTOJv1LJ%2FYSTWgRjCt3xrLShv3Tavb4MOA%2FQ8vHAqk5KThAlASw%2BPty4uWQcMFeWzcDzwbtjitS%2B%2FDA%3D%3D; tfstk=cbUdBFiQAOXnz4NE0zIiPsExUbJRa4RKEBMJy_98QXVDYLYpRsbzorEjmMGypVCO.; hng=CN%7Czh-CN%7CCNY%7C156; uc1=cookie16=Vq8l%2BKCLySLZMFWHxqs8fwqnEw%3D%3D&cookie21=W5iHLLyFe3xm&cookie15=VT5L2FSpMGV7TQ%3D%3D&existShop=false&pas=0&cookie14=UoTUPcvNkROvRg%3D%3D; mt=ci=63_1; v=0; thw=cn; JSESSIONID=5F754971566500914381AE6D65E5F002; isg=BDMz5_5caXiW1SWsM_XUTXjGwjddaMcqJ-Pv3eXQ4dKJ5FKGbDv3etWymhQKxB8i; l=eBrzUkaVQ-AOu1eFBOfwnurza77OhIRfguPzaNbMiT5PODfp5jXfWZj4NzL9CnGVH6PBJ3JMwUX8BJYN0yhqJxpsw3k_J_fj3dC..','user-agent': 'Mozilla/5.0'}r = requests.get(url, timeout=30, headers=kv)# r = requests.get(url, timeout=30)# print(r.status_code)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.textexcept:return "爬取失败"
def getHTMLText(url):kv = {'cookie': '_samesite_flag_=true; cookie2=195dff0324895b700ba634018a2ac64e; t=6bbdbc591d36d67778340ef719afc85c; _tb_token_=eb63db08164ee; cna=9dQpF7ahfAQCAd9OzfM8zmTS; sgcookie=EKhPCohfwHt5Dg2zgQ09w; unb=3988658748; uc3=id2=UNk%2FQP%2B50d7yBA%3D%3D&lg2=W5iHLLyFOGW7aA%3D%3D&vt3=F8dBxGR00G4Vq8iN838%3D&nk2=F5RGMONYP9KxERo%3D; csg=c55d9bd9; lgc=tb364519060; cookie17=UNk%2FQP%2B50d7yBA%3D%3D; dnk=tb364519060; skt=f3a74c6461da5d67; existShop=MTU4NzczNDQxNQ%3D%3D; uc4=nk4=0%40FY4NBfuSRJNW4XqsCry%2B3TpKGY0MKg%3D%3D&id4=0%40Ug41QXQdvkTdsMbGD9g6QMnhzVJ5; tracknick=tb364519060; _cc_=V32FPkk%2Fhw%3D%3D; _l_g_=Ug%3D%3D; sg=083; _nk_=tb364519060; cookie1=VWYsqwEgWtu8l0Q758GIDYbsNwhhNFtpRArXKgAwLSs%3D; enc=A05bLdQMTOJv1LJ%2FYSTWgRjCt3xrLShv3Tavb4MOA%2FQ8vHAqk5KThAlASw%2BPty4uWQcMFeWzcDzwbtjitS%2B%2FDA%3D%3D; tfstk=cbUdBFiQAOXnz4NE0zIiPsExUbJRa4RKEBMJy_98QXVDYLYpRsbzorEjmMGypVCO.; hng=CN%7Czh-CN%7CCNY%7C156; uc1=cookie16=Vq8l%2BKCLySLZMFWHxqs8fwqnEw%3D%3D&cookie21=W5iHLLyFe3xm&cookie15=VT5L2FSpMGV7TQ%3D%3D&existShop=false&pas=0&cookie14=UoTUPcvNkROvRg%3D%3D; mt=ci=63_1; v=0; thw=cn; JSESSIONID=5F754971566500914381AE6D65E5F002; isg=BDMz5_5caXiW1SWsM_XUTXjGwjddaMcqJ-Pv3eXQ4dKJ5FKGbDv3etWymhQKxB8i; l=eBrzUkaVQ-AOu1eFBOfwnurza77OhIRfguPzaNbMiT5PODfp5jXfWZj4NzL9CnGVH6PBJ3JMwUX8BJYN0yhqJxpsw3k_J_fj3dC..','user-agent': 'Mozilla/5.0'}r = requests.get(url, timeout=30, headers=kv)# r = requests.get(url, timeout=30)# print(r.status_code)r.raise_for_status()r.encoding = r.apparent_encodingreturn r.text

2. 对于每个页面,提取商品名称和价格信息

def parsePage(glist, html):'''解析网页,搜索需要的信息:param glist: 列表作为存储容器:param html: 由getHTMLText()得到的:return: 商品信息的列表'''try:# 使用正则表达式提取信息price_list = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)name_list = re.findall(r'\"raw_title\"\:\".*?\"', html)for i in range(len(price_list)):price = eval(price_list[i].split(":")[1])  #eval()在此可以去掉""name = eval(name_list[i].split(":")[1])glist.append([price, name])except:print("解析失败")
def parsePage(glist, html):# 使用正则表达式提取信息price_list = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html)name_list = re.findall(r'\"raw_title\"\:\".*?\"', html)for i in range(len(price_list)):price = eval(price_list[i].split(":")[1])  #eval()在此可以去掉""name = eval(name_list[i].split(":")[1])glist.append([price, name])

3. 将信息输出到屏幕上

def printGoodList(glist):tplt = "{0:^4}\t{1:^6}\t{2:^10}"print(tplt.format("序号", "商品价格", "商品名称"))count = 0for g in glist:count = count + 1print(tplt.format(count, g[0], g[1]))
# 根据页面url的变化寻找规律,构建爬取url
goods_name = "书包"  # 搜索商品类型
start_url = "https://s.taobao.com/search?q=" + goods_name
info_list = []
page = 3  # 爬取页面数量
count = 0
for i in range(page):count += 1try:url = start_url + "&s=" + str(44 * i)html = getHTMLText(url)  # 爬取urlparsePage(info_list, html) #解析HTML和爬取内容print("\r爬取页面当前进度: {:.2f}%".format(count * 100 / page), end="")  # 显示进度条except:continue
爬取页面当前进度: 100.00%
printGoodList(info_list)
 序号   商品价格      商品名称   1     139.00  双肩包男书包中学生时尚潮流女初中生男背包2   59.00   双肩包男士大容量旅行电脑背包时尚潮流高中初中学生书包女小学生3     149.00  鳄鱼男士双肩包商务休闲电脑帆布背包旅游旅行包时尚潮流学生书包4     279.00  Jordan 官方 AIR JORDAN 双肩包 书包背包CW76995    288.00  【新品】JanSport杰斯伯双肩包女学生书包男背包运动休闲背包4QUT6   99.90   迪卡侬户外双肩背包男女休闲双肩包运动学生小书包轻便10L QUBP7      899.00  【买1送1】Fion/菲安妮大牌双肩包女 2020新款印花背包旅行书包8    175.00  不莱玫迪士尼合作款书包女韩版高中百搭ins双肩包时尚可爱小背包9    398.00  安踏中国对背包男潮牌2020春季新款大容量书包学生旅行运动双肩包10  689.00  背包双肩包男士商务旅行背包防盗电脑包休闲书包男多功能大旅游包11    149.00  花花公子男士背包2020年新款商务电脑双肩包高中学生大容量书包12   149.00  PUMA彪马背包2020新款女包双肩包拎包休闲小包PU小书包076960-0213   598.00  Herschel Nova 时尚双肩包Gradient渐变系列休闲背包 书包1050114   189.00  阿迪达斯双肩包男女2020新款初中生高中学生书包大容量背包DT863815   998.00  Herschel Little America经典色旅游双肩包男女士背包书包1002016   409.00  初弎牛仔善恶 学生书包街头潮流男女时尚休闲双肩包男士背包4141317     179.00  安踏双肩包2020潮牌大容量旅行背包男休闲简约学生书包运动背包男18  479.00  Fjallraven/瑞典北极狐双肩包kanken书包女电脑旅行背包官方2351019     145.00  不莱玫迪士尼合作款双肩包女韩版百搭可爱小书包ins潮酷旅行背包20   288.00  【新品】JanSport杰斯伯双肩包女大学生书包男休闲背包4QUT04S21  219.00  PUMA彪马双肩包男包女包2019新款运动包休闲背包学生书包07470622  199.00  PUMA彪马官网正品双肩包男包女包2020春季新款运动包学生书包背包23    199.00  瑞士军士刀双肩包男大容量休闲商务旅行电脑背包男士初中学生书包24    289.00  Viney双肩包包2020新款潮真皮时尚背包女大容量书包韩版百搭女包25    139.00  阿迪达斯双肩背包男包女包2020夏季新款运动电脑包学生书包FQ526126   218.00  【直营】Puma彪马女包双肩包运动包学生书包休闲包背包076944-0227  298.00  【直营】Nike男女包BRSLA M BKPK-PRX GFX运动包双肩包书包CT615428     970.00  Gaston Luga瑞典潮牌背包男双肩包女大容量旅行包休闲书包电脑包29   399.00  李宁双肩包男包女包2020新款乒乓球系列书包学生运动包ABJP18230    199.00  Skechers斯凯奇青少年款男女童学生双肩背包大容量书包L419K01931     698.00  kipling女大容量背包春夏新品时尚简约潮流休闲书包双肩包|MATTA32  498.00  Tiger Family护脊减负书包 小学生3-5年级儿童女12周岁男童背包33    889.00  kipling男女大容量电脑背包2020年新款时尚书包旅行双肩包|SEOUL34    899.00  挪威官方正品Beckmann小学生书包女男儿童护脊减压背包1-3年级35    129.00  uek小学生书包男孩女生一三五 六年级护脊双肩6-12岁轻便减压儿童36    158.00  安踏花木兰联名双肩包男女官网2020新款学生书包大容量运动旅行包37  178.00  迪士尼小学生书包女童1-3-4一三年级冰雪奇缘女孩减负儿童双肩包638     149.00  PUMA彪马双肩包2020夏季新款马卡龙初中高中学生书包运动包背包潮39    199.00  Skechers斯凯奇新品青少年款男女童休闲大容量双肩包书包L120K00140    189.00  阿迪达斯新款书包Adidas男包女包2020新款学生运动双肩包户外背包41   139.00  探路者轻便双肩包户外防水旅行背包运动休闲小书包超轻印花皮肤包42    438.00  tigerfamily小学生书包1-3年级男女孩儿童书包减负护脊背包6周岁43     49.90   ins书包女韩版高中原宿ulzzang初中生中学生百搭泫雅大容量双肩包44   115.00  kk树书包小学生女孩6-12岁儿童一二三到六年级女童双肩包护脊减负45     399.00  FILA斐乐童装旗舰店儿童双肩包小学生书包男童女童低年级背包新款46  142.00  七匹狼双肩包男大容量背包书包新款超大商务休闲旅行笔记本电脑包47    129.00  小米双肩包书包男女笔记本电脑包时尚潮流旅行背包48   188.00  迪士尼拉杆书包小学生女童3-6年级公主3轮爬楼女孩两用儿童双肩包49  419.00  Fjallraven/北极狐双肩包kanken mini 迷你情侣书包背包女2356150   142.00  七匹狼双肩包男大容量背包书包新款超大商务休闲旅行笔记本电脑包51    129.00  小米双肩包书包男女笔记本电脑包时尚潮流旅行背包52   188.00  迪士尼拉杆书包小学生女童3-6年级公主3轮爬楼女孩两用儿童双肩包53  399.00  FILA斐乐童装旗舰店儿童双肩包小学生书包男童女童低年级背包新款54  189.00  阿迪达斯双肩包男女2020新款初中生高中学生书包大容量背包DT863855   288.00  真皮双肩包女2020年新款书包女百搭大容量头层牛皮女士软皮背包潮56  268.00  BOPAI博牌电脑背包男户外旅行休闲双肩包商务书包出差多功能男包57  229.00  迪士尼商店 冰雪奇缘艾莎公主小学生书包儿童书包双肩包女童书包58    219.00  PUMA彪马双肩包男包女包2019新款运动包休闲背包学生书包07470659  288.00  【新品】JanSport杰斯伯双肩包女学生书包男背包运动休闲背包4QUT60  288.00  JanSport杰斯伯旗舰店双肩背包男高中背包书包休闲运动包4QUT77R61     175.00  不莱玫2020新款迪士尼书包时尚复古ins风小背包女双肩包迷你小包62     698.00  Herschel Retreat春夏新色旅游双肩包男女士书包背包百搭1006663   498.00  Herschel City中号校园双肩包男书包背包潮牌女 ins 百搭1048664  179.00  安踏双肩包2020男士旅行大容量时尚潮流高中初中学生书包运动背包65  669.00  kipling女士帆布背包2020年新款时尚简约休闲潮流书包双肩包|ROSE66    189.00  阿迪达斯新款书包Adidas男包女包2020新款学生运动双肩包户外背包67   149.00  PUMA彪马官网旗舰双肩包男包女包2020新款初中高中学生书包电脑包68    869.00  kipling男女大容量电脑包2020新款时尚书包旅行包双肩包|SO BABY69   378.00  tigerfamily儿童书包小学生一年级1-3 女男6岁耐磨减负护脊双肩包70    175.00  不莱玫迪士尼合作款书包女韩版高中百搭ins双肩包时尚可爱小背包71   168.00  儿童书包可爱幼儿园2-6岁宝宝甜甜圈彩虹韩版女童女孩双肩小背包72   98.00   迪士尼小学生书包女童1-3-4三四年级冰雪奇缘女孩儿童减负双肩包673     899.00  [2020新款]挪威Beckmann小学生书包女男儿童护脊减压背包1-3年级74    699.00  北极狐laptop笔记本电脑包13/15/17英寸男女手提双肩背包学生书包75     149.00  花花公子男士背包2020年新款商务电脑双肩包高中学生大容量书包76   299.00  CHARLES&KEITH女包CK2-80840173-1粗链条翻盖单肩情书包婚包77  239.00  Skechers斯凯奇男女同款双肩背包书包LOGO刺绣运动休闲包L120U02178  139.00  瑞士军士刀双肩包男大容量瑞士军刀旅行电脑背包男士初中学生书包79    389.00  朱丹推荐诺狐书包小学生女孩一二三到六年级护脊减负儿童双肩背包80    479.00  Fjallraven/北极狐书包kanken双肩包女户外包运动背包男2351081   1588.00 【GPS定位】英国AnythingStudio小学生书包 儿童女进口英伦日本风82   103.50  瑞士军刀双肩包男背包休闲商务旅行大容量瑞士书包高中生电脑男士83    589.00  双肩包男士背包商务休闲旅行背包防盗旅游包女大中学生书包电脑包84    209.00  EVB新款双肩包女韩版潮电脑背包旅行运动初高中小大学生书包男85    398.00  安踏中国英雄双肩包潮牌街头嘻哈情侣双肩包男女时尚潮流书包背包86    408.00  李宁CF溯系列双肩包敦煌拓男包女包2020新款学生书包运动包87    2598.00 【亚洲限定款】天使之翼SEIBAN 日本保税护脊减负小学生粉色书包88     195.02  国家地理背包女运动户外时尚双肩包男牛津布旅行防水学生情侣书包89    2180.00 FREITAG F49 FRINGE 双肩包 旅行背包书包 瑞士环保潮流包90     149.00  华为旗下荣耀亲选双肩包书包背包男女学生商务大学生大容量防水91     218.00  【直营】Puma彪马女包双肩包运动包学生书包休闲包背包076944-0292  178.00  书包ins韩版原宿ulzzang初中高中大学生百搭森系背包网红双肩包女93   499.00  日本进口卡芙露书包小学生1-3年级6儿童轻便减负护脊男女双肩背包94  499.00  Samsonite/新秀丽双肩包包2020新款 书包女ins风背包旅行包TQ495   119.00  Skechers斯凯奇2020春夏青少年男女童实用书包休闲双肩包L419K05096  359.00  Sams nite新秀丽商务双肩包女 电脑背包大学生休闲书包男BU197    499.00  FION/菲安妮新款双肩包旅行包 女士印花背包青年防水名牌书包小包98     149.00  爱果乐小学生书包女三四五六年级护脊减负儿童男双肩背包6-12岁99   599.00  Fion/菲安妮时尚潮流双肩包女 小怪兽可爱学生书包简约女士小背包
100     86.00   迪士尼书包男小学生1-3-6三到六4年级儿童双肩护脊减负轻便背包女
101     229.00  朱尔防盗双肩包女2020新款时尚牛津布女士背包百搭书包帆布女包包
102     115.00  KK剑桥树书包小学生男孩一二三到六年级儿童6-12岁男童双肩包减负
103     299.90  迪卡侬休闲旅行包出差大容量户外防雨罩男女书包登山包双肩包FOR3
104     59.80   儿童书包小学生男女一二三到六年级韩版减负护脊贵族书包轻便防水
105     149.00  小米 米兔儿童书包 6-12岁男女小学生潮双肩背包幼儿园大容量背包
106     498.00  ito双肩包男商务设计师电脑包14寸女潮流书包ins风小背包时尚百搭
107     188.00  优仅ALLJOINT儿童书包可爱幼儿园双肩甜甜圈彩虹幼儿背包女童包包
108     488.00  香港tigerfamily小学生护脊书包 男女5-9年级初中学生减负双肩包
109     798.00  ito双肩包男商务设计师电脑包女皮质背包书包ins韩版原宿ulzzang
110     153.00  七匹狼双肩包男大容量男士旅游背包休闲商务旅行包超大电脑包书包
111     358.00  JanSport旗舰店官网双肩背包女电脑包男高中大学学生书包 3P6X47R
112     288.00  【新品】JanSport杰斯伯双肩包女旗舰店电脑包男学生书包4QUT003
113     698.00  Herschel Retreat经典色时尚潮流男女双肩包书包背包潮牌10066
114     598.00  Herschel Dawson 双肩包男书包女ins风潮牌街头背包欧美10233
115     319.00  NIKE耐克双肩包2020夏季新款男包女包学生书包运动包背包潮BA6097
116     175.00  不莱玫迪士尼米奇双肩包新款韩版高中复古背包大容量学生帆布书包
117     398.00  kipling男女大容量电脑背包2020年新款旅行包书包双肩包|BACKPACK
118     168.00  迪士尼小学生书包男童女童1-3-4一三四年级蜘蛛侠儿童减负双肩包6
119     78.00   迪士尼书包小学生女童1-3-6一三年级冰雪公主女孩轻便儿童双肩包8
120     698.00  kipling男女款大容量轻便帆布包简约复古休闲潮书包双肩包|MICAH
121     129.00  Skechers斯凯奇2020春夏青少年男女童实用休闲双肩包书包L120K048
122     179.00  安踏双肩包2020潮牌大容量旅行背包男休闲简约学生书包运动背包男
123     378.00  tigerfamily书包小学生男孩1-3-6年级 初高中儿童护脊减负背包女
124     249.00  Nike耐克2020年新款Tanjun儿童双肩背包男女休闲书包手提包拎包
125     158.00  中国李宁双肩包男女2020新款时尚运动包书包背包学生电脑包户外包
126     199.00  小米双肩包商务旅行背包大容量书包男士时尚多功能笔记本电脑包
127     359.00  MYD双肩包女书包韩版大学生初中高中生中学生ins风肩包电脑背包男
128     139.00  阿迪达斯学生书包男女包初中高中大学生电脑包运动双肩背包FI7968
129     249.00  90分牛津帆布包休闲双肩包男时尚潮流背包书包男女韩版百搭电脑包
130     1169.00 ergobag德国儿童减负护脊护肩书包中小学生书包男女1-5年级
131     165.00  kk树小学生拉杆书包1-3-6年级女童6-12周岁儿童公主防水轻便背包
132     299.00  BOPAI博牌双肩包男商务休闲简约大容量背包时尚书包15.6寸电脑包
133     109.00  babycare宝宝入园书包婴 幼儿园小书包3岁男女儿童防走失背包可爱
134     510.00  FILA斐乐童装儿童双肩包男女童3D护脊高年级中小学生书包2020新款
135     76.00   儿童书包小学生女一二三到六年级韩版减负护脊男孩轻便防水书包
136     139.00  花花公子男士双肩包时尚潮流个性大学生书包休闲旅行电脑迷彩背包
# html

因为是动态的网页,所以要查看源码,之前那样就查找不到了

from lxml import etree
import requests
goods_name = "书包"  # 搜索商品类型
start_url = "https://s.taobao.com/search?q=" + goods_name
info_list = []
page = 3  # 爬取页面数量
count = 0
glist=[]
for i in range(page):count += 1try:url = start_url + "&s=" + str(44 * i)html = getHTMLText(url)  # 爬取urltree=etree.HTML(html)price_list = tree.xpath('//div[@class="row row-2 title"]/a@trace-price')name_list = tree.xpath('//div[@class="row row-2 title"]/a/text()')for i in range(len(price_list)):price = eval(price_list[i].split(":")[1])  #eval()在此可以去掉""name = eval(name_list[i].split(":")[1])glist.append([price, name])
#         parsePage(info_list, html) #解析HTML和爬取内容print("\r爬取页面当前进度: {:.2f}%".format(count * 100 / page), end="")  # 显示进度条except:continue
glist
[]

Task 02 re(2.3)相关推荐

  1. P1009 [NOIP1998 普及组] 阶乘之和-2022.02.01(python3实现)

    [NOIP1998 普及组] 阶乘之和 - 洛谷 """P1009 [NOIP1998 普及组] 阶乘之和-2022.02.01(python3实现) https://w ...

  2. 【零基础Eviews实例】02自相关(序列相关)的检验与修正

    使用说明 本文档主要介绍关于线性回归模型的自相关(又叫序列相关)的检验(图像法.辅助回归.DW检验与LM检验)与修正(广义差分最小二乘法,GLS).使用软件为Eviews 9. 关于一些提到的基本操作 ...

  3. Task 5: Homework(附代码)(Stanford CS224N NLP with Deep Learning Winter 2019)

    Task 5: Homework--英文词向量的探索 目录 Task 5: Homework--英文词向量的探索 词向量 本项目需要下载的包 Part 1:基于计数的词向量 问题1.1:实现不同单词 ...

  4. 排序算法-02直接插入(python实现)

    直接插入排序 地位 最简单的插入排序 过程 每趟排序将一个新元素插入到有序序列的合适位置. 算法 数据为D0,D1,D2,,,Dn.初始状态,不妨将第一个元素D0看做当前有序序列的唯一一个元素. 依次 ...

  5. 寒假训练八(优先队列)2020.02.14(7题)

    寒假训练八(优先队列)id:530 Problem:A 买饭-优先队列 Description 林大食堂非常拥挤,得排队买饭,陈老师也是一样的! 有n个人在一个卖饭窗口前排队买饭,假如每个人买饭的时间 ...

  6. 寒假训练十(map,pair,string)2020.02.17(4题)

    寒假训练十(map) id:535 Problem:A 保龄球-map Description DL 算缘分算得很烦闷,所以常常到体育馆去打保龄球解闷.因为他保龄球已经打了几十年了,所以技术上不成问题 ...

  7. SQL查询语句-练习02+答案(含截图)

    SQL巩固测试题 1.找出供应商名称,所在城市 select 公司名称,城市 from 供应商 2.找出华北地区能够供应海鲜的所有供应商列表. select 供应商.公司名称,产品.产品名称,类别.类 ...

  8. 力扣刷题笔记 数组篇02——双指针(快慢指针)法

    总结先放在前面: 双指针法在数组中是通过使用两个或者多个以上的下标,通过一个快指针和慢指针在一个for循环下完成两个for循环的工作,这样做大幅降低了时间复杂度 题目的类型也比较灵活,一般多用于有序数 ...

  9. 解决Spark数据倾斜(Data Skew)的 N 种姿势 与 问题定位

    Spark性能优化之道--解决Spark数据倾斜(Data Skew)的N种姿势 本文结合实例详细阐明了Spark数据倾斜的问题定位和几种场景以及对应的解决方案,包括避免数据源倾斜,调整并行度,使用自 ...

最新文章

  1. Shine Button动画效果 类似Tinder APP的卡片界面
  2. (超级详细)jit的介绍和用法
  3. 《算法设计手册》面试题解答 第三章:数据结构
  4. 高级开发必须理解的Java中SPI机制
  5. redis 流 stream的使用总结 - 如何遍历
  6. SQL优化:从设计表结构开始(层次型表结构设计方法)
  7. 【渝粤题库】国家开放大学2021春3979会计学概论题目
  8. 只需两步手把手教你玩转图像识别
  9. 十一假期博客活动 好礼不断惊喜连连
  10. 一天一个小技巧(4)——利用Python和MATLAB进行图片二值化
  11. python中文语料分词处理,按字或者词cut_sentence
  12. MSN Messenger
  13. 参数检验与【非参数检验】及Python/SPSS/R/Stata实现
  14. 打开我的计算机我的文档不见,win10系统我的文档不见了的设置教程
  15. 【目标检测论文解读复现NO.20】基于改进Yolov5的地铁隧道附属设施与衬砌表观病害检测方法
  16. eax,ebx,ecx,edx,esi,edi,ebp,esp寄存器的作用
  17. FSOS森林模拟优化模型学习笔记
  18. 【苹果群发】苹果推iMessage接口筛选应用程序利用密钥箱生成CSR文书
  19. php生成字母头像,Identicon:实现根据用户账号生成像素头像php版
  20. “秘密入职”字节跳动,百度高级经理一审被判赔107万

热门文章

  1. SQL Server 容易忽略的错误
  2. 计算机邵博士网课,程序设计入门——C语言(邵绪强)
  3. 《数字图像处理》主编:曹茂永
  4. 【UE4从零开始 083】体积光照贴图
  5. 微信公众平台企业号验证接口、回调 PHP版
  6. Jenkins任务调度源码简要分析
  7. 给希望成为游戏美术设计师的朋友
  8. 让DedeCMS的栏目页标题显示页码数
  9. d2-admin动态菜单权限(登陆后)
  10. 今天,你开发了吗?有成为这1/1000000了吗