• 使用python在scrapy框架下制作一个简单的爬虫


    步骤:

    一,新建一个工程

    二,在工程中中新建一个爬虫项目,scrapy startproject  myspider

    scrapy startproject myspider #myspider为工程名,可根据自己需求更改

    三,切入到项目目录下,然后在项目中,新建一个爬虫spider。

    1 cd myspider #切入到项目目录下
    2 scrapy genspider itcast itcast.cn#新建一个爬虫

    四,在itcast.py中,编写爬取程序

     1 # -*- coding: utf-8 -*-
     2 import scrapy
     3 
     4 
     5 class ItcastSpider(scrapy.Spider):
     6     name = 'itcast'#爬虫名
     7     allowed_domains = ['itcast.cn']#允许爬取得范围
     8     start_urls = ['http://www.itcast.cn/channel/teacher.shtml']#最开始请求的url地址
     9 
    10     def parse(self, response):
    11         #处理start_url地址对应的响应
    12         # ret=response.xpath("//div[@class='tea_con']//h3/text()").extract()
    13         # print(ret)
    14 
    15         # li_list=response.xpath("//div[@class='tea_con']//li")
    16         # for li in li_list:
    17         #     item={}
    18         #     item["name"]=li.xpath(".//h3/text()").extract()[0]
    19         #     item["title"]=li.xpath(".//h4/text()").extract()[0]
    20         #     print(item)
    21 
    22 
    23         li_list = response.xpath("//div[@class='tea_con']//li")
    24         for li in li_list:
    25             item = {}
    26             item["name"] = li.xpath(".//h3/text()").extract_first()
    27             item["title"] = li.xpath(".//h4/text()").extract_first()
    28             # print(item)
    29             yield item   #将数据传给pipelines,使用生成器可以减小内存占用

    五,开启MyspiderPipeline之前需要在settings.py中开启MyspiderPipeline

    1 #开启ITEM_PIPELINES,ITEM_PIPELINES才可以使用
    2 ITEM_PIPELINES = {
    3    'myspider.pipelines.MyspiderPipeline': 300,#300表示爬虫的距离远近,越大越远,
    4 }

     六, 在MyspiderPipeline中进行数据处理

    1 class MyspiderPipeline(object):
    2     def process_item(self, item, spider):
    3         item["hello"]="world"
    4         print(item)
    5         return item#为了让数据在不同的pipeline中传递,需要return来返回item,

    七、保存爬取的数据

    1  scrapy crawl itcast -o teacher.csv#将爬取的数据保存为teacher.csv

    一个简单的scrapy框架下的爬虫就制作好了

  • 相关阅读:
    针对图片性能优化的总结
    activityGroup源码分析
    针对BaseAdapter的扩展
    ADB命令介绍
    一个对内存分析的文章。 非常棒。
    hdu 1285 确定比赛名次(很典型的拓扑排序)
    经典排序之归并排序
    hdu 1166 敌兵布阵 (树状数组)
    hdu 3518 Boring counting (后缀数组)
    hdu 3584 Cube(树状数组)
  • 原文地址:https://www.cnblogs.com/zhiliang9408/p/10000842.html
Copyright © 2020-2023  润新知