Python网页下载器
注:本代码基于Mac下的PyCharm,Python2.7与Python3(mac自带一个,自己又安装了一个),PyCharm下载地址(官网):https://www.jetbrains.com/pycharm/download/#section=mac
注册码需要到这个网站去获取:http://idea.lanyus.com
如果mac下注册码不能使用:
在终端输入:sudo vim /private/etc/hosts,然后会让你输入电脑密码,直接输入就好了(输入时终端里没有显示),然后会进到一个文件界面,然后点击i(插入),然后在文件夹中添加:0.0.0.0 account.jetbrains.com 这一句,然后shift+:wq保存一下
想在PyCharm输入中文:
Pycharm ----> File ----> Default setting ------> Editor -------> File Encodings;需要在文章开头增加 # coding:utf-8
设置使用Python使用版本
(我在此处使用的是2.7,在创建的时候选择一下)
本文语法:
urllib2.urlopen(url[, data[, proxies]]) :创建一个表示远程url的类文件对象,然后像本地文件一样操作这个类文件对象来获取远程数据。
usr:数据路径,一般都为网址;
data:参数(post提交数据时使用);
proxies:设置代理
urlopen 返回 一个类文件对象,它包含以下方法:
read() , readline() , readlines() , fileno() , close()
info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息;
getcode():返回Http状态码。如果是http请求,200表示请求成功完成;404表示网址未找到;
geturl():返回请求的url
cookielib.CookieJar(): 用来保持cookies(eg:采集某个网站的登录信息)
代码示例:
# !user/bin/env python3
# coding:utf-8
import urllib2,cookielib
url = "https://www.baidu.com"
print('***One')
responsel = urllib2.urlopen(url)
print responsel.getcode()
print len(responsel.read())
print('***Two')
request = urllib2.Request(url)
request.add_header("user-agent","Mozilla/5.0")
response2 = urllib2.urlopen(request)
print response2.getcode()
print len(response2.read())
print('***Three')
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
response3 = urllib2.urlopen(url)
print response3.getcode()
print cj
print response3.read()
打印为:
***One
200
227
***Two
200
227
***Three
200
<CookieJar[<Cookie BIDUPSID=D96D25C9BB820406A577452D0C0D288A for .baidu.com/>, <Cookie PSTM=1494991402 for .baidu.com/>, <Cookie __bsi=14053390655258788841_00_31_N_N_55_0301_002F_N_N_N_0 for .www.baidu.com/>, <Cookie BD_NOT_HTTPS=1 for www.baidu.com/>]>
<html>
<head>
<script>
location.replace(location.href.replace("https://","http://"));
</script>
</head>
<body>
<noscript><meta http-equiv="refresh" content="0;url=http://www.baidu.com/"></noscript>
</body>
</html>
/代码注释版/
#coding=utf-8
# urllib2下载网页
法一:
import urllib2
response = urllib2.urlopen('http://www.baidu.com')
print response.getcode()
print len(response.read())
法二: 添加data与head
三个参数 url,data,header
import urllib2
request = urllib2.Request('http://www.baidu.com') #创建请求对象
request.add_data('a')
request.add_header('User-Agent','Mozilla/5.0')
response = urllib2.urlopen(request) #发送请求
print response.getcode()
print len(response.read())
法三: 添加特殊情景处理器
import urllib2, cookielib
cj = cookielib.CookieJar() #创建cookie容器
handle = urllib2.HTTPCookieProcessor(cj) #创建一个handel
opener = urllib2.build_opener(handle) #创建一个openner
urllib2.install_opener(opener) #给urllib2安装openner
response = urllib2.urlopen("http://www.baidu.com") #使用带有 cookie的urllib2访问网页
print response.read()