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

1、最简单

import urllib.requestresponse = urllib.request.urlopen('http://python.org/')html = response.read()

2、使用 Request

import urllib.request

req = urllib.request.Request('http://python.org/')response = urllib.request.urlopen(req)the_page = response.read()

 

3、发送数据

#! /usr/bin/env python3

import urllib.parseimport urllib.request

url = 'http://localhost/login.php'user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'values = {'act' : 'login','login[email]' : 'yzhang@i9i8.com','login[password]' : '123456'         }

data = urllib.parse.urlencode(values)req = urllib.request.Request(url, data)req.add_header('Referer', 'http://www.python.org/')response = urllib.request.urlopen(req)the_page = response.read()

print(the_page.decode("utf8"))

 

4、发送数据和header

#! /usr/bin/env python3

import urllib.parseimport urllib.request

url = 'http://localhost/login.php'user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'values = {'act' : 'login','login[email]' : 'yzhang@i9i8.com','login[password]' : '123456'         }headers = { 'User-Agent' : user_agent }

data = urllib.parse.urlencode(values)req = urllib.request.Request(url, data, headers)response = urllib.request.urlopen(req)the_page = response.read()

print(the_page.decode("utf8"))

 

5、http 错误

#! /usr/bin/env python3

import urllib.request

req = urllib.request.Request('http://www.python.org/fish.html')try:    urllib.request.urlopen(req)except urllib.error.HTTPError as e:print(e.code)print(e.read().decode("utf8"))

 

6、异常处理1

#! /usr/bin/env python3

from urllib.request import Request, urlopenfrom urllib.error import URLError, HTTPErrorreq = Request("http://twitter.com/")try:    response = urlopen(req)except HTTPError as e:print('The server couldn\'t fulfill the request.')print('Error code: ', e.code)except URLError as e:print('We failed to reach a server.')print('Reason: ', e.reason)else:print("good!")print(response.read().decode("utf8"))

 

7、异常处理2

#! /usr/bin/env python3

from urllib.request import Request, urlopenfrom urllib.error import  URLErrorreq = Request("http://twitter.com/")try:    response = urlopen(req)except URLError as e:if hasattr(e, 'reason'):print('We failed to reach a server.')print('Reason: ', e.reason)elif hasattr(e, 'code'):print('The server couldn\'t fulfill the request.')print('Error code: ', e.code)else:print("good!")print(response.read().decode("utf8"))

 

8、HTTP 认证

#! /usr/bin/env python3

import urllib.request

# create a password managerpassword_mgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()

# Add the username and password.# If we knew the realm, we could use it instead of None.top_level_url = "https://cms.tetx.com/"password_mgr.add_password(None, top_level_url, 'yzhang', 'cccddd')

handler = urllib.request.HTTPBasicAuthHandler(password_mgr)

# create "opener" (OpenerDirector instance)opener = urllib.request.build_opener(handler)

# use the opener to fetch a URLa_url = "https://cms.tetx.com/"x = opener.open(a_url)print(x.read())

# Install the opener.# Now all calls to urllib.request.urlopen use our opener.urllib.request.install_opener(opener)

a = urllib.request.urlopen(a_url).read().decode('utf8')print(a)

 

9、使用代理

#! /usr/bin/env python3

import urllib.request

proxy_support = urllib.request.ProxyHandler({'sock5': 'localhost:1080'})opener = urllib.request.build_opener(proxy_support)urllib.request.install_opener(opener)

a = urllib.request.urlopen("http://g.cn").read().decode("utf8")print(a)

 

10、超时

#! /usr/bin/env python3

import socketimport urllib.request

# timeout in secondstimeout = 2socket.setdefaulttimeout(timeout)

# this call to urllib.request.urlopen now uses the default timeout# we have set in the socket modulereq = urllib.request.Request('http://twitter.com/')a = urllib.request.urlopen(req).read()print(a)

 

 

@see http://docs.python.org/release/3.2/howto/urllib2.html

 

 

--------------Python书籍推荐-----------------

Python基础教程-第2版.修订版 

购买地址1  购买地址2

 

 

PYTHON核心编程

购买地址1  购买地址2

 

 

零基础学Python

购买地址1  购买地址2

时间: 2024-10-31 10:42:42

python3 抓取网页资源的 N 种方法的相关文章

php抓取网页

