【问题标题】:Unable to retrieve all urls from with a ordered list(<li></li)?无法从有序列表中检索所有 url (<li></li)?
【发布时间】:2017-06-21 15:39:33
【问题描述】:

我正在尝试从锚标记中检索所有 url。我使用了查询response.selector.xpath('//li[@class="active"]//a/@href').extract(), 提取所有网址,但我只得到几个查询。

网页结构如下:

    `<ul class="data">
        <li id="all" class="active">
            <a class="fit" href="#1"></a>
                <div class="1">
                    <a target="_blank" href="www.yahoo.com">
                </div>
                <div class="2">
                    <a target="_blank" href="www.google.com">
                </div>  
            <a class="fit" xmlns:listval="com.indiatimes.cms.utilities.CMSDateUtility" xmlns:java="java" href="#2"></a> 
                <div class="1">
                    <a target="_blank" href="www.facebook.com">
                </div>
                <div class="2">
                    <a target="_blank" href="www.bing.com">
                </div>  
            <a class="fit"  xmlns:listval="com.indiatimes.cms.utilities.CMSDateUtility" xmlns:java="java" href="#3"></a> 
                <div class="1">
                    <a target="_blank" href="www.amazon.com">
                </div>
                <div class="2">
                    <a target="_blank" href="www.flipkart.com">
                </div>  
            <a class="fit"  xmlns:listval="com.indiatimes.cms.utilities.CMSDateUtility" xmlns:java="java" href="#4"></a> 
                <div class="1">
                    <a target="_blank" href="www.snapdeal.com">
                </div>
                <div class="2">
                    <a target="_blank" href="www.infibeam.com">
                </div>          
        </li>
</ul>`

上一个查询只获取“www.yahoo.com”和“www.google.com”。 我需要做什么调整才能获得所有的 href ?

【问题讨论】:

  • 我试过你的代码,我得到了所有的@href 字段。你能展示你的结果吗?
  • 好吧,我正在另一个网页上应用它,它具有类似的结构,但我只得到了 href 的 uptill 而没有超出!
  • 请禁用浏览器中的 javascript 并检查您要查找的内容是否仍在其中。
  • @VMRuiz 禁用 java 脚本后我找不到内容。难怪我没有得到那些href!我现在该怎么办? (因为它更像是抓取 js,而不是 html)
  • 您需要使用浏览器渲染页面,例如Splash.

标签: python html xpath scrapy


【解决方案1】:

尝试使用 CSS 选择器而不是 Xpath

for link in response.css("li.active a"):
     link_id = link.css("::attr(href)").extract_first()

【讨论】:

  • 好吧,我尝试了你的代码,我得到了 ExpressionError: The pseudo-class :attr() is unknown,我正试图弄清楚。您可以向我推荐一个 Xpath 查询吗?
猜你喜欢
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-31
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多