`

十Python之Http Web服务(网页抓取二)

阅读更多

    上一篇讲了网页抓取的基础,分析html,但是我们所得到的html内容必须是通过编程的方式获取到的。

    简单地讲,HTTP web 服务是指以编程的方式直接使用 HTTP 操作从远程服务器发送和接收数据。P

ython3 带有两个库用于和HTTP web 服务交互:

    http.client 是实现了RFC 2616, HTTP 协议的底层库。

    urllib.request 建立在http.client之上一个抽象层。 它为访问HTTP 和 FTP 服务器提供了一个标准的API,可以自动跟随HTTP 重定向, 并且处理了一些常见形式的HTTP 认证。

1. 一个简单的http 服务请求

import urllib.request as request

if __name__ == '__main__':
    response = request.urlopen("http://www.baidu.com")
    data = response.read()
    print(type(data))       # <class 'bytes'>
    print(data)             #输出字节码内容
    print(str(data,encoding = "utf-8")) #将字节码转换成utf-8编码的字符串

    (1)在Python中操作http web请求非常简单;urllib.request模块有一个方便的函数urlopen() ,它接受你所要获取的页面地址,然后返回一个类文件对象,您只要调用它的read()方法就可以获得网页的全部内容

    (2)urlopen().read()方法总是返回bytes对象,而不是字符串。记住字节仅仅是字节,字符只是一种抽象。 HTTP 服务器不关心抽象的东西。如果你请求一个资源,你得到字节。 如果你需要一个字符串,你需要确定字符编码,并显式的将其转化成字符串。

 

2. 使用post请求发送数据   

import urllib.request as request
from urllib.parse import urlencode

if __name__ == '__main__':
    param = {'email':'abc@163.com','password':'test','origURL':'http://www.renren.com/Home.do','domain':'renren.com'}
    param = urlencode(param).encode('utf-8') #url编码后再进行utf-8转换成bytes
    print(type(param)) # <class 'bytes'>
    print(param)       #b'origURL=http%3A%2F%2Fwww.renren.com%2FHome.do&domain=renren.com&password=test&email=abc%40163.com'
    response = request.urlopen("http://www.renren.com/ajaxLogin/login",param)
    print(str(response.read(),'utf-8')) #会看到结果里有提示用户名密码不匹配
    (1)post请求发送的数据不能跟在url后面,所以我们可以将字典类型的数据通过urlencode转化成字符串的数据格式,再通过encode转化成字节码的形式。

    (2)urlopen第二个参数即为post提交的bytes类型的数据。

    (3)模拟了一个人人的登陆,在返回结果里面可以收到服务器的返回“您的用户名和密码不匹配” ,说明我们的数据已经通过post提交到了服务器(就算此处用正确的用户名密码也登陆不进去,因为人人网的密码是加密传递的,需要加密后的密码才能登陆成功)

 

3. httplib2介绍

    httplib2一个第三方的开源库,它比http.client更完整的实现了HTTP协议,同时比urllib.request提供了更好的抽象。可以下载python3对应的版本(目前最新版本的名称:httplib2‐python3‐0.5.0.zip),可以通过https://httplib2.googlecode.com/files/httplib2-python3-0.5.0.zip 进行下载(有可能被墙,你懂的),下载后解压进行安装,我的解压目录为:E:\daokun\python\diveintopython3-cn\httplib2-python3-0.5.0,在CMD窗口里面cd到解压目录,又因我的python安装在D:\Python32\目录下,所以我的安装命令为:D:\Python32\python.exe setup.py install ,安装后即可使用httplib2。

 

    一个httplib2示例

import httplib2

if __name__ == '__main__':
    httplib2.debuglevel = 1
    h = httplib2.Http(".cache")
    response,content = h.request("http://www.12306.cn/mormhweb/zxdt/tlxw_tdbtz53.html")
    print(len(content))
    print(response.status)
    print(response.fromcache)
    print(response)

    (1)httplib2.debuglevel = 1 可以获取一些隐藏信息,链接、发生的数据、响应及header头信息等。

    (2)httplib2的主要接口是Http对象。你创建Http对象时总是应该传入一个目录名,具体原因是在此目录下创建缓存。目录不需要事先存在,httplib2会在必要的时候创建它。

    (3)一旦你有了Http对象, 获取数据非常简单,以你要的数据的地址作为参数调用request()方法就可以了。这会对该URL执行一个HTTP GET请求.

    (4)request() 方法返回两个值。第一个是一个httplib2.Response对象,其中包含了服务器返回的所有HTTP头。比如, status为200 表示请求成功。

   (5)content 变量包含了HTTP服务器返回的实际数据。数据以bytes对象返回,不是字符串。 如果你需要一个字符串,你需要确定字符编码并自己进行转换。

 

    httplib2的post请求  

import httplib2
from urllib.parse import urlencode

if __name__ == '__main__':
    httplib2.debuglevel = 1
    h = httplib2.Http(".cache")
    param = {'email':'abc@163.com','password':'test','origURL':'http://www.renren.com/Home.do','domain':'renren.com'}
    response3,content3 = h.request("http://www.renren.com/ajaxLogin/login","POST",urlencode(param))
    print(str(content3,'utf-8'))

    (1)h.request第一个参数是url。

    (2)第二个参数是请求的类型,这里是POST。

    (3)第三个参数是经过url编码后要发送到服务器的数据。 

    (4)同样我们在返回的结果里面看到服务器的返回有提示说:用户名或密码错误。 

 

Http Web服务还有很多其他的东西,比如缓存、压缩等等,留给感兴趣的人自己去学习。 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Web-Scraping-with-Python_Python网页信息抓取_Python抓取网页_jupyter_Python抓

    **Python网页信息抓取技术详解** 网页信息抓取,也称为网络爬虫或网页抓取,是通过自动化程序从互联网上获取大量数据的过程。在这个领域,Python语言因其强大的库支持和简洁的语法而成为首选工具。本教程将深入探讨...

    Python网页数据抓取以及表格的制作

    在IT行业中,Python语言因其简洁明了的语法和强大的库支持而被广泛应用于网页数据抓取和数据分析领域。本主题将深入探讨如何使用Python进行网页数据抓取,并介绍如何利用这些数据创建表格,同时涉及CSS文件的生成和...

    Python实现抓取HTML网页并以PDF文件形式保存的方法

    在Python编程中,有时我们需要将网页内容抓取下来并保存为PDF格式,以便于离线阅读或者方便打印。本篇将详细介绍如何使用Python来实现这一功能,主要涉及的库包括`requests`、`beautifulsoup4`、`pdfkit`以及`PyPDF2...

    使用 Python 进行 Web 抓取实践:使用有效的 Python 技术从 Web 中提取高质量数据

    掌握与网页抓取和数据提取相关的 Python 编程基础知识 获得对网络爬虫进行编码、以所需格式存储数据以及专业地使用数据的技能 网络抓取是从网络中提取数据的强大工具,但对于没有技术背景的人来说,它可能会令人...

    地图瓦片抓取之python

    3. **Web墨卡托投影**:大多数在线地图服务采用此投影,它将地球表面转换为二维矩形,方便进行瓦片划分。需要了解如何将经纬度坐标转换为Web墨卡托坐标。 4. **TilePyramid库**:Python中有一个名为`TilePyramid`的...

    Python抓取页面、Pthon爬虫参考资料

    Python在Web抓取和爬虫领域有着广泛的应用,它的易学性和强大的库支持使得开发者能够高效地抓取和处理网页内容。以下是一些基于Python的网页抓取和爬虫技术的关键知识点: 1. **基础抓取**:首先,Python中的`...

    Python 语言实现的抓取网页内容与列文件目录

    在Python编程领域,数据抓取(Web Scraping)和文件管理是两个重要的实践技能。Python以其简洁易读的语法和丰富的库支持,成为了这两个领域的首选工具。本篇将重点讲解如何利用Python抓取网页内容以及如何列文件目录...

    使用 Python 进行网页抓取:从现代 Web 中提取数据,第三版

    Web Scraping With Python: Data Extraction from the Modern Web, 3rd Edition 果编程是魔法,那么网络抓取无疑是一种魔法。通过编写简单的自动化程序,您可以查询 Web 服务器、请求数据并解析数据以提取所需的信息...

    python抓取淘宝天猫网页商品详情Demo.zip

    本项目"python抓取淘宝天猫网页商品详情Demo.zip"是一个利用Python进行网络数据抓取的示例,主要涉及到以下几个核心知识点: 1. **网络请求库**:在Python中,我们通常使用如`requests`库来发送HTTP请求,获取网页...

    基于Python的Web页面抓取与数据提取

    内容概要:本示例展示了使用 Python 和第三方库 Requests 及 Beautiful Soup 进行基本 Web 页面抓取的技术。程序首先通过向指定 URL 发起 GET 请求获取服务器响应的数据,然后检查 HTTP 响应状态码确认操作无误,再...

    Python-ruia基于asyncio的异步Python36网页抓取微框架

    **Python-ruia异步网页抓取框架详解** 在Python的Web爬虫领域,ruia是一个值得关注的微框架。这个框架充分利用了Python 3.6及以上版本中的asyncio库,实现了高效的异步网络请求,从而提高了爬虫的性能和并发能力。...

    用python爬取网页并导出为word文档.docx

    总之,通过Python爬虫抓取网页内容,再利用MongoDB的文档型数据库特性存储数据,可以有效地管理和组织Web应用的数据,同时利用MongoDB的查询功能实现高效的数据检索。这种组合方式在处理结构不固定、数据量较大的Web...

    Python-淘宝天猫商品数据抓取代码和exe都在里面

    【Python-淘宝天猫商品数据抓取代码和exe都在里面】 这个资源主要涵盖了使用Python进行网络爬虫技术,特别是针对淘宝和天猫平台的商品数据抓取。Python作为一种强大的编程语言,因其简洁明了的语法和丰富的库支持,...

    网页抓取例子

    标签“源码”和“工具”暗示我们将讨论与编程相关的代码片段,可能是使用某种特定的网页抓取库或框架,并且可能会涉及到一个实际的工具,如Python的BeautifulSoup或Scrapy框架。 在压缩包文件中,有一个名为"oh.jsp...

    WebSpider蓝蜘蛛网页抓取 v5.1_webspider.rar

    【标题】"WebSpider蓝蜘蛛网页抓取 v5.1_webspider.rar"指的是一个名为WebSpider的网页抓取工具的版本5.1,该工具可能由“蓝蜘蛛”开发团队设计,主要用于从互联网上抓取和分析网页数据。这个版本的软件被封装在一个...

    c# 网页抓取分析 表格图形生成

    本主题聚焦于利用C#进行网页抓取、数据分析以及表格和图形生成,这些都是现代数据驱动应用的重要组成部分。 首先,我们要理解网页抓取的概念。网页抓取,也称为网络爬虫或数据抓取,是指通过自动化程序从互联网上...

    python抓取并保存html页面时乱码问题的解决方法

    在Python中进行网页抓取(Web Scraping)是一项常见的任务,但往往在处理HTML页面时会遇到乱码问题。这通常发生在读取、解析或保存网页内容时,由于编码不匹配导致字符无法正确显示。本篇文章将深入探讨Python抓取并...

    Python Web Scraping Second Edition - Fetching Data From The Web

    《Python Web Scraping 第二版》是一本全面而深入的Web抓取指南,适合想要深入学习这一领域的读者。无论是对Web抓取感兴趣的新手还是希望提升技能的高级用户,都可以从这本书中获得宝贵的指导。通过本书的学习,读者...

Global site tag (gtag.js) - Google Analytics