Python
张行之
闻道有先后,术业有专攻。
展开
-
python代码生成验证码
python代码生成验证码import randomfrom PIL import Imagefrom PIL import ImageDrawfrom PIL import ImageFilterfrom PIL import ImageFontdef randomChar(): ''' 随机生成chr :return:返回一个随机生成的chr '''原创 2016-10-20 19:43:29 · 2226 阅读 · 0 评论 -
Scrapy框架学习(一)----Scrapy介绍及第一个项目
Scrapy框架学习(一)—-Scrapy介绍及第一个项目scrapy的介绍Scrapy使用纯python实现的爬虫框架,采用Twisted网络异步框架来处理网络通讯层,并包含了各种中间件接口。可以灵活的完成需要爬取网站数据,并提取结构性数据。Scrapy的中文文档 http://scrapy-chs.readthedocs.io/zh_CN/latest/index.htmlScrapy官方原创 2017-11-29 20:23:43 · 2662 阅读 · 1 评论 -
Scrapy框架学习(二)----Item Pipeline(管道)和Scrapy Shell
Scrapy框架学习(二)—-Item Pipeline(管道)和Scrapy ShellItem Pipeline(管道)当Item在Spider中被收集之后,它将会被传递到Item Pipeline,一些组件会按照一定的顺序执行对Item进行处理。每个Item Pipeline都是实现了简单方法的Python类,比如决定此Item是丢弃而存储。以下是Item Pipeline的典型应用:验证爬原创 2017-11-29 20:24:38 · 5204 阅读 · 0 评论 -
Scrapy框架学习(三)----基于Scrapy框架实现的简单爬虫案例
Scrapy框架学习(三)—-Scrapy框架实现简单的爬虫程序前面2章讲解了Scrapy的基本内容,如:创建项目,配置settings.py,items,spider,item pipeline,scrapy shell等概念,现在我们使用之前学习的内容,来实现一个爬虫案例。爬虫案例以虎嗅网新闻子页面为例。页面的url:https://www.huxiu.com/channel/104.html,原创 2017-11-29 20:25:23 · 1285 阅读 · 0 评论 -
Scrapy框架学习(四)----CrawlSpider、LinkExtractors、Rule及爬虫示例
Scrapy框架学习(四)—-CrawlSpider、LinkExtractors、Rule及爬虫示例CrawlSpider、LinkExtractors、Rule是scrapy框架中的类,其中CrawlSpider是Spider的派生类,具有更多的方法和功能,LinkExtractor类是用作提取链接的,Rule表示的是爬取的规则。CrawlSpiderCrawlSpider是Spider的派生类原创 2017-11-29 20:26:17 · 10628 阅读 · 3 评论 -
urllib库模拟简单的Post请求 && 使用Cookie模拟用户访问
urllib库模拟简单的Post请求 && 使用Cookie模拟用户访问本文使用Python3.0的urllib库实现。模拟简单的Post请求在上一篇文章中,介绍了通过urllib.request.Request(),返回一个request对象。Request()方法有3个重要的参数,分别是url, data, headers。data:指的是请求体(这也是区分url是get请求还是post的请求的原创 2017-11-16 17:19:11 · 3000 阅读 · 0 评论 -
Handler处理器和自定义opener
Handler处理器和自定义opener在我们使用urllib库请求是都是使用urlopen()方法实现的。实际上它的底层是使用HTTPHandler个Opener来实现的。如:urlopen()源码:global _openerif cafile or capath or cadefault: ... https_handler = HTTPSHandler(context=co原创 2017-11-16 17:20:38 · 601 阅读 · 0 评论 -
CookieJar和HTTPCookieProcessor
CookieJar和HTTPCookieProcessor我们在使用爬虫的时候,经常会用到cookie进行模拟登陆和访问。在使用urllib库做爬虫,我们需要借助http.cookiejar库中的CookieJar来实现。CookieJar类有一些子类,分别是FileCookieJar,MozillaCookieJar,LWPCookieJar。CookieJar:管理HTTP cookie值、存原创 2017-11-16 17:22:03 · 6247 阅读 · 0 评论 -
正则表达式及爬虫小案例
正则表达式及爬虫小案例正则表达式正则表达式通常用来检索,替换,匹配符合某个规则的文本。在处理非结构化的文本数据时,需要匹配一定的规则,以获取需要的文本数据。正则表达式的效率是非常高的,当然匹配规则也比较复杂。在Python是内置正则表达式(re模块)。正则表达式匹配规则正则表达式常用函数re模块一般使用步骤:使用compile()函数,建立一个匹配模型compile():制定匹配规则,用于生成一个原创 2017-11-16 17:23:29 · 2472 阅读 · 0 评论 -
XPath与lxml库介绍及爬虫案例
XPath与lxml库介绍及爬虫案例XPath介绍XPath(XML Path Language)是一门在XML文档中查找信息的语言,可用来在XML文档中对元素和属性进行遍历。XPath的节点XPath的节点有7种类型:文档节点,元素节点,属性节点,文本节点,命名空间节点,处理指令节点,注释节点。对于我们需要关注的是前面4个节点。下面看xml文档。<?xml version="1.0" encodi原创 2017-11-16 17:24:17 · 10834 阅读 · 2 评论 -
Scrapy框架学习(五)----Request、Response介绍及模拟GitHub登录
Scrapy框架学习(五)—-Request、Response介绍及模拟GitHub登录Scrapy使用Request和Request对象爬取web站点。一般来说,Request对象在spider中被生成并且最终传递到下载器(Downloader),下载器对其进行处理并返回一个Response对象,Response对象还会返回到生成request的spider中。所有Request和Response原创 2017-12-02 13:01:02 · 2672 阅读 · 0 评论 -
Scrapy框架学习(六)----Downloader Middleware及使用MongoDB储存数据
Scrapy框架学习(六)—-Downloader Middleware及使用MongoDB储存数据Downloader Middleware(下载中间件)Downloader Middleware(下载中间件)是一个介于Scrapy的Request/Response处理的钩子框架。是用于全局修改Scrapy request和response的一个轻量级、底层的系统。要激活下载器中间件组件,需要将其原创 2017-12-02 13:02:10 · 1690 阅读 · 0 评论 -
使用JsonPath解析json数据
使用JsonPath解析json数据JsonPath介绍JsonPath是从JSON文档中抽取指定的信息的工具。提供多种语言实现版本,包括JavaScript,Python,PHP,java。JsonPath对于JSON,就好比xpath对于XML。JsonPath下载地址: https://pypi.python.org/pypi/jsonpathJsonPath安装: pip inst原创 2017-11-25 12:14:01 · 10032 阅读 · 1 评论 -
Selenium和PhantomJS介绍
Selenium和PhantomJS介绍Selenium和PhantomJS简介Selenium简介 Selenium是一个Web的自动化测试工具,最初是为了网站自动化测试开发的,Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。也包括Pha原创 2017-11-25 12:15:40 · 4093 阅读 · 0 评论 -
matplotlib基础学习
matplotlib基础学习matplotlib库是一个非常强大的数据可视化库,可以绘制多种的可视化图片。简单示例import numpy as npimport matplotlib.pyplot as plt# 从-1,1之间获取50个数x = np.linspace(-1, 1, 50)y = 2 * x + 1# 画线plt.plot(x, y)# 显示图像plt.show()原创 2017-12-15 10:10:00 · 973 阅读 · 0 评论 -
pandas之groupby分组与pivot_table透视表
pandas之groupby分组与pivot_table透视表在使用pandas进行数据分析时,避免不了使用groupby来对数据进行分组运算。groupby的参数groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)by:mapping, fu原创 2018-01-04 17:17:10 · 12717 阅读 · 0 评论 -
Scrapy框架学习(七)----Scrapy与scrapy-splash框架结合,快速加载js页面
Scrapy框架学习(七)—-Scrapy与scrapy-splash框架结合,快速加载js页面一、前言我们在使用爬虫程序爬取网页时,一般对于静态页面的爬取是比较简单的,之前写过挺多的案例。但是对于使用js动态加载的页面如何爬取呢?对于动态js页面的爬取有以下几种爬取的方式:通过selenium+phantomjs实现。phantomjs是一个无头浏览器,selenium是一...原创 2018-03-06 18:43:29 · 5631 阅读 · 1 评论 -
Python爬虫之模拟CSDN网站登录
Python爬虫之模拟CSDN网站登录模拟网站登录的思路在我们模拟网站登录之前,我们需要分析网站登入需要哪些数据。我们可以通过抓包工具,研究网站登录,以及登录访问的头信息变化。1.打开csdn的登录页面2.输入用户名和密码登录,使用fiddler抓包。(我们只是为了知道上传的数据结构,不需要输入正确的用户名和密码)。如下所示:3.检查网页源代码,分析上传的post的数据通过上面的抓包分析,我们知道p原创 2017-11-20 18:38:56 · 5514 阅读 · 1 评论 -
BeautifulSoup4解析器
BeautifulSoup4解析器BeautifulSoup4是一个HTML/XML的解析器,主要的功能是解析和提取HTML/XML的数据。和lxml库一样。lxml只会局部遍历,而BeautifulSoup4是基于HTML DOM的,会加载整个文档,解析整个DOM树,因此内存开销比较大,性能比较低。BeautifulSoup4用来解析HTML比较简单,API使用非常人性化,支持CSS选择器,是Py原创 2017-11-20 18:37:52 · 9747 阅读 · 0 评论 -
Django静态文件处理、中间件、上传文件
Django静态文件处理、中间件、上传文件静态文件处理在Django中,一般专门创建一个static目录来存放静态文件(css,js,image,video等文件)。在创建目录前,我们需要配置静态文件的路径。如:在项目的settings.py文件中,配置STATIC_URL,一般默认是:STATIC_URL = '/static/' # '/static/'是指uri,映射下面的stat原创 2017-11-04 22:14:45 · 1877 阅读 · 0 评论 -
深拷贝和浅拷贝
深拷贝和浅拷贝浅拷贝:对变量进行比较浅层次的拷贝,比如变量的赋值,其实2个变量都指向同一个内存地址。内存地址共享。深拷贝:对变量进行深层次的拷贝,拷贝了一份数据,2个变量之间的内存地址是不一样的,但是内容一样。内存地址不共享。举个例子:浅拷贝:a = [1,2,3]b = aprint(a) # [1,2,3]print(b) # [1,2,3]print(id(a)) # 18原创 2017-10-20 15:06:21 · 366 阅读 · 1 评论 -
装饰器
装饰器装饰模式有很多经典的使用场景,例如插入日志、性能测试、事务处理等等,有了装饰器,就可以提取大量函数中与本身功能无关的类似代码,从而达到代码重用的目的。装饰器引入下面就简单举个例子:一天,A程序员接到一个登入的需求,写了一个方法。def login(): print('登入')login() # 输出 登入突然,产品经理想加入一个登入事件。于是A程序员对方法进行了修改。d原创 2017-10-20 15:07:25 · 408 阅读 · 0 评论 -
动态给类和对象添加属性和方法
动态给类和对象添加属性和方法动态给类和对象添加属性定义一个Person类class Person(object): def __init__(self, name): self.name = name给对象添加属性# 创建2个Person,分别为p1,p2p1 = Person('amy')print(p1.name)p1.age = 10 # 给p1对原创 2017-10-20 15:09:30 · 9727 阅读 · 1 评论 -
使用type动态创建类
使用type动态创建类动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。下面看一个例子:# 定义一个Person类class Person(object): def __init__(self): pass def say(self): print('say hello')p = Person()p.say()原创 2017-10-20 15:10:24 · 1224 阅读 · 0 评论 -
Python之dict(或对象)与json之间的互相转化
Python之dict(或对象)与json之间的互相转化在Python语言中,json数据与dict字典以及对象之间的转化,是必不可少的操作。在Python中自带json库。通过import json导入。在json模块有2个方法,loads():将json数据转化成dict数据dumps():将dict数据转化成json数据load():读取json文件数据,转成dict数据dump():原创 2017-10-21 22:27:27 · 195485 阅读 · 3 评论 -
Python之xlsx文件与csv文件相互转换
Python之xlsx文件转csv文件在Python中,可以使用xlrd和csv模块来处理Excel文件和csv文件。xlsx文件转csv文件import xlrdimport csvdef xlsx_to_csv(): workbook = xlrd.open_workbook('1.xlsx') table = workbook.sheet_by_index(0) wi原创 2017-10-21 22:28:44 · 91835 阅读 · 12 评论 -
Python之MySQL数据库增删改查操作
Python之MySQL数据库操作Python之连接数据库import pymysql# 获取连接对象conn,建立数据库的连接def get_conn(): conn = pymysql.connect(host='localhost',port=3306,user='root',passwd='root',db='test1') # db:表示数据库名称 return c原创 2017-10-21 22:22:44 · 24459 阅读 · 5 评论 -
Python之csv文件从MySQL数据库导入导出
Python从MySQL数据库中导出csv文件处理csv文件导入MySQL数据库import pymysqlimport csvimport codecsdef get_conn(): conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='test_csv', charse原创 2017-10-22 16:02:12 · 17980 阅读 · 0 评论 -
Python之xlsx文件从MySQL数据库导入导出
Python之excel文件从MySQL数据库导入导出excel文件导入MySQL数据库import pymysqlimport xlrdimport xlwtdef get_conn(): conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='root', db='db_xlsx', char原创 2017-10-22 16:03:19 · 6479 阅读 · 0 评论 -
Django环境搭建及项目配置
Django环境搭建及项目配置Django是一个开放源代码的web应用框架,由Python语言编写而成。采用MVT模式,模型M,视图V,模板T。模型M:即数据存取层,处理与数据相关的所有事务,例如:如何存取数据,如何验证数据的有效性等等视图V:即表现层,处理与表现相关的决定,如何在页面或其他文档中进行显示。模板T:业务逻辑层,存取模型及调取恰当模板的相关逻辑。1. Django的开发环境搭建安装如果原创 2017-10-30 20:23:36 · 1829 阅读 · 1 评论 -
Djando模板
Djando模板在上一章节中,我们使用django.http.HttpResponse()来输出”Hello World!”,实际上并没有遵守MVT模式。下面针对上面的程序做一个修改,使其符合MVT模式。在test_django工程目录,创建一个templates目录,这个目录用于存放模板。在templates目录创建一个hello.html文件整个目录结构如:hello.html文件代码:<!原创 2017-10-30 20:25:08 · 677 阅读 · 0 评论 -
Django模型
Django模型Django对各种数据库提供了很好的支持。包括MySQL,SQLite,Orcale等。Django为这些数据库提供了统一的调用api。可以根据不同的业务,选择不同的数据库。下面使用Mysql数据库作为演示。如果没有安装MySQL的驱动包,可以使用pip安装pip install pymysql数据库的配置在项目的settings.py文件中找到DATABASES配置项,将其信息改为原创 2017-10-30 20:25:56 · 735 阅读 · 0 评论 -
Django表单
Django表单GET方法请求处理在testdjango项目中,创建一个search.py文件,文件内容:from django.http import HttpResponsefrom django.shortcuts import render_to_response# 表单def search_from(requset): return render_to_response('s原创 2017-10-30 20:26:41 · 591 阅读 · 0 评论 -
Django Admin管理工具
Django Admin管理工具Django提供了基于web的管理工具,是通过django.contrib实现。在settings.py配置中的INSTALLED_APPS可以看到,如:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes',原创 2017-10-30 20:27:34 · 1397 阅读 · 0 评论 -
urllib库的简单使用 && 一个简单的Python爬虫示例
urllib库的简单使用 && 一个简单的Python爬虫示例本篇文章,介绍urllib.request库的简单使用以及注意的问题。最后实现一个Python爬虫的示例。本文是基于Python3.6.2实现的。urllib.request相当于Python2.7中的urllib2的库的一部分。urllib.request库的简单使用urlopen():# 请求一个百度地址,返回一个服务器响应的类文原创 2017-11-08 15:24:47 · 6351 阅读 · 1 评论 -
Python爬虫之静态页面爬取
爬虫之Python静态页面爬取一、爬虫的介绍1. 什么是爬虫网络爬虫(又被称为网页蜘蛛Spider,网络机器人),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。2. 爬虫的类型网络爬虫按照系统结构和实现技术,大致可以分为以下几种类型:通用网络爬虫(General Purpose Web Crawler)、聚焦网络爬虫(Focused Web Crawler)、增量式网络爬虫(Increm原创 2017-11-16 17:26:04 · 13121 阅读 · 1 评论 -
Scrapy框架学习(八)----Scrapy-redis分布式爬虫学习
Scrapy框架学习(八)—-Scrapy-redis分布式爬虫学习Scrapy-redis分布式爬虫框架,是在Scrapy爬虫框架的基础上进行改进的,通过Redis来进行数据的缓存,可以在多台机器上运行爬虫程序。本文示例是在CentOS的虚拟机运行。1、Redis安装关于Redis的安装,网上有不少的文章,在配置Redis环境上也会有些问题,下面的2篇文章,详细的介绍了Redis...原创 2018-03-15 14:02:29 · 3044 阅读 · 1 评论