python框架之虚构情形的布署,数据类型和进制转
分类:long8

一、爬虫之requests

long8 1

读取Word文书档案,并将文件转成html标签,前面开采,平常有带上下角标的原委,于是一并管理了。

1、eclipse->windows->preferences

在支付进度中,往往同一台Computer要付出差异的门类,分裂的门类大概要求差异版本的包,为了减轻那么些主题素材就引出了设想碰着。

    a、介绍:应用requests能够效仿浏览器的伏乞,比起从前运用的urllib,requests模块的api越发便民(本质就是包裹了urllib3)

主干在于对XWPFRun对象中Subscript属性的管理。

long8 2

安顿设想情况:

    b、注意:requests发送央求是将网页内容下载来今后,并不会奉行js代码,这要求我们团结解析目的站点然后发起新的requests央浼

 1         /// <summary>
 2         /// 读取Word,并识别文本中的上下角标
 3         /// </summary>
 4         /// <param name="fileName"></param>
 5         /// <returns></returns>
 6         public static string ReadWordTextExWithSubscript(string fileName)
 7         {
 8 
 9             string fileText = string.Empty;
10             StringBuilder sbFileText = new StringBuilder();
11 
12             #region 打开文档
13             XWPFDocument document = null;
14             try
15             {
16                 using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
17                 {
18                     document = new XWPFDocument(file);
19                 }
20             }
21             catch (Exception e)
22             {
23                 throw e;
24             }
25             #endregion
26             //正文段落
27             foreach (XWPFParagraph paragraph in document.Paragraphs)
28             {
29                 //获取段楼中的句列表
30                 IList<XWPFRun> runsLists = paragraph.Runs;
31 
32                 sbFileText.Append("<p>");
33                 foreach (XWPFRun run in runsLists)
34                 {
35                     switch (run.Subscript)
36                     {
37                         case VerticalAlign.BASELINE:
38                             sbFileText.Append(run.Text);
39                             break;
40                         //上角标
41                         case VerticalAlign.SUPERSCRIPT:
42                             sbFileText.Append("<sup>" + run.Text + "</sup>");
43                             break;
44                         //下角标
45                         case VerticalAlign.SUBSCRIPT:
46                             sbFileText.Append("<sub>" + run.Text + "</sub>");
47                             break;
48                         default:
49                             sbFileText.Append(run.Text);
50                             break;
51                     }
52                     
53                 }
54                 sbFileText.AppendLine("</p>");
55             }
56             fileText = sbFileText.ToString();
57 
58             return fileText;
59         }

2、在python目录中选拔python.exe

1.安装虚构境况:

    c、安装:pip3 install requests

Word文档:

long8 3

sudo pip3 install virtualenv  

    d、种种央浼格局,常用的是requests.get()和requets.post()

long8 4

3、出现下图,全选ok就能够

 

二、基于get请求

输出:

long8 5

2.设置设想境况扩大包:

    a、基本供给

<p>测试<sup>上</sup><sub>下</sub>ok。</p>
<p>CO<sub>2</sub></p>
<p>面积约6000km<sup>2</sup></p>

4、消除,能够早先写代码了,新建一个python工程

sudo pip3 install virtualenvwrapper
import requests
response=requests.get('http://dig.chouti.com/')
print(response.text)

Html预览:

long8 6

 

    b、带参数get请求-----》》params

long8 7

 long8 8

3.修改客户家目录下的布局文件.bashrc,增多如下内容:

    c、带参数get请求-----》》headers

 

 

export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh
#通常我们在发送请求时都需要带上请求头,请求头是将自身伪装成浏览器的关键,常见的有用的请求头如下
Host
Referer #大型网站通常都会根据该参数判断请求的来源
User-Agent #客户端
Cookie #Cookie信息虽然包含在请求头里,但requests模块有单独的参数来处理他,headers={}内就不要放它了

 

     d、带参数get请求-----》》cookies

long8 9

三、基于post请求

 

     a、介绍

 4.应用source .bashrc命令使配置文件生效。

#GET请求
HTTP默认的请求方法就是GET
     * 没有请求体
     * 数据必须在1K之内!
     * GET请求数据会暴露在浏览器的地址栏中

GET请求常用的操作:
       1. 在浏览器的地址栏中直接给出URL,那么就一定是GET请求
       2. 点击页面上的超链接也一定是GET请求
       3. 提交表单时,表单默认使用GET请求,但可以设置为POST


#POST请求
(1). 数据不会出现在地址栏中
(2). 数据的大小没有上限
(3). 有请求体
(4). 请求体中如果存在中文,会使用URL编码!


#!!!requests.post()用法与requests.get()完全一致,特殊的是requests.post()有一个data参数,用来存放请求体数据
复制代码

那时只怕会现出这么的不当:

    b、发送POST的呼吁,模拟浏览器的记名行为

/usr/bin/python: No module named virtualenvwrapper  
virtualenvwrapper.sh: There was a problem running the initialization hooks.   
If Python could not import the module virtualenvwrapper.hook_loader,  
check that virtualenvwrapper has been installed for  
VIRTUALENVWRAPPER_PYTHON=/usr/bin/python and that PATH is  
set properly. 

四、响应Response

 

    a、response属性

 系统暗许用的是python2的解释器,那就要求大家将python3的解释器增添到境遇变量:

long8 10long8 11

4.1开垦系统情形变量文件:

import requests
respone=requests.get('http://www.jianshu.com')
# respone属性
print(respone.text)
print(respone.content)

print(respone.status_code)
print(respone.headers)
print(respone.cookies)
print(respone.cookies.get_dict())
print(respone.cookies.items())

print(respone.url)
print(respone.history)

