【学习任务】为什么老师抓取到的订单数据比页面上显示的要多?
我要参与
【学习任务】为什么老师抓取到的订单数据比页面上显示的要多?
学习任务 789
等44人参与
来源: 第16周 / Python全能工程师

小伙伴们,你们跟着老师的视频敲代码了吗,细心的小伙伴可能已经发现了,老师抓取到的订单数据比页面上显示的要多,确切的说是网页显示数据的2倍,这是为什么呢?下面小慕和大家一起来分析一下
1、打开浏览器的开发者模式,访问订单列表页面,在网页元素中搜索一个订单号,比如C5143484115349,你会发现,在网页中有两个相同的订单号C5143484115349
图片描述
2、再仔细看,发现其中一个订单的class属性值包含is-hidden,此时的你是否恍然大悟呢,原来这是隐藏标签,在网页上不会显示出来,但xpath语句定位到了
3、将隐藏的属性过滤掉就可以啦,接下来动手编写代码实现一下吧
提示: 可以借助xpath contains()函数取反来实现此功能,相关知识点详见 阶段四 · 网络爬虫常用技术 3-4小节

去发布

登录后即可发布作业,立即

我的作业

全部作业 44

浪子无钱逛酒家
def parse_html(self, content):
	"""
	解析网页数据
	:param content: 网页源代码
	:return:
	"""
	html = etree.HTML(content)
	items = html.xpath("//tbody/tr")
	for i in items:
		# 每一个i就是每一条订单数据
		# datas = i.xpath("./td/div/text()")
		datas = i.xpath("./td[not(contains(@class,'is-hidden'))]/div/text()")
		status = "".join(i.xpath("./td[not(contains(@class,'is-hidden'))]//div[@class='tags']/span/text()"))
		if len(datas) > 0 and status:
			data = {
				"order_id": datas[0],
				"order_num": datas[1],
				"order_value": datas[2],
				"price": datas[3],
				"status": status
			}

			print(data)
			# 插入到mongo
			self.mycollection.insert_one(data)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
代码块
复制 预览
复制成功!
提交于  2021-09-14 10:22:16
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师