无法在python中提取<img alt=""/>的值

时间:2013-10-15 11:12:58

标签: python scrapy

我想从以下img标记中提取网站http://www.snapdeal.com/product/aoc-e2060-swn-20-inch/622813?pos=0;85中的品牌名称:

      <img src="http://i1.sdlcdn.com/img/brand/logo/2012-08-01-02-31-15-AOC.jpg" alt="Aoc" width="75" height="45">

即,我想提取“Aoc”。我试过这个:

   hxs.select('//*[@id="wrapper"]/div[2]/div[1]/div[3]/div[1]/ul/li[1]/img/@alt').extract()).strip()

但是我得到了空值。请帮忙。

2 个答案:

答案 0 :(得分:0)

这就是你想要的吗?

import re,requests
url=requests.get(" http://www.snapdeal.com/product/aoc-e2060-swn-20-inch/622813?pos=0;85")
re.findall(r'\<img src=.* alt="(.*)" width',url.text)

答案 1 :(得分:0)

$ scrapy shell
<SNIP>
In [1]: fetch('http://www.snapdeal.com/product/aoc-e2060-swn-20-inch/622813?pos=0;85')
2013-10-16 00:37:08+0000 [default] INFO: Spider opened
2013-10-16 00:37:08+0000 [default] DEBUG: Crawled (200) <GET http://www.snapdeal.com/product/aoc-e2060-swn-20-inch/622813?pos=0;85> (referer: None)
<SNIP>
In [2]: hxs.select('//a[contains(@class, "brandName")]/img/@alt').extract()[0]
Out[2]: u'Aoc'

最好始终使用XPath尽可能“接近”目标。所有div [1] / div [3] / span [1]的废话都是如此脆弱,并且在页面改变时很可能会破坏。

使用"img/@alt".extract()获取alt属性没有任何问题。您到img节点的总路径是错误的,是全部。