爬虫学习总结二

爬虫学习:二. 基于Scrapy框架的python吧简单爬虫

  • 1. 爬虫目录结构介绍
  • 2. items.py
  • 3. TieBa.py
  • 4. 运行爬虫

1. 爬虫目录结构介绍

上一章对Scrapy框架做了简单的介绍,并且创建了FirstSpider这个爬虫项目,生成的爬虫目录结构如下:
爬虫学习总结二_第1张图片
items.py:定义你想抓取的数据(也可以直接放在TieBa.py中定义)
middlewares.py:用来设置各种中间件的文件
pipelines.py:用来将item存储到数据库中
settings.py:存储本爬虫的一些配置信息,比如:请求头、ip代理池等
TieBa.py:编写爬虫代码(主要部分)
scrapy.cfg:项目的配置文件

2. items.py

主要定义你想抓取哪些数据,比如这里我们要获取标题、发布者、回复数

# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy

class FirstspiderItem(scrapy.Item):
    # define the fields for your item here like:
    title = scrapy.Field()      # 标题
    author = scrapy.Field()     # 发布者
    rep_num = scrapy.Field()    # 回复数
    

3. TieBa.py

这是整个爬虫项目中,代码编写的主要部分。

# -*- coding: utf-8 -*-
import scrapy
from FirstSpider.items import FirstspiderItem

class TiebaSpider(scrapy.Spider):
    name = 'TieBa'  # 爬虫名
    allowed_domains = ['tieba.baidu.com']  # 爬虫域
    start_urls = ['http://tieba.baidu.com/f?fr=wwwt&kw=python']  # 爬虫起始地址

    def parse(self, response):
        for li in response.xpath('//li[@class=" j_thread_list clearfix"]'):
            item = FirstspiderItem()
            item['title'] = li.xpath('./div/div[2]/div[1]/div[1]/a/text()').extract_first()
            item['author'] = li.xpath('./div/div[2]/div[1]/div[2]/span[1]/span[1]/a/text()').extract_first()
            item['rep_num'] = li.xpath('./div/div[1]/span/text()').extract_first()
            yield item

其中,爬虫名和爬虫域在创建爬虫时就已经设置,起始地址即你爬虫最开始的地址。对于页面的解析,使用的是xpath,关于xpath的学习可以参考xpath菜鸟教程。
这里我们对于解析的过程做些简单的描述:
(1)浏览器推荐使用chrome,能够更加方便地进行页面解析。
(2)右击你想要获取的数据部分,然后选择检查,便可以看到对应部分的网页源代码。整体源代码为:爬虫学习总结二_第2张图片
可以发现,每一条li对应一条帖子,帖子里的相关信息在每一条li下,所以使用for循环遍历此页面下的每一条li,然后找到li下所要获取数据的节点位置并将其取出。

4. 运行爬虫

打开CMD,转到项目所在的目录下,执行scrapy crawl TieBa,结果如下:
爬虫学习总结二_第3张图片
为了更好地看到数据,也可以执行scrapy crawl TieBa -o tieba.csv,将数据结果保存到csv文件中。至此,一个简单的爬虫已经可以运行了,但是需要获取的数据肯定不是仅仅这一页,所以下一章节对爬虫进行自动翻页来获取更多的数据。

你可能感兴趣的:(python)