开启 sudo service ssh startwindows系统下:ssh [email protected]
其中xiaowei为虚拟机用户名,后面是虚拟机ip(ifconfig可以查看)
pip install --index-url https://pypi.douban.com/simple/ django-crispy-forms
Djan
go-----ur, template, model, view
一 url:统一资源定位符 uniform resource locator
1 协议://域名端口(默认80)/相对于主机的路径/get参数 锚点#xxx
get参数:
明文传参,不能超过url地址总长度(256),以问号开始,多个是&连接,可以有相同的变量名
2 传参
不传参
位置传参
3 反向解析
在试图函数中使用
在模板文件使用
4 命名空间
liunx系统下,
查看进程 ps
输出进程树 pstree
killall -9 进程名 不顾后果强制停止
killall -15 进程名,先关闭和该进程有关的程序再将其关闭
kill -9 0 给本进程发信号再关闭
kill -9 -1 给所有进程发信号
查看端口 lsof -i:8000
netstart -aux|
在虚拟机上安装Python3.5.1
2017年04月19日 18:21:24
阅读数:2898
1. 准备
操作系统:Linux Server 6.5
Python 安装包:Python-3.5.1.tgz
到python官网找到下载路径, 用wget下载:wget https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
安装python3.5可能使用的依赖
yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel
2. 安装
解压tgz包:tar -zxvf Python-3.5.1.tgz
进入目录:cd Python-3.5.1
配置:./configure --prefix=/usr/local/python3.5
编译:make
安装:make install
查看旧版本的python依赖:ll /usr/bin | grep python
删除旧的软链接:rm -rf /usr/bin/python
创建新的软链接到最新的python:ln -s /usr/local/bin/python3.5 /usr/bin/python
3.使用
查看python版本:python -V
linux下关闭redis的保护模式,保证远程可以访问
redis-server --protected-mode no
redis-cli里输入:
lpush novel_redis:start_urls 'https://www.dushu.com'
虚拟环境所有的包打包为一个文档,pip freeze > requirements.txt
在新虚拟环境下安装,pip install -r requirements.txt
pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
卸载pip python -m pip uninstall pip
安装pip链接:https://pip.pypa.io/en/stable/installing/
查看python在哪里where python
卸载方法:再次运行安装程序,选择uninstall
selenium模拟设置参数(不显示受控制,偷偷执行)
一:自动化测试的时候,启动浏览器出现‘Chrome正在受到自动软件的控制’,怎么样隐藏,今天学习分享:
在浏览器配置里加个参数,忽略掉这个警告提示语,disable_infobars
option = webdriver.ChromeOptions()option.add_argument('disable-infobars')
参考代码:
# coding:utf-8
from selenium import webdriver
# 加启动配置
option = webdriver.ChromeOptions()
option.add_argument('disable-infobars')
# 打开chrome浏览器
driver = webdriver.Chrome(chrome_options=option)
driver.get("https://www.baidu.com")
二:启动浏览器的时候不想看的浏览器运行,那就加载浏览器的静默模式,让它在后台偷偷运行。用headless
option = webdriver.ChromeOptions()option.add_argument('headless')
代码如下:
# coding:utf-8
from selenium import webdriver
# 加启动配置
option = webdriver.ChromeOptions()
option.add_argument('headless')
# 打开chrome浏览器
driver = webdriver.Chrome(chrome_options=option)
driver.get("https://www.baidu.com")
网站安全验证解决方法
import requests # 默认用证书,不安全会报错,verify=False不会报错,若为True则需要可信的安全证书 # req = requests.get('https://www.12306.cn', verify=False) req = requests.get('https://www.baidu.com/',verify=False) print(req)
post文件或者json
import requests import json # url = 'http://httpbin.org/post' # 传输post请求,data或者text文件 new_url = 'http://pythonscraping.com/pages/processing2.php' #上传文件,任意文件,文件名跟php接口一致 data = {'hello': 'world'} # textfile = {'file': open('test.text', 'r')} zipfile = {'uploadfile': open('putty-0.70cn.zip', 'rb')} # r1 = requests.post(url=new_url, data=data) # print(r1.text) print('---------------------------') r2 = requests.post(url=new_url, files=zipfile) print(r2.text)
request处理异常
import requests try: url = 'http://www.google.com/' response = requests.get(url, timeout=5) print(response.status_code) except requests.exceptions.ConnectionError as e: print(e) print('over')
requests代理
import requests # 带账号密码的代理格式 "HTTP": "jiangwei:[email protected]:9000", proxies = { # "HTTP": "jiangwei:[email protected]:9000", "HTTPS": "117.90.6.59:9000" } print(requests.get('https://www.baidu.com', proxies=proxies).text)
requests的监测编码及模拟头信息
import requests import chardet # r = requests.get('http://www.baidu.com') r = requests.get('http://www.baidu.cn') print(chardet.detect(r.content)) # 检测网页编码,一般英文utf8,中文gbk r.encoding = chardet.detect(r.content)['encoding'] # 对网页编码,监测网页编码 print(r.text) print(r.history) # [<Response [302]>] print(r.url) # 模拟头信息 url = 'http://www.baidu.cn' user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36' headers = {'User-Agent': user_agent} r = requests.get(url=url, headers=headers) print(r.headers) print(r.headers['BDQID'])
cookie
import requests url = 'http://www.baidu.com' user_agent = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36' headers = {'User-Agent': user_agent} my_cooke = dict(H_PS_PSSID='zhadu') #模拟登录 r = requests.get(url=url, headers=headers, cookies=my_cooke) print(r.cookies) #查看cookie for cookie in r.cookies.keys(): print(cookie, r.cookies.get(cookie))
json
# python类型的字典或者列表转换为json类型的字符串---dumps my_dict = {'name': 'wei', 'age': '29'} list_my = [1,2,3,4,5,6,7] print(json.dumps(my_dict)) print(type(json.dumps(my_dict))) print(json.dumps(list_my)) # json类型的字符串转换为列表或者字典-----loads str = '[1,2,3,4,5]' print(json.loads(str)) print(type(json.loads(str))) python类型的序列化转为json类型再写入文件 list_str = [{'name':'jiangwei', 'age':29}] json.dump(list_str, open('list.json', 'w'), ensure_ascii=False) # 把json文件读取为python对象 list_load = json.load(open('list.json')) print(list_load) print(type(list_load))
jsonpath
import urllib.request import json import jsonpath url = 'https://www.lagou.com/lbs/getAllCitySearchLabels.json' res = urllib.request.urlopen(url) result = res.read().decode('utf-8') # print(res.read().decode('utf-8')) data = json.loads(result) # 转换为json对象 gen = jsonpath.jsonpath(data, "$..name") # 根节点下面所有包含name的节点 print(gen) id_list = jsonpath.jsonpath(data, "$..id") # 根节点下面所有包含id的节点 print(id_list) code_list = jsonpath.jsonpath(data, "$..code") # 根节点下面所有包含code的节点 print(code_list) list_data = jsonpath.jsonpath(data, "$..data") # 跟节点下面的data节点 print(list_data) list_data = jsonpath.jsonpath(data, "$.content.data.allCitySearchLabels.A") # 根节点下面子节点的子节点,可以一直遍历往后面层级 print(list_data) list_data = jsonpath.jsonpath(data, "$..A") # 根节点下面的A节点 print(list_data) list_data = jsonpath.jsonpath(data, "$*id") # 是不是所有节点都包含id print(list_data) list_data = jsonpath.jsonpath(data, "$..allCitySearchLabels.*") # allCitySearchLabels后面的子节点的所有节点 print(list_data) list_data = jsonpath.jsonpath(data, "$..allCitySearchLabels") # allCitySearchLabels后面的子节点的所有节点 print(list_data) for line in list_data: for key in line: for detail in line[key]: print(detail) print(detail['name'])
无界面浏览器PhantomJS伪装为别的浏览器(反反爬)
import selenium.webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities # selenium无界面浏览器模拟其他浏览器 dacp = dict(DesiredCapabilities.PHANTOMJS) dacp["phantomjs.page.setting.userAgent"] = ("") driver = selenium.webdriver.PhantomJS(executable_path = '', desired_capabilities=dacp) driver.get('https://httpbin.org/user-agent') driver.get_screenshot_as_file('2.png')
chrome伪装为别的浏览器
import selenium.webdriver # selenium无界面浏览器模拟其他浏览器 options = selenium.webdriver.ChromeOptions() options.add_argument("lang=zh_CN.UTF-8") options.add_argument("user-agent=''" ) driver = selenium.webdriver.Chrome(chrome_options=options) driver.get('https://httpbin.org/user-agent') driver.get_screenshot_as_file('3.png') driver.quit()
不加载图片设置
import selenium.webdriver # selenium无界面浏览器模拟其他浏览器 import time options = selenium.webdriver.ChromeOptions() prefs = {"profile.default_content_setting_values": {'images':2}} options.add_experimental_option('prefs',prefs) # 不加载图片 driver = selenium.webdriver.Chrome(chrome_options=options) driver.get('http://image.baidu.com/search/index?tn=baiduimage&ct=201326592&lm=-1&cl=2&ie=gb18030&word=%CD%BC%C6%AC&fr=ala&ala=1&alatpl=others&pos=0') # driver.get_screenshot_as_file('3.png')
OCR:
将图片复制该后缀名字为tif,终端进入OCR文件夹目录下,
执行命令生成box
tesseract mjorcen.normal.exp0.jpg mjorcen.normal.exp0 -l chi_sim batch.nochop makebox
tesseract imagename outputbase digits 仅仅识别数字---只针对3.0版本适用