urllib2

python访问web的利器:urllib2

心已入冬 提交于 2020-02-27 06:48:42
使用Python访问网页主要有三种方式: urllib, urllib2, httplib urllib比较简单,功能相对也比较弱,httplib简单强大,但好像不支持session 1. 最简单的页面访问 res=urllib2.urlopen(url) print res.read() 2. 加上要get或post的数据 data={"name":"hank", "passwd":"hjz"} urllib2.urlopen(url, urllib.urlencode(data)) 3. 加上http头 header={"User-Agent": "Mozilla-Firefox5.0"} urllib2.urlopen(url, urllib.urlencode(data), header) 使用opener和handler opener = urllib2.build_opener(handler) urllib2.install_opener(opener) 4. 加上session cj = cookielib.CookieJar() cjhandler=urllib2.HTTPCookieProcessor(cj) opener = urllib2.build_opener(cjhandler) urllib2.install_opener(opener) 5.

python爬虫(七)_urllib2:urlerror和httperror

我与影子孤独终老i 提交于 2020-02-17 10:19:14
urllib2的异常错误处理 在我们用 urlopen或opener.open 方法发出一个请求时,如果 urlopen或opener.open 不能处理这个response,就产生错误。 这里主要说的是URLError和HTTPError,以及对它们的错误处理。 URLError URLError产生的原因主要有: 没有网络连接 服务器链接失败 找不到指定的服务器 我们可以用 try except 语句来补货相应的异常。下面的例子里我们访问了一个不存在的域名。 #urllib2_urlerror.py import urllib2 request = urllib2.Request("http://www.sdfsdfsf.com") try: urllib2.urlopen(request, timeout= 5) except urllib2.URLError, err: print err 运行结果如下: <urlopen error [Errno 8] nodename nor servname provided, or not known> urlopen error,错误代码8.错误原因是没有找到指定的服务器。 HTTPError HTTPError是URLError的子类,我们发出一个请求时,服务器都会对应一个response应答对象,其中它包含一个数字"响应状态码

使用Sublime 2 配置GoLang语言

人盡茶涼 提交于 2020-02-16 01:50:02
一、准备工作: 1、下载Go语言包: https://code.google.com/p/go/downloads/list 2、下载Git: https://code.google.com/p/msysgit/downloads/list 3、下载Sublime 2: http://www.sublimetext.com/2 二、安装: 1、安装go(一路next),他会自动帮你配置环境变量 2、安装sublime(一路next) 3、安装git(一路next) 三、配置: 1、安装 Package Control ,在打开 Sublime Text 2以后,按下快捷键 Ctrl + ` ,打开命令窗行,`这个按键在Tab键的上面,我刚开始还没找到,呵呵。输入以下内容,并回车:    import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb')

sublime text 配置golang开发环境

女生的网名这么多〃 提交于 2020-02-16 01:48:33
一、准备工作: 1、下载Go语言包: https://code.google.com/p/go/downloads/list 2、下载Git: https://code.google.com/p/msysgit/downloads/list 3、下载Sublime 2: http://www.sublimetext.com/2 二、安装: 1、安装go(一路next),他会自动帮你配置环境变量 2、安装sublime(一路next) 3、安装git(一路next) 三、配置: 1、安装 Package Control ,在打开 Sublime Text 2以后,按下快捷键 Ctrl + ` ,打开命令窗行,`这个按键在Tab键的上面,我刚开始还没找到,呵呵。输入以下内容,并回车:   import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb')

爬虫入门(四):urllib2

戏子无情 提交于 2020-02-08 13:28:18
主要使用python自带的urllib2进行爬虫实验。 写在前面的蠢事: 本来新建了一个urllib2.py便于好认识这是urllib2的实验,结果始终编译不通过,错误错误。不能用Python的关键字(保留字)来命名py文件,改了就好了。 正则表达式与re Python 通过 re 模块提供对正则表达式的支持。使用 re 的一般步骤是: Step1:先将正则表达式的字符串形式编译为Pattern实例。 Step2:然后使用Pattern实例处理文本并获得匹配结果(一个Match实例)。 Step3:最后使用Match实例获得信息,进行其他的操作。 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Date : 2016-10-14 21:16:25 # @Author : Nicolo (1241251168@qq.com) # @Link : http://www.xiaosablog.cf/ # @Version : $Id$ #一个简单的re实例,匹配字符串中的hello字符串 #导入re模块 import re # 将正则表达式编译成Pattern对象,注意hello前面的r的意思是“原生字符串” pattern = re.compile(r'hello') # 使用Pattern匹配文本,获得匹配结果

