美文网首页
2018-05-13 爬虫笔记(四)分析JS脚本,爬取生物信息学

2018-05-13 爬虫笔记(四)分析JS脚本,爬取生物信息学

作者: 小郑的学习笔记 | 来源:发表于2018-05-14 10:46 被阅读0次

    前面爬文章,都是爬去静态的,这里要开始分析动态加载的网站,但是我这里还没有用到splash 渲染,因为我在分析JS脚本的时候,发现了规律,然后我用一个比较笨的办法来爬文章。话不多说,直接开始。
    首先我们看博主的首页,他总共写了238篇文章


    生物信息博主

    但是当我们使用检查的时候,却只能看到最近发的文章,以前的没有加载出来,也就是为什么按照我之前的爬,只能爬一点点。

    而且当我们下滑鼠标的时候,我们发现可以加载文章出来。

    通过chrome浏览器的检查network功能,我们发现有个脚本在运作。

    这个脚本与服务器发了请求

    咱们看具体一点

    是一个有规律的请求地址

    下面的方法比较暴力,也比较笨拙,我一点一点下拉,拉倒第一篇文章为终止,也就是hello world

    hello world

    我发现参数是28

    这个URL是有规律的 28是最后一个

    那我只需要在我的爬虫中,编一个循环就OK了,话不多数说,直接上代码

        def start_requests(self):
            j = 0
            while j < 28:
                next_url = "https://www.jianshu.com/u/9ea40b5f607a?order_by=shared_at&page=" + str(j)
                j = j + 1
                yield scrapy.Request(next_url, callback=self.parse)
    
    

    上面这个是核心,下面放到总的spider中去看看

    import scrapy
    from ..items import SpiderProjectItem
    from scrapy import Request
    from scrapy_splash import SplashRequest
    
    
    
    class HoptopSpider(scrapy.Spider):
        name = 'hoptop'
        allowed_domains = ['www.jianshu.com/u/9ea40b5f607a']
        base_urls = ['http://www.jianshu.com/u/9ea40b5f607a/']
    
    
        def start_requests(self):
            j = 0
            while j < 28:
                next_url = "https://www.jianshu.com/u/9ea40b5f607a?order_by=shared_at&page=" + str(j)
                j = j + 1
                yield scrapy.Request(next_url, callback=self.parse)
    
        def parse(self, response):
            content = SpiderProjectItem()
            titles = response.xpath('//*[@id]/div/a/text()').extract()
            #for one in titles:
            #    content['title'] = one
            #    yield content
    
            #abstracts = response.xpath('//*[@id]/div/p/text()').extract()
    
    
    
            n = len(titles)
            i = 0
            while i < n :
                content['title'] = titles[i]
                i = i + 1
                yield content
            j = 0
    

    然后咱们运行一下

    scrapy crawl hoptop -o titles.csv

    成功,但是感觉细节还是要修改一下

    爬取了全部标题

    相关文章

      网友评论

          本文标题:2018-05-13 爬虫笔记(四)分析JS脚本,爬取生物信息学

          本文链接:https://www.haomeiwen.com/subject/qwghdftx.html