美文网首页
2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生

2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生

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

    1.创建一个项目


    创建一个项目

    我们来看看这个项目的结构:

    里面就是一些核心组件

    2 创建一个爬取信息的spider

    创建一个hoptop的爬虫

    3 我们可以调试一下先

    使用 scrapy shell +网址

    然后view (response)

    but


    发现被禁止了

    这种情况下,一般来说,就是要加一个头信息,有些时候,为了保留登录状态,还需要获得cookie的信息。

    在这里我采用了browsercookie来自动获取我的chrome 浏览器的cookie,并加上了headers再试一遍:

    4 反反爬虫

    pip3 install browsercookie

    安装browsercookie 在setting 里面增加headers 在middleware中增加代码 在setting 中设置启动刚刚的middlewares 最后调试一下

    出现200
    然后view(response)跳出页面
    说明成功了‘

    5 提取内容模块
    之后就是解析页面了,解析页面可以使用css xpath 或者BeautifulSoup 这里先上代码,因为这个属于独立的一块,那个用的好久用哪个。

    比如像这样提取一个标题(用xpath):


    xpath实例

    6 设置item
    我这里展示一下提取文章名字和摘要
    先在item.py中封装


    item封装

    7 编写spider

    这里我只是想介绍个整理,先上spider 代码啦

    # -*- coding: utf-8 -*-
    import scrapy
    from ..items import SpiderProjectItem
    
    
    class HoptopSpider(scrapy.Spider):
        name = 'hoptop'
        allowed_domains = ['www.jianshu.com/u/9ea40b5f607a']
        start_urls = ['http://www.jianshu.com/u/9ea40b5f607a/']
    
        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()
            #for unit in abstracts:
            #    content['abstract'] = unit
            #    yield content
            n = len(titles)
            i = 0
            while i < n :
                content['title'] = titles[i]
                content['abstract'] = abstracts[i]
                i = i + 1
                yield content
    

    我这里的代码比较简陋,只是初步提取信息,还不包括下滑翻页,只是展示一下而已

    测试一下

    scrapy crawl hoptop -o result.csv

    成功了,虽然有点简陋


    结果

    写在后面:

    1. 首先要明白爬虫用来干什么,一般来说,是用来批量获取网络上的信息资源,比如我想把hoptop的博客全部下载下来离线看,那么他写了那么多的博客,我不可能一页一页地复制,所以我可以编写爬虫批量下载

    2. 有些时候不一定要用框架,但是框架可以帮你节约一点时间,也别是大型的项目的时候

    3. 这里只是很简陋地展示了一下,后续可以加入python对文本的处理能力,来规则化地获取信息。

    4。如果要简单地使用scrapy 我觉得步骤可以如下:
    1.先用shell调试,看看结构和反爬虫手段
    2.然后记得在setting中加上浏览器的headers ,编写middlewares 可以使用chrome的Cookies模拟登陆。
    3.接下来定义item中需要保存的内容(注意是文本的)
    4.然后编写spider 解析函数

    相关文章

      网友评论

          本文标题:2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生

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