1.函数
函数参数:必须 默认 关键 可变
函数种类:外部 内部 匿名 lambda
装饰函数:@语法糖
函数总是要返回的 ,若没有return,None总是被返回
2.面向对象:
对象:已存在,可被使用的实例 万物皆对象
类:描述其他实例信息的对象
方法:定义其他实例行为的对象
3.与函数区别:
函数可以直接调用
方法需要依赖类对象才能调用
@staticmethod 类似函数
@classmethod 类方法
属性:定义其他实例特征的对象
stu=Student()
stu.jump=lambda x: print("你跳了{0}米“.format(x))
stu.jump(1)
4.常用模块:
re(正则) xml time threading socket random pickle (序列化) os sys
pdk:----python sdk
第三方: scrapy pandas numpy plot..
scrapy:爬虫框架 特点:工业化重量级
xpath:通过path风格的表达式来解析xml HTML
/html/body[](取属性)//(后代)div ,/当前路径
scrapy框架爬虫基础及案例:
爬虫流程图
流程过程:spider(蜘蛛)编写-->引擎(engine)获取请求-->传入调度器(scheduler排序入队)-->请求(request)给引擎-->下载器网上扒取数据-->
将响应(response)给引擎-->蜘蛛-->通过引擎-->将获取的实体类给item,将接下来的URL给调度器-->再次循环以上过程完成数据的扒取
对蜘蛛spider的编写和解析
import scrapy #导入scrapy 的模块 class QuotesSpider(scrapy.Spider): #类方法继承scrapy模块的spider name = 'kgc' #蜘蛛名 (后面需要执行方式之一所需) start_urls=['http://www.kgc.cn/',] #所需要爬虫的资源进口 def parse(self, response): #parse方法定义爬虫的规则 datas=response.css('h2.headline-title~ul>li>p>a::text').extract()#应用css样式方法,寻找对应的爬取模块 for d in datas: print(d)
在命令窗口terminal中输入运行命令:
scrapy runspider spid文件名
输出结果可以获取相应内容。
对于连接路径内容的获取如下:
import scrapy #导入scrapy 的模块 class QuotesSpider(scrapy.Spider): #类方法继承scrapy模块的spider name = 'kgc' #蜘蛛名 (后面需要执行方式之一所需) start_urls=['http://www.kgc.cn/',] #所需要爬虫的资源进口 def parse(self, response): #parse方法定义爬虫的规则 hrefs = response.css('h2.headline-title~ul>li>p>a::attr("href")').extract()#获取的是对应的连接路径 for url in hrefs: yield response.follow(url,self.ta)#使用yield生成器,通过response的follow方法,传参分别为得到的路径和得到内容的方法 def ta(self,response):#定义当前对象所需要获取内容的方法 titl=response.css('div.essay_top>h6::text').extract_first()#应用css样式获取内容标题 author=response.css('div.essay_card.f1>span::text').extract_first()#获取内容的作者 yield { #生成器每次调用得到内容 "title":titl, #获取的以字典格式输出 "author":author }
同样执行spider运行语句:
scrapy runspider spider文件名
如果在运行得到结果的过程中,遇到无法输出或者乱码问题,可通过生成json文件进行运行:
步骤如下:
将spider文件生成json文件,执行语句为:
scrapy runspider spider文件名 -o 文件名.json
然后对其进行解析:
import json #引入json模块 with open("test.json") as f :#读取文件并重命名f da=json.load(f) #文件重新加载得到da for s in da: #循环输出内容 print(s)
运行文件即可得到相应内容。后续内容持续更新。