python重定向函数 重定向使用函数-成都快上网建站

python重定向函数 重定向使用函数

python requests怎么设置重定向

class FakeOut:

成都创新互联公司服务项目包括讷河网站建设、讷河网站制作、讷河网页制作以及讷河网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,讷河网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到讷河省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

def __init__(self):

self.str=''

self.n=0

def write(self,s):

self.str+="Out:[%s] %s\n"%(self.n,s)

self.n+=1

def show(self): #显示函数,非必须

print self.str

def clear(self): #清空函数,非必须

self.str=''

self.n=0

f=FakeOut()

import sys

old=sys.stdout

sys.stdout=f

print 'Hello weird.'

print 'Hello weird too.'

sys.stdout=old

f.show()

# 输出:

# Out:[0] Hello weird.

# Out:[1]

# Out:[2] Hello weird too.

# Out:[3]

python 爬网页 遇到重定向怎么处理

1.服务器端重定向,在服务器端完成,一般来说爬虫可以自适应,是不需要特别处理的,如响应代码301(永久重定向)、302(暂时重定向)等。具体来说,可以通过requests请求得到的response对象中的url、status_code两个属性来判断。当status_code为301、302或其他代表重定向的代码时,表示原请求被重定向;当response对象的url属性与发送请求时的链接不一致时,也说明了原请求被重定向且已经自动处理。

2.meta refresh,即网页中的meta标签声明了网页重定向的链接,这种重定向由浏览器完成,需要编写代码进行处理。例如,某一重定向如下面的html代码第三行中的注释所示,浏览器能够自动跳转,但爬虫只能得到跳转前的页面,不能自动跳转。

html  

head  

meta http-equiv="refresh" content="0.1;url="!--本网页会在0.1秒内refresh为url所指的网页--  

/head  

/html

解决办法是通过得到跳转前的页面源码,从中提取出重定向url信息(上述代码第三行中的url属性值)。一个具体的操作:①使用xpath('//meta[@http-equiv="refresh" and @content]/@content')提取出content的值 ②使用正则表达式提取出重定向的url值。

3.js 重定向,通过JavaScript代码形式进行重定向。如下面javascript代码

script language=javascriptwindow.location.href=''/script

对于这种方式的跳转,由于可以实现该功能的JavaScript语句有多种形式,不能再使用正则表达式提取url,只能考虑加载JavaScript代码来进行解决。

python post 请求重定向怎么办

重定向与请求历史

默认情况下,除了 HEAD, Requests会自动处理所有重定向。

可以使用响应对象的 history 方法来追踪重定向。

Response.history 是一个:class:Response requests.Response 对象的列表,为了完成请求而创建了这些对象。

这个对象列表按照从最老到最近的请求进行排序。

例如,Github将所有的HTTP请求重定向到HTTPS。:

r = requests.get('')

r.url

r.status_code

r.history

如果你使用的是GET, OPTIONS, POST, PUT, PATCH 或者 DELETE,,那么你可以通过allow_redirects 参数禁用重定向处理:

r = requests.get('', allow_redirects=False)

r.status_code

r.history

如果你使用的是HEAD,你也可以启用重定向:

r = requests.head('', allow_redirects=True)

r.url

r.history

关于python的输出重定向

import sys

f = open('a.txt','w')

print sys.stdout,'hello,world'

hello,world

print f,'hello,world'

f.close()

输出到屏幕的内容重定向到文件,供参考。

另,print函数的源码

def print(stream):

""" print(value, ..., sep=' ', end='\\n', file=sys.stdout)

Prints the values to a stream, or to sys.stdout by default.

Optional keyword arguments:

file: a file-like object (stream); defaults to the current sys.stdout.

sep:  string inserted between values, default a space.

end:  string appended after the last value, default a newline. """

pass

python怎么重定向输入

控制台重定向

最简单常用的输出重定向方式是利用控制台命令。这种重定向由控制台完成,而与Python本身无关。

Windows命令提示符(cmd.exe)和Linux Shell(bash等)均通过""或""将输出重定向。其中,""表示覆盖内容,""表示追加内容。类似地,"2"可重定向标准错误。重定向到"nul"(Windows)或"/dev/null"(Linux)会抑制输出,既不屏显也不存盘。

以Windows命令提示符为例,将Python脚本输出重定向到文件(为缩短篇幅已删除命令间空行):

E:\echo print 'hello' test.py

E:\test.py out.txt

E:\type out.txt

hello

E:\test.py out.txt

E:\type out.txt

hello

hello

E:\test.py nul

注意,在Windows命令提示符中执行Python脚本时,命令行无需以"python"开头,系统会根据脚本后缀自动调用Python解释器。此外,type命令可直接显示文本文件的内容,类似Linux系统的cat命令。

Linux Shell中执行Python脚本时,命令行应以"python"开头。除""或""重定向外,还可使用tee命令。该命令可将内容同时输出到终端屏幕和(多个)文件中,"-a"选项表示追加写入,否则覆盖写入。示例如下(echo $SHELL或echo $0显示当前所使用的Shell):

[wangxiaoyuan_@localhost ~]$ echo $SHELL

/bin/bash

[wangxiaoyuan_@localhost ~]$ python -c "print 'hello'"

hello

[wangxiaoyuan_@localhost ~]$ python -c "print 'hello'" out.txt

[wangxiaoyuan_@localhost ~]$ cat out.txt

hello

[wangxiaoyuan_@localhost ~]$ python -c "print 'world'" out.txt

[wangxiaoyuan_@localhost ~]$ cat out.txt

hello

world

[wangxiaoyuan_@localhost ~]$ python -c "print 'I am'" | tee out.txt

I am

[wangxiaoyuan_@localhost ~]$ python -c "print 'xywang'" | tee -a out.txt

xywang

[wangxiaoyuan_@localhost ~]$ cat out.txt

I am

xywang

[wangxiaoyuan_@localhost ~]$ python -c "print 'hello'" /dev/null

[wangxiaoyuan_@localhost ~]$

若仅仅想要将脚本输出保存到文件中,也可直接借助会话窗口的日志抓取功能。

注意,控制台重定向的影响是全局性的,仅适用于比较简单的输出任务。


当前文章:python重定向函数 重定向使用函数
文章源于:http://kswjz.com/article/hpjshd.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流