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)
得到数据: