用python写一个简单的爬虫保存在json文件中

    xiaoxiao2021-04-02  35

    学习python没多久,所以只能写一个很简单的爬虫啦~~

    我使用annacada 自带的spyder来写爬虫的,这次我们要爬取得网站是http://www.drugbank.ca/drugs,

    主要是爬取里面每种药物的信息到json文件中,包括有

    DrugBank ID,  Name , Weight, Structure,   Categories,   TherapeuticIndication。

    首先我们先要在命令提示符那里输入一个语句来创建项目:scrapy startproject drugs  //drugs是自己取得名字。

    然后命令提示符上就会有关于创建的文件夹在哪个路径,我们对应去找就会找到的。找到之后我们会看到很多的文件,其中我们先用spyder去打开items.py这个文件,然后在里面编写代码:

    import scrapy

    class TutorialItem(scrapy.Item):

        #define the fields for your item here like:

        #name = scrapy.Field()

    DrugBankId = scrapy.Field(); //这些名字(DrugBankId,Name......)都是我们想要爬取出来的信息。

    Name = scrapy.Field();

    Weight = scrapy.Field();

    Structure = scrapy.Field();

    Categories = scrapy.Field();

    TherapeuticIndication = scrapy.Field();

    Pass

    然后我们在spider文件夹下自己创建一个.py结尾的文件来编写主要的代码。

    我创建了drugbank.py的文件,然后在里面输入:

    #-*- coding:utf-8 -*-

    import scrapy

    import string

    from drugs.items import TutorialItem

    class drugbank(scrapy.Spider):

      # 定义爬虫的名称,主要main方法使用

       name = 'drugbank'  //在命令提示符中用来调用的。

       allowed_domains=["drugbank.ca"]

       start_urls=["http://www.drugbank.ca/drugs"]

       

      # 解析数据

       def parse(self, response):

           items = []

           i="0"

           for sel in response.xpath('//table/tbody/tr'):

               item = TutorialItem()

               a=string.atoi(i)+1

               i=str(a)

               item['DrugBankId']=sel.xpath('//table/tbody/tr['+i+']/td[1]/a/text()').extract()

               item['Name']=sel.xpath('//table/tbody/tr['+i+']/td[2]/strong/a/text()').extract()

               item['Weight']=sel.xpath('//table/tbody/tr['+i+']/td[3]/text()[1]').extract()

               item['Structure']=sel.xpath('//table/tbody/tr['+i+']/td[4]/a/img/@src').extract()

               item['Categories']=sel.xpath('//table/tbody/tr['+i+']/td[5]/a/text()').extract()

               item['TherapeuticIndication']=sel.xpath('//table/tbody/tr['+i+']/td[6]/text()').extract()

               items.append(item)

               yield item

        #翻页

           next_page =response.xpath('//ul/li[@class="next_page"]/a/@href')

           if next_page:

               url = response.urljoin(next_page[0].extract())

          #爬每一页

               yield scrapy.Request(url, self.parse)

    我们在命令提示符中进入到drugs目录下,即输入cd drugs,然后回车再输入 scrapy crawl drugbank -o items.json -t json

    其中drugbank是在drugbank文件中的name的属性,items.json是你想将数据存放到这个文件中,所以这个名字是自定义的。

    执行完这个,我们就可以在drugs文件夹下找到items.json文件,里面就存放着从网页下爬取出来的药物的信息。

    转载请注明原文地址: https://ju.6miu.com/read-665812.html

    最新回复(0)