【问题标题】:Scraping attributes values in Python LXML is giving empty results在 Python LXML 中抓取属性值会给出空结果
【发布时间】:2021-09-13 03:07:27
【问题描述】:

我正在尝试抓取一个网站,您可以在下面的代码中找到它的链接

目标是从属性中获取数据,因为在检查代码时没有文本

这是一个元素的完整 XPath:

/html/body/div[2]/div[3]/div/div[3]/section[1]/div/div[2]/div[1]

和代码:

import requests
from lxml import html
page = requests.get('https://www.meilleursagents.com/annonces/achat/nice-06000/appartement/')
tree = html.fromstring(page.content)

尝试使用以下方法抓取属性“data-wa-data”值:

tree.xpath('/html/body/div[2]/div[3]/div/div[3]/section[1]/div/div[2]/div[1]/@data-wa-data')

产生空值

同样的问题出现在另一个有文本的元素上:

tree.xpath('/html/body/div[2]/div[3]/div/div[3]/section[1]/div/div[2]/div[1]/div/a/div[1]/text()')

【问题讨论】:

    标签: python html web-scraping xpath lxml


    【解决方案1】:

    问题是该网站需要User-Agent 才能下载完整的HTML,而您的情况则没有这个HTML。因此,要获取完整的页面,将 user-agent 作为 header 传递。

    注意:该网站在屏蔽方面更具侵略性。我的意思是,你甚至不能用同一个用户代理发出两个连续的请求。因此,我的建议是轮换代理和用户代理。此外,还要在每个请求之间添加下载延迟,以避免快速访问服务器。

    代码

    import requests
    from lxml import html
    
    headers = {
        'user-agent':  'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0'
    } 
    
    page = requests.get('https://www.meilleursagents.com/annonces/achat/nice-06000/appartement/', headers=headers)
    
    tree = html.fromstring(page.content)
    
    print(tree.xpath('//div[@class="listing-item search-listing-result__item"]/@data-wa-data'))
    

    输出

    ['listing_id=1971029217|realtor_id=21407|source=listings_results', 'listing_id=1971046117|realtor_id=74051|source=listings_results', 'listing_id=1971051280|realtor_id=71648|source=listings_results', 'listing_id=1971053639|realtor_id=21407|source=listings_results', 'listing_id=1971053645|realtor_id=38087|source=listings_results', 'listing_id=1971053650|realtor_id=29634|source=listings_results', 'listing_id=1971053651|realtor_id=29634|source=listings_results', 'listing_id=1971053652|realtor_id=29634|source=listings_results', 'listing_id=1971053656|realtor_id=39588|source=listings_results', 'listing_id=1971053658|realtor_id=39588|source=listings_results', 'listing_id=1971053661|realtor_id=39588|source=listings_results', 'listing_id=1971053662|realtor_id=39588|source=listings_results']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 2010-10-23
      相关资源
      最近更新 更多