【问题标题】:Navigating to ScienceDirect's NextPage using scrapy使用 scrapy 导航到 ScienceDirect 的 NextPage
【发布时间】:2015-08-25 10:36:53
【问题描述】:

使用 Scrapy,如何从sciencedirect.com 生成的任何结果页面导航到“下一页”链接?

下一页链接是输入元素:

<div class="paginationBar">
<span style="color:#A4A4A4;" aria-disabled="true" alt="Previous Page" title="Previous Page"><< Previous</span>
<span class="pageText">Page 1 of 20462</span>
<input class="nextPrev" type="submit" title="Next Page" alt="Next Page" name="bottomNext" onmouseout="this. className='nextPrev'" onmouseover="this.className='nextPrevHov'" value="Next >>">
</div>

并且存在一些javascript,但我不知道如何使用它:(

【问题讨论】:

    标签: python web web-crawler scrapy


    【解决方案1】:

    答案很简单:不涉及 JavaScript。

    如果您查看该站点,您可以看到链接 Next &gt;&gt; 是一个 input 字段,其中 submits 是 form

    查看form 本身时,您可以看到它向站点发送get 请求。您可以将此请求的 input 字段收集在一起,然后使用 Scrapy 将 yield 新的 Request 抓取到下一个站点。

    一个例子是:

    form = response.xpath('//form[@name="Tag"]')[0]
    url = 'http://www.sciencedirect.com/science/?'
    for inp in form.xpath('.//input[@type="hidden"]'):
        url += inp.xpath('./@name').extract()[0]+'='+inp.xpath('./@value').extract()[0]+'&'
    url += 'bottomNext=Next+%3E%3E&resultsPerPage=25'
    yield Request(url)
    

    当然需要一些错误处理(例如,在 1000 个结果之后,您无法查看更多结果,因此您将获得一个没有 form 的错误站点)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      相关资源
      最近更新 更多