print(respone.encoding)

#关闭:response.close()
from contextlib import closing
with closing(requests.get('xxx',stream=True)) as response:
    for line in response.iter_content():
    pass
vi /etc/profile

View Code

long8, 4.2添加python3:

    b、编码难点

VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
#编码问题
import requests
response=requests.get('http://www.autohome.com/news')
# response.encoding='gbk' #汽车之家网站返回的页面内容为gb2312编码的,而requests的默认编码为ISO-8859-1,如果不设置成gbk则中文乱码
print(response.text)

 long8 12

    c、获取二进制

4.3使用source /etc/profile命令使配置文件生效。

#stream参数:一点一点的取,比如下载视频时,如果视频100G,用response.content然后一下子写到文件中是不合理的

import requests

response=requests.get('https://gss3.baidu.com/6LZ0ej3k1Qd3ote6lo7D0j9wehsv/tieba-smallvideo-transcode/1767502_56ec685f9c7ec542eeaf6eac93a65dc7_6fe25cd1347c_3.mp4',
                      stream=True)

with open('b.mp4','wb') as f:
    for line in response.iter_content():
        f.write(line)

4.4重复施行source .bashrc命令使配置文件生效。

    d、解析json

5.创造python3设想景况的命令如下:

#解析json
import requests
response=requests.get('http://httpbin.org/get')

import json
res1=json.loads(response.text) #太麻烦

res2=response.json() #直接获取json数据


print(res1 == res2) #True
mkvirtualenv -p python3 虚拟环境名称

五、python框架之虚构情形的布署,数据类型和进制转变。selenium模块

  • 创办成功后,会自行工作在此个虚构情形上。
  • 始建设想景况须求联网。
  • 办事在设想境遇上,提示符最终面会冒出"(虚构境况名称)"。
  • 享有的虚拟遇到,都献身/home/python/下的隐蔽目录.virtualenvs下。

    a、介绍

 6.能够将事先用过的完好项目必要的包完全导过来实行设置:

selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解决requests无法直接执行JavaScript代码的问题

selenium本质是通过驱动浏览器,完全模拟浏览器的操作,比如跳转、输入、点击、下拉等,来拿到网页渲染之后的结果,可支持多种浏览器

from selenium import webdriver
browser=webdriver.Chrome()
browser=webdriver.Firefox()
browser=webdriver.PhantomJS()
browser=webdriver.Safari()
browser=webdriver.Edge()

6.1先将事先项目中的安装包倒入到贰个文书夹中:

   b、安装

pip freeze > package.txt
#安装:selenium+chromedriver
pip3 install selenium
下载chromdriver.exe放到python安装路径的scripts目录中即可,注意最新版本是2.29,并非2.9
国内镜像网站地址:http://npm.taobao.org/mirrors/chromedriver/2.29/
最新的版本去官网找:https://sites.google.com/a/chromium.org/chromedriver/downloads

#注意:
selenium3默认支持的webdriver是Firfox,而Firefox需要安装geckodriver
下载链接:https://github.com/mozilla/geckodriver/releases

 

六、选择器

 6.2切换到刚刚新创立好的设想景况中,安装package.txt中的包:

   a、基本使用

pip install -r ./package.txt   # 将package.txt放到了家目录下,并且系统也切换到了家目录下。

long8 13long8 14

 

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By #按照什么方式查找,By.ID,By.CSS_SELECTOR
from selenium.webdriver.common.keys import Keys #键盘按键操作
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait #等待页面加载某些元素
import time

driver=webdriver.Chrome()
driver.get('https://www.baidu.com')
wait=WebDriverWait(driver,10)

try:
    #===============所有方法===================
    # 1、find_element_by_id
    # 2、find_element_by_link_text
    # 3、find_element_by_partial_link_text
    # 4、find_element_by_tag_name
    # 5、find_element_by_class_name
    # 6、find_element_by_name
    # 7、find_element_by_css_selector
    # 8、find_element_by_xpath
    # 强调:
    # 1、上述均可以改写成find_element(By.ID,'kw')的形式
    # 2、find_elements_by_xxx的形式是查找到多个元素,结果为列表

    #===============示范用法===================
    # 1、find_element_by_id
    print(driver.find_element_by_id('kw'))

    # 2、find_element_by_link_text
    # login=driver.find_element_by_link_text('登录')
    # login.click()

    # 3、find_element_by_partial_link_text
    login=driver.find_elements_by_partial_link_text('录')[0]
    login.click()

    # 4、find_element_by_tag_name
    print(driver.find_element_by_tag_name('a'))

    # 5、find_element_by_class_name
    button=wait.until(EC.element_to_be_clickable((By.CLASS_NAME,'tang-pass-footerBarULogin')))
    button.click()

    # 6、find_element_by_name
    input_user=wait.until(EC.presence_of_element_located((By.NAME,'userName')))
    input_pwd=wait.until(EC.presence_of_element_located((By.NAME,'password')))
    commit=wait.until(EC.element_to_be_clickable((By.ID,'TANGRAM__PSP_10__submit')))

    input_user.send_keys('18611453110')
    input_pwd.send_keys('lhf@094573')
    commit.click()

    # 7、find_element_by_css_selector
    driver.find_element_by_css_selector('#kw')

    # 8、find_element_by_xpath

    time.sleep(5)

finally:
    driver.close()

 此时说不定会出现那样的情况:

View Code

long8 15

本文由long8发布于long8,转载请注明出处:python框架之虚构情形的布署,数据类型和进制转

上一篇:揭秘yield关键字的地上面纱,空格不能交替 下一篇:long8:率先篇小说,Python之函数计算
猜你喜欢
热门排行
精彩图文