Scrapy: 从meta标签提取值
我正在为一个网页制作爬虫,出于某种原因,这个网页把我需要提取的物品的ID号码放在了meta标签里,格式是这样的:
<meta content="1001662613">
其中引号里的数字就是我想要的。
我试着用xpath来提取这个信息:
Id = title.select('//meta [@content]').extract()
但是结果是空的。使用
Id = title.select('//meta/@content').extract()
反而让我得到了整个页面的源代码,包含了meta标签之后的内容……
有没有办法直接从标签中提取这个数字,而不是去标签里找(因为标签里是空的)?
为了参考,这里有一个示例,展示了ID号码在页面源代码中的位置:
<link rel="stylesheet" type="text/css" href="/ccss/2076d1c6bea75c5b6f4c753b3b4920b6_14bfe2d5b91d791bc05282634acdfb68.css" />
<script type="text/javascript" src="/cjs/986570aebf4e6cef6e0a52faa9c5a8a2_f4ceae6565fa007f39ee4e0abe02ab7b.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js"></script>
<script type="text/javascript" src="/cjs/a373b58f85b5e68c60f3edc35b348e14_a2abaa7837c3e1ccda94d6fe6b0f7a8f.js"></script>
<meta content="1001657519"/>
<link href="http://www.groupon.com.uy/descuentos/montevideo/sushi-go-26-12-7" rel="canonical" />
<link href="http://www.groupon.com.uy/deals/feed.rss" type="application/rss+xml" rel="alternate" title="Groupon - Descuentos" />
<meta name="title" content="Desde $264 en vez de $462 por 24, 48 o 72 piezas de sushi en Sushi Go"/>
1 个回答
2
//meta/@content
这个代码会返回多个结果,因为页面上有多个 meta
标签。你只需要筛选出包含数字的那一个就可以了:
ids = title.select('//meta/@content').extract()
print [id for id in ids if id.isdigit()]
希望这对你有帮助。