用php抓取页面的内容在实际的开发当中是非常有用的,如作一个简单的内容采集器,提取网页中的部分内容等等,抓取到的内容在通过正则表达式做一下过滤就得到了你想要的内容,以下就是几种常用的用php抓取网页中的内容的方法. 1.file_get_contents PHP代码 <?php $url = "http://www.phpzixue.cn"; $contents = file_get_contents($url); //如果出现中文乱码使用下面代码 //$getcontent =

php curl实现多线程抓取网页并同时下载图片

php语言本身不支持多线程,所以开发爬虫程序效率并不高,借助Curl Multi 它可以实现并发多线程的访问多个url地址.用 Curl Multi 多线程下载文件代码: 代码1:将获得的代码直接写入某个文件 <?php $urls =array(   'http://www.111cn.net/',   'http://www.baidu.com/',  );// 设置要抓取的页面URL       $save_to='test.txt';  // 把抓取的代码写入该文件      $st =

Python3抓取javascript生成的html网页

用urllib等抓取网页,只能读取网页的静态源文件,而抓不到由javascript生成的内容. 究其原因,是因为urllib是瞬时抓取,它不会等javascript的加载延迟,所以页面中由javascript生成的内容,urllib读取不到.   那由javascript生成的内容就真的没有办法读取了吗?非也! 本文要介绍一个python库:selenium,目前最新版本是 2.44.0   先安装: pip install -U selenium   下面用三个例子来说明其用法: [例0] 打

用Python编写网络爬虫(一):抓取网页的含义和URL基本构成

一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛. 网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止. 如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来. 这样看来,网络爬虫就是一个爬行程序,一个抓

PHP抓取网页、解析HTML常用的方法总结

  这篇文章主要介绍了PHP抓取网页.解析HTML常用的方法总结,本文只是对可以实现这两个需求的方法作了总结,只介绍方法,不介绍如何实现,需要的朋友可以参考下 概述 爬虫是我们在做程序时经常会遇到的一种功能.PHP有许多开源的爬虫工具,如snoopy,这些开源的爬虫工具,通常能帮我们完成大部分功能,但是在某种情况下,我们需要自己实现一个爬虫,本篇文章对PHP实现爬虫的方式做个总结. PHP实现爬虫主要方法 1.file()函数 2.file_get_contents()函数 3.fopen()-

蜘蛛抓取网页过程的四步曲

随着搜索引擎的不断发展与升级,搜索引擎所派出的蜘蛛也变得越来越智能了,所以为了要弄清楚蜘蛛的工作原理,为了更好的优化自己的网站我们就必须不断的去研究蜘蛛.下面,我就和大家简单的聊聊蜘蛛的基本工作原理吧: 蜘蛛工作的第一步:爬行你网站的网页,寻找合适的资源. 蜘蛛它有一个特性,那就是他的运动轨迹通常都是围绕着蜘蛛丝而走的,而我们之所以将搜索引擎的机器人命名为蜘蛛其实就是因为这个特性.当蜘蛛来到你的网站之后,它就会顺着你网站中的链接(蜘蛛丝)不断的进行爬行,因此如何让蜘蛛能够更好的在你的网站中进行爬

php中如何抓取网页图片

PHP是一门很容易上手的Web编程语言.PHP学习成本很低,能够迅速开发各种Web应用,是一个很优秀的工具. 尽管很多人觉得PHP缺点很多,quick and dirty 之类的,但是"这个世界上只有两种编程语言,一种是饱受争议的,一种是没人用的",不是吗?只要能够把事情做好的工具,就是好工具.PHP就是这么一个优秀的语言工具. 01.<?php 02.header('content-type:text/html;charset=utf-8');03. set_time_limi

编码-python抓取网页,网页源码无法解码

问题描述 python抓取网页,网页源码无法解码 抓取的网页:http://esf.nanjing.fang.com/ 浏览器查看源码显示content="text/html; charset=gb2312" python chardet 结果显示{'confidence': 0.0, 'encoding': None} 通过page=page.decode('gb2312','ignore').encode('utf-8'),解码后print为乱码 求问应该如何对这个网页的源代码进行

php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法_php实例

 php的curl可以用来实现抓取网页,分析网页数据用, 简洁易用, 这里介绍其函数等就不详细描述, 放上代码看看: 只保留了其中几个主要的函数. 实现模拟登陆, 其中可能涉及到session捕获, 然后前后页面涉及参数提供形式. libcurl主要功能就是用不同的协议连接和沟通不同的服务器~也就是相当封装了的sock PHP 支持libcurl(允许你用不同的协议连接和沟通不同的服务器)., libcurl当前支持http, https, ftp, gopher, telnet, dict,