Scrapy: 从meta标签提取值

3 投票
1 回答
6137 浏览
提问于 2025-04-17 22:01

我正在为一个网页制作爬虫,出于某种原因,这个网页把我需要提取的物品的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()]

希望这对你有帮助。

撰写回答