簡體   English   中英

使用Python檢索img src屬性的xpath語法有問題

[英]Having trouble with the xpath syntax for retrieving img src attribute using Python

我一直試圖找出解析這個html的xpath語法,但我沒有得到與其他人相同的結果。 我之后一直在為我的工作建模, http://docs.python-guide.org/en/latest/scenarios/scrape/#web-scraping ,但我不能讓它為我的html工作。

<div id="sku-8103">
    <!-- B:649 -->
    <input type="hidden" id="productIdPDP" value="1218866963585"/>
    <input type="hidden" id="skuIdPDP" value="8240103" />
    <input type="hidden" id="enableLightbox" value="" />
    <!-- B:780 -->
    <img src="http://images.bestbuy.com/BestBuy_US/en_US/images/global/buttons/btn_notorderable_pdp.gif" alt="Not Orderable" border="0" id="notorderable" />
    <input name="8240103" type="hidden" value="1">
    <!-- E:780 -->
    <!-- E:649 -->
    </div>

我的代碼:

import pycurl
import sys
import cStringIO
from lxml import etree
from lxml import html

buf = cStringIO.StringIO()

c = pycurl.Curl()
c.setopt(c.URL, 'http://www.bestbuy.com/site/sony-playstation-4-500gb/8240103.p?id=1218866963585&skuId=8240103')
c.setopt(c.WRITEFUNCTION, buf.write)
c.perform()

data = buf.getvalue()
buf.close()

tree = html.fromstring(data)


product = tree.xpath('//div[@id="sku-8240103"]/img[@src]')
print product

輸出為: []而不是圖像的src值。 我也嘗試過:

product = tree.xpath('//div[@id="sku-8240103"]/img[@src]/text()')

但這似乎也沒有用。

你的HTML有這個:

<div id="sku-8103">

你正在搜索:

product = tree.xpath('//div[@id="sku-8240103"]/img[@src]')

注意不同的SKU號碼? 沒有匹配的節點,因此您返回空列表[]

如果你改變它:

product = tree.xpath('//div[@id="sku-8103"]/img[@src]')

你現在得到一個單元素列表,如下所示:

[<Element img at 0x10c85b890>]

如果你這樣做:

print product[0].attrib['src']

你得到這個:

http://images.bestbuy.com/BestBuy_US/en_US/images/global/buttons/btn_notorderable_pdp.gif

真的,你不需要那里的[@src]部分; 如果您正在試圖限制它img S作一個src屬性...還有什么其他img你希望請參閱s?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM