Scrapy框架

Python:      

参数种类:

               必须参数

               默认参数

               关键参数

               可变参数:tuple  *args dict  **kwargs

 

               建议:默认参数一定要在必须参数之后定义,可变参数一定要定义在最后

      函数种类:

               外部函数

               内部函数

               匿名函数 lambda

      装饰函数:

               @

      函数 总是要返回的, 如果没有return None总是被返回

 

面向对象:

         对象:已存在可被使用的实例,python中万物皆对象,模块,函数,变量 类 方法

都是对象

         Class:描述其他实例信息的对象

         方法:用来定义其他实例行为的对象

               与函数的区别:函数可对立定义和调用

               方法不能独立定义也不能独立调用

         属性:定义其他实例特征的对象

 

         Stu =Student()

         Stu.jump = lambda x: print(“你跳了{0}”.format(x))

         Stu.jump(1.2)

常用模块:

        re xml ....  time  socket threading random  pickle:序列化  os  sys

        常用re  os  sys  xml  pickle

        Scrapy :爬虫框架 特点:工业化重量级

              Pyspider:轻量级(国内开发)

       Urllib:统一资源定位符

       Xpath:通过path风格的表达式来解析xml html

       (E:/大数据/a)

       /html/body/[取属性]//div

       ./当前

       ../上一级

       ../../上两级

       +:相邻兄弟选择器

       空格:后代选择器

       > :子代选择器

    ~ :为所有相同的父元素中位于 p 元素之后的所有 ul 元素设置

 

import scrapy                      #导入模块
class QuotesSpider(scrapy.Spider):#继承scrapy.Spider
    
name = "qnqn"                 #给蜘蛛取取一个名字,启动时使用
    
start_urls = [                #挖取入口
        
'http://www.kgc.cn/',    #网址
    
]
    def parse(self, response):
       dates=response.css('h2.headline-title~ul>li>p>a::attr(href)').extract()#attr(href)得到所有数据链接
       
for to in  dates:
           #print(data)
           
yield response.follow(to,self.ta) #解析出首页中每个头天的文章链接并生成新的请求对象

    
def ta (self,response):
        #解析页面中作者和标题
        
title = response.css('div.essay_top>h6::text').extract_first()  #extract_first()得到首个数据
        
author=response.css('div.essay_card.fl>span::text').extract_first()
        yield {
            "title":title,    #保存文件
            
"author":author
        }

 

       

 

 

运行命令:

scrapy runspider qnqn.py -o qnqn.json (-o保存文件到qnqn.json文件)

 

 

 

创建文件查询保存的文档:

import json

with open("qnqn.json") as f:
    datas=json.load(f)
    for d in datas:
        print(d)

 

得到数据:

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值