用Python写的简单脚本更新本地hosts

亡梦爱人 提交于 2020-02-08 00:37:33
这两天Google墙得严重,于是就产生了做个一键更新hosts的脚本的想法。 由于正在学习Python,理所当然用Python来写这个脚本了。 接触比较多的就是urllib2这个库,习惯性的import进去了。还要import一个re的库,让Python支持正则表达式。关于正则表达式我研究不多,只会点简单的,如果想了解下正则表达式可以上这个网站http://deerchao.net/tutorials/regex/regex.htm。 Python比较简洁,这里就用到了个写入文件的语法。下面贴上代码。 # coding:utf-8 import re import urllib2 r=urllib2.urlopen('http://googless.sinaapp.com').read() link_list = re.findall('1\d+.\d+.\d+.\d+' ,r) newlist = [] def unique(oldlist): for x in oldlist: if x not in newlist: newlist.append(x) return newlist unique(link_list) f = open('/private/etc/hosts','w') for each_link in newlist: f.write(each_link+'

urllib2 having trouble processing colon symbol in url

非 Y 不嫁゛ 提交于 2020-02-05 04:58:09
问题 I am using the API for challonge and their url format is https://username:password@challonge.com/api/ However, when the use urllib2 in python to get this url, response = urllib2.urlopen('https://username:password@challonge.com/api/'), I get an error about a non-numerical port number. I believe this is cause by the colon (:) in the url making urllib2 think i'm trying to get a port of something. Is there anyway around this issue, or am I doing something wrong? 回答1: This is because you must use

Automate browser actions - Clicking the submit button errors - “Click succeeded but Load Failed. ..”

元气小坏坏 提交于 2020-02-05 01:23:29
问题 I'm trying to write a code that automatically logs into two websites and goes to a certain page. I use Splinter. I only get the error with the "Mijn ING Zakelijk" website using PhantomJS as browser type. Until a few days ago the code ran perfectly fine 20 out of 20 times. But since today I'm getting an error. Sometimes the code runs fine. Other times it does not and gives me the "Click succeeded but Load Failed.." error. Here's the full traceback: ## Attempting to login to Mijn ING Zakelijk,

python的urllib2库详细使用说明

感情迁移 提交于 2020-02-04 04:21:08
一直以来技术群里会有新入行的同学提问关于urllib和urllib2以及cookielib相关的问题。所以我打算在这里总结一下,避免大家反复回答同样的问题浪费资源。 这篇属于教程类的文字,如果你已经非常了解urllib2和cookielib那么请忽略本篇。 首先从一段代码开始, #cookie import urllib2 import cookielib cookie = cookielib.CookieJar() opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie)) request = urllib2.Request(url='http://www.baidu.com/') request.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1') response = opener.open(request) for item in cookie: print item.value 很多同学说,我可以直接在openr.open()里写url,为什么你要用request。其实我这么写就是为了整理一下一般使用urllib2构造请求的常用步骤。 初步,urllib2构造请求常用步骤(结合上面的代码): 1

kaggle kernels: urllib.request.urlopen not working for any url

℡╲_俬逩灬. 提交于 2020-02-04 02:58:26
问题 What is the best way to handle fetching of list of urls in kaggle kernels ? I tried first testing with google.com . First Method : Using urllib.request import urllib.request resp = urllib.request.urlopen('http://www.google.com') This lead to error of gai and urlopen error [Errno -2] Name or service not known Second Method : Using requests import requests resp = requests.get('http://www.google.com') This lead to error gaierror: [Errno -3] Temporary failure in name resolution and Failed to