Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从URL返回空列表的Python XPath_Python_Xml_Xpath - Fatal编程技术网

从URL返回空列表的Python XPath

从URL返回空列表的Python XPath,python,xml,xpath,Python,Xml,Xpath,我正在尝试使用XPath访问以下URL的元素: 我正在寻找的具体元素是Div类“sr_item_link_to_villas”。我一直在使用以下XPath尝试访问它(在本例中,我尝试访问第二个列表,但完整的脚本在每个列表中循环),但它返回一个空列表: //*[@id="hotellist_inner"]/*[contains(@class,"sr_item")][2]//*[contains(@class,"sr_item_link_to_villas ")] 完整代码为: url='htt

我正在尝试使用XPath访问以下URL的元素:

我正在寻找的具体元素是Div类“sr_item_link_to_villas”。我一直在使用以下XPath尝试访问它(在本例中,我尝试访问第二个列表,但完整的脚本在每个列表中循环),但它返回一个空列表:

//*[@id="hotellist_inner"]/*[contains(@class,"sr_item")][2]//*[contains(@class,"sr_item_link_to_villas ")]
完整代码为:

url='http://www.booking.com/searchresults.html?dest_id=2400&dest_type=region&offset=288'
page = parse(url).getroot()
pathstr='//*[@id="hotellist_inner"]/*[contains(@class,"sr_item")][2]//*[contains(@class,"sr_item_link_to_villas ")]'
content=page.xpath(pathstr)

以下代码可能会解决您的问题。您必须为获取数据添加标题值

    import urllib2
    from lxml import etree
    from lxml.html import tostring,fromstring

    def get_HTML(url):
        header={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:41.0) Gecko/20100101 Firefox/41.0","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Connection": "keep-alive"}
        req=urllib2.Request(url,None,header)
        return urllib2.urlopen(req).read()

    url="http://www.booking.com/searchresults.html?dest_id=2400&dest_type=region&offset=288"

    read = get_HTML(url)
    tree = etree.HTML(read)    
    data = tree.xpath("//div[@class='sr_item_link_to_villas ']/a/text()");
    print data