⑴ python程序问题:urlopen()控制
使用try...except来对urlopen出错进行控制,通过socket模块的setdefaulttimeout函数来控制超时时间,python3.x示例代码如下:
importurllib.request
importsocket
socket.setdefaulttimeout(10)#设置超时时间
#要下载的网页列表
urls=['http://www.test.com/1.htm',
'http://www.test.com/2.htm',
'http://www.test.com/3.htm',
'http://www.test.com/4.htm',
'http://www.test.com/5.htm',
'http://www.test.com/6.htm']
forurlinurls:
try:
html=urllib.request.urlopen(url)
#处理得到的网页
except:
#出错处理
⑵ 如何用python把网页上的文本内容保存下来
1、了解Python如何获取网页内容。
⑶ python 2.7 urlopen 函数,如何提高下载速度.
可以使用多进程或多线程并发下载。其实你的方法已经是多进程的一种了。
python中有多进程模块multiprocessing和多线程multithreading。
思路是这样,将需要下载的连接送入队列,然后各个进程(或线程)从队列里拿任务然后下载。前面的两个类库都提供进程、线程安全的队列。
楼下给了个多线程的示例,这里我给一个稍微复杂点的进程的示例。其实线程和进程库的接口基本是一致的。
#!/usr/bin/envpython
#encoding=utf-8
#test.py
,Process
fromQueueimportEmpty
importurllib
importtime
urls=[line.strip()forlineinopen('urls.txt')]
queue=Queue(1024)
forurlinurls:
queue.put(url)
defdownload():
whileTrue:
try:
url=queue.get()
f=urllib.urlopen(url)
r=f.read()
#这里保存你下载的文件
exceptEmpty:
time.sleep(5)
exceptException,e:
print'downloaderror:%s'%e
foriinrange(10):
p=Process(target=download)
p.start()
p.join()
使用方法:编辑一个文件urls.txt,每行一个url。然后:
nohup./test.py&
结束进程则需要找到它的进程号,然后kill -9
望采纳,谢谢支持!
⑷ python3中使用urllib进行https请求
刚入门python学习网络爬虫基础,我使用的python版本是python3.6.4,学习的教程参考 Python爬虫入门教程
python3.6的版本已经没有urllib2这个库了,所以我也不需要纠空带结urllib和urllib2的区别和应用场景
参考这篇官方文档 HOWTO Fetch Internet Resources Using The urllib Package 。关于http(s)请求一般就get和post两种方式较为常用衡并,所以写了以下两个小demo,url链接随便找的,具体场景具体变化,可参考注释中的基本思路
POST请求:
GET请求:
注意,
使用ssl创建未经验证的上下文,在urlopen中需传入上下文参数
urllib.request.urlopen(full_url, context=context)
这是Python 升级到 2.7.9 之后引入的一个新特性,所以在使用urlopen打开https链接会遇到如下报错:
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:777)
所以,当使用urllib.urlopen打开一个 https 链接时,需要先验证一次 SSL 证书
context = ssl._create_unverified_context()
或者或者导入ssl时关闭斗拦芦证书验证
ssl._create_default_https_context =ssl._create_unverified_context
⑸ 如何用python的urlopen打开自动跳转的网页
try this:
import sys,re,urllib2,cookielib
def download(url):
____opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar()))
____opener.addheaders = [('User-agent', 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322)')]
____f = opener.open(url)
____s = f.read()
____f.close()
____return s
s = download("http://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2009-2403")
print s
⑹ 关于python的urlopen
python 3里面,bytes存放的是binary data,而str存放的text
从bytes转到str,需要把binary data解码,因此你需要指定一个编码,例如:
my_str = str(my_bytes, encoding="utf-8")
建议阅读文档:
http://docs.python.org/release/3.0.1/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit
http://docs.python.org/release/3.0.1/howto/unicode.html#unicode-howto
这两段文档应该足够解决你的困惑,呵呵
⑺ 关于python urlopen函数
python
3里面,bytes存放的是binary
data,而str存放的text
从bytes转到str,需要把binary
data解码,因此你需要指定一个编码,例如:
my_str
=
str(my_bytes,
encoding="utf-8")
建议阅读文档:
http://docs.python.org/release/3.0.1/whatsnew/3.0.html#text-vs-data-instead-of-unicode-vs-8-bit
http://docs.python.org/release/3.0.1/howto/unicode.html#unicode-howto
这两段文档应该足够解决你的困惑,呵呵