2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息

1.创建一个项目


2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息_第1张图片
创建一个项目

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

2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息_第2张图片
里面就是一些核心组件

2 创建一个爬取信息的spider

2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息_第3张图片
创建一个hoptop的爬虫

3 我们可以调试一下先

使用 scrapy shell +网址

然后view (response)

but


2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息_第4张图片
发现被禁止了

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

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

4 反反爬虫

pip3 install browsercookie

2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息_第5张图片
安装browsercookie
在setting 里面增加headers
2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息_第6张图片
在middleware中增加代码
在setting 中设置启动刚刚的middlewares
最后调试一下

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

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

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


xpath实例

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


2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息_第7张图片
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

成功了,虽然有点简陋


2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息_第8张图片
结果

写在后面:

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

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

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

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

你可能感兴趣的:(2018-05-10 爬虫笔记(二)一个简单的实践 —简单获取生物信息达人博主主页的信息)