scrapy学习笔记 1,第一次使用scrapy

时间:2022-08-17 20:51:10

第一次使用scrapy,记下爬过的坑

1,xpath语法,xpath语法用于选取需要的数据,用过bs4会比较好的理解它,类似于从一目录树查找,

xpath('/html/body/div/div'),这是绝对路径找数据

xpath('//*[@id = “niubi”]'),这是相对路径找数据

还可以选择从绝对路径到某一路径下,找一个“特殊”的数据

xpath('//*a/html/body/div1/div2),找div2下的所有a标签

2,找到后,需要实例化,这是第二个坑,实例化有extract()函数,然后才能转换成字符串,之后就能操作数据了

3,在爬虫脚本中,spider中,如果需要定义全局变量,千万不能定义name,估计一些scrapy的关键字也不能定义,不然爬虫莫名死掉

4,回调函数,parse中的值,不能传入回调函数中,不知道是不是我技术不行呢,就是传不进去- - 

5,item,在起始位置,from导入之后,需要在使用的函数内,或者说class中定义静态方法,item = xxxitem(),不然它不认识你的数组,但是在pipeline中却不需要

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

import scrapy 

from text.items import TextItem

import sys 

class ExampleSpider(scrapy.Spider): 

    name = "qunimade" 

    allowed_domains = ["biquge.com.tw"]

    start_urls = ( 10 'http://www.biquge.com.tw/11_11850',) 

    global d,n 

    d = {} 13 n = '' 

    def parse(self,response): 

        shou = response.xpath('/html/body/div/div/div/dl/dd/a/@href') 

        wen = response.xpath('/html/body/div/div/div/dl/dd/a/text()') 

         n = response.xpath('/html/body/div/div/div/div/h1/text()').extract()[0] 

         x = 1 

         for t in wen.extract(): 

         t.strip() 21 d[t] = x 

        x = x + 1 23 po = 'http://www.biquge.com.tw' 

        for i in shou.extract(): 26 p = po + i 27 yield scrapy.Request(p,callback = self.parse_1) 28 29 30 31 32 def parse_1(self, response): 33 item = TextItem() 34 h1 = response.xpath('/html/body/div/div/div/div/h1/text()') 35 r = h1[0].extract() 36 r = r.strip() 37 item['zhangjie'] = r 38 tt = d[r]