zoukankan      html  css  js  c++  java
  • scrapy学习笔记 1,第一次使用scrapy

    第一次使用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] 

  • 相关阅读:
    回流与重绘
    事件循环的一些小啰嗦
    async与await的那些事儿
    数组去重的方法们
    Object的一些常用方法
    JS事件流的一些理解
    关于Ajax的那些记录
    call、bind与apply函数的区别
    继承的一些细碎记载
    计算机基础的小贴士(1)
  • 原文地址:https://www.cnblogs.com/fengganlmei/p/8111583.html
Copyright © 2011-2022 走看看