爬虫requests等相关点

虚拟机安装sudo apt-get install ssh开启 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

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版本适用

猜你喜欢

转载自blog.csdn.net/jiangwei1102/article/details/80783297