我想从以下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()
但是我得到了空值。请帮忙。
答案 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节点的总路径是错误的,是全部。