资讯详情

网络爬虫:商品比价定向爬虫

商品比价定向爬虫


文章目录

      • 商品比价定向爬虫
        • Reference
        • 功能描述
        • 定向爬虫的可行性
        • 程序结构设计
        • 程序编写
        • 源代码
        • 输出结果(部分)
        • 总结


Reference

爬虫 MOOC

数据分析 MOOC

廖雪峰老师的 Python 教程

功能描述

目标:获取平台搜索页面的信息,提取商品名称和价格。

理解:

  • 某平台的搜索接口

  • 翻页的处理

在这里插入图片描述

搜索接口和翻页URL对应属性:

“书包”

定向爬虫的可行性

程序结构设计

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

步骤2:为每个页面提取商品名称和价格信息

步骤3:将信息输出到屏幕上

程序编写

价格:

名字:

只需将 从许多信息中提取

源代码

# -*- coding:utf-8 -*-  import requests import re  #需要修改requests.get()在方法中控制访问参数headers,解决网站反爬问题 headers = { 
        'cookie':'thw=cn; v=0; t=ab66dffdedcb481f77fd563809639584; cookie2=1f14e41c704ef58f8b66ff509d0d122e; _tb_token_=5e6bed8635536; cna=fGOnFZvieDECAXWIVi96eKju; unb=1864721683; sg=下3f; _l_g_=Ug==; skt=83871ef3b7a49a0f; cookie1=BqeGegkL+LUif2jpoUcc6t6Ogy0RFtJuYXR4VHB7W0A=; csg=3f233d33; uc3=vt3=F8dBy3/50cpZbAursCI=&id2=UondEBnuqeCnfA==&nk2=u/5wdRaOPk21wDx/&lg2=VFC/uZ9ayeYq2g==; existShop=MTU2MjUyMzkyMw==; tracknick=\u4E36\u541B\u4E34\u4E3F\u5929\u4E0B; lgc=\u4E36\u541B\u4E34\u4E3F\u5929\u4E0B; _cc_=WqG3DMC9EA==; dnk=\u4E36\u541B\u4E34\u4E3F\u5929\u4E0B; _nk_=\u4E36\u541B\u4E34\u4E3F\u5929\u4E0B; cookie17=UondEBnuqeCnfA==; tg=0; enc=2GbbFv3joWCJmxVZNFLPuxUUDA7QTpES2D5NF0D6T1EIvSUqKbx15CNrsn7nR9g/z8gPUYbZEI95bhHG8M9pwA==; hng=CN|zh-CN|CNY|156; mt=ci=32_1; alitrackid=www.taobao.com; lastalitrackid=www.taobao.com; swfstore=97213; x=e=1&p=*&s=0&c=0&f=0&g=0&t=0&__ll=-1&_ato=0; uc1=cookie16=UtASsssmPlP/f1IHDsDaPRu+Pw==&cookie21=UIHiLt3xThH8t7YQouiW&cookie15=URm48syIIVrSKA==&existShop=false&pas=0&cookie14=UoTaGqj/cX1yKw==&tag=8&lng=zh_CN; JSESSIONID=A502D8EDDCE7B58F15F170380A767027; isg=BMnJJFqj8FrUHowu4yKyNXcd2PXjvpa98f4aQWs-RbDvsunEs2bNGLfj8BYE6lWA; l=cBTDZx2mqxnxDRr0BOCanurza77OSIRYYuPzaNbMi_5dd6T114_OkmrjfF96VjWdO2LB4G2npwJ9-etkZ1QoqpJRWkvP.; whl=-1&0&0&1562528831082',           'user-agent':} def getHTMLText(url): try: r = requests.get(url, headers = headers, timeout = 30) #类比当时爬亚马逊的例子 r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "" def parsePage(ilt, html): try: plt = re.findall(r'\"view_price\"\:\"[\d\.]*\"', html) #匹配价格 tlt = re.findall(r'\"raw_title\"\:\".*?\"', html) #匹配名称。*?表示最小匹配,只取得最后一个"的内容 for i in range(len(plt)): price = eval(plt[i].split(':')[1]) #eval将最外层单双引号去掉,split以:作为分隔 title = eval(tlt[i].split(':')[1]) ilt.append([price, title]) except: print("") def printGoodsList(ilt): tplt = "{:4}\t{:8}\t{:16}" print(tplt.format("序号", "价格", "商品名称")) count = 0 for g in ilt: count = count + 1 print(tplt.format(count, g[0], g[1])) def main(): goods = '书包' depth = 3 #爬取深度 start_url = 'https://s.taobao.com/search?q=' + goods infoList = [] for i in range(depth): try: url = start_url + '&s=' + str(44*i) html = getHTMLText(url) parsePage(infoList, html) except: continue printGoodsList(infoList) main() 

输出结果(部分)

总结

采用 requests‐re 路线实现了某电商平台商品比价定向爬虫。

熟练掌握正则表达式在信息提取方面的应用。

标签: sp2841a502角度传感器a502高精度电位计角度传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台