码迷,mamicode.com
首页 > 编程语言 > 详细

python3 抓取网页资源的 N 种方法

时间:2015-08-07 07:13:44      阅读:162      评论:0      收藏:0      [点我收藏+]

标签:

python3 抓取网页资源的 N 种方法

1、最简单

 urllib.request
response = urllib.request.urlopen()
html = response.read()

2、使用 Request

 urllib.request
 
req = urllib.request.Request()
response = urllib.request.urlopen(req)
the_page = response.read()

 

3、发送数据

技术分享

 
 urllib.parse
 urllib.request
 
url = 
user_agent = 
values = {
           : ,
           : ,
           : 
         }
 
data = urllib.parse.urlencode(values)
req = urllib.request.Request(url, data)
req.add_header(, )
response = urllib.request.urlopen(req)
the_page = response.read()
 
(the_page.decode())

技术分享


 

4、发送数据和header

技术分享

 
 urllib.parse
 urllib.request
 
url = 
user_agent = 
values = {
           : ,
           : ,
           : 
         }
headers = {  : user_agent }
 
data = urllib.parse.urlencode(values)
req = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(req)
the_page = response.read()
 
(the_page.decode())

技术分享


 

5、http 错误

技术分享

 
 urllib.request
 
req = urllib.request.Request()
:
    urllib.request.urlopen(req)
 urllib.error.HTTPError as e:
    (e.code)
    (e.read().decode())

技术分享

 

6、异常处理1

技术分享

 
 urllib.request  Request, urlopen
 urllib.error  URLError, HTTPError
req = Request()
:
    response = urlopen(req)
 HTTPError as e:
    ()
    (, e.code)
 URLError as e:
    ()
    (, e.reason)
:
    ()
    (response.read().decode())

技术分享


 

7、异常处理2

技术分享

 
 urllib.request  Request, urlopen
 urllib.error   URLError
req = Request()
:
    response = urlopen(req)
 URLError as e:
     hasattr(e, ):
        ()
        (, e.reason)
     hasattr(e, ):
        ()
        (, e.code)
:
    ()
    (response.read().decode())

技术分享


 

8、HTTP 认证

技术分享

 
 urllib.request
 
password_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()
 
top_level_url = 
password_mgr.add_password(None, top_level_url, , )
 
handler = urllib.request.HTTPBasicAuthHandler(password_mgr)
 
opener = urllib.request.build_opener(handler)
 
a_url = 
x = opener.open(a_url)
(x.read())
 
urllib.request.install_opener(opener)
 
a = urllib.request.urlopen(a_url).read().decode()
(a)

技术分享


 

9、使用代理

技术分享

 
 urllib.request
 
proxy_support = urllib.request.ProxyHandler({: })
opener = urllib.request.build_opener(proxy_support)
urllib.request.install_opener(opener)

 
a = urllib.request.urlopen().read().decode()
(a)

技术分享


 

10、超时

技术分享

 
 socket
 urllib.request
 
timeout = 2
socket.setdefaulttimeout(timeout)
 
req = urllib.request.Request()
a = urllib.request.urlopen(req).read()
(a)

技术分享


python3 抓取网页资源的 N 种方法

标签:

原文地址:http://my.oschina.net/bruceray/blog/488910

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!