• 【Python网络爬虫二】使用urllib2抓去网页内容


    在Python中通过导入urllib2组件,来完成网页的抓取工作。在python3.x中被改为urllib.request。

    爬取具体的过程类似于使用程序模拟IE浏览器的功能,把URL作为HTTP请求的内容发送到服务器端, 然后读取服务器端的响应资源。

    实现过程:

    1 import urllib2
    2 
    3 response=urllib2.urlopen('http://gs.ccnu.edu.cn/')
    4 html=response.read()
    5 print html

    将返回的html信息打印出来,这和在网站上右键,查看源码看到的内容是一样的。浏览器通过这些源码,将要现实的内容渲染出来。

    除了"http:",URL同样可以使用"ftp:","file:"等等来替代。

    HTTP是基于请求和应答机制的:

    客户端提出请求,服务端提供应答。

    同样urllib2,可以通过模拟一个请求,然后将这个请求作为参数传入urlopen中,在读取返回的内容。

    1 import urllib2
    2 
    3 req=urllib2.Request('http://gs.ccnu.edu.cn/')
    4 response2=urllib2.urlopen(req)
    5 page=response2.read()
    6 print page

    模拟ftp请求:

    1 req=urllib2.Request("ftp://example.com/")

    在进行http请求的时候可以做两件事

    1.发送data表单数据

    有时候我们在爬取网页的时候,需要提交一个表单,模拟登陆或者注册的操作。

    通常http中通过post操作完成, 而在request时,提交的data表单需要讲过urllib中encode编码成标准的方式。

     1 import urllib  
     2 import urllib2  
     3 
     4 url = 'http://www.someserver.com/register.cgi'  
     5   
     6 values = {"input1": "SeeKHit", 
     7           "input2": "123456", 
     8           "__EVENTTARGET": "btnLogin", 
     9           "__EVENTARGUMENT": "" }  
    10 
    11 data = urllib.urlencode(values) # 编码工作
    12 req = urllib2.Request(url, data)  # 发送请求同时传data表单
    13 response = urllib2.urlopen(req)  #接受反馈的信息
    14 the_page = response.read()  #读取反馈的内容

    2.设置Header到http请求

    有时候建立http连接后,服务器会根据浏览器传过去的User-Agent头来,返回不同的内容给客户端。已达到不同的显示效果。(如安卓上的uc浏览器,就有一个设置设备标识的,如手机版,电脑版,ipad)

    Python支持可以自定义的发送过去的User-Agent头,将自定义的字典作为User-Agent头作为一个参数,创建一个请求。

    以下代码,讲User-Agent伪装成IE浏览器来,进行访问。

    1. 应用程序版本“Mozilla/4.0”表示:你使用Maxthon 2.0 浏览器使用 IE8 内核;
    2. 版本标识“MSIE 8.0”
    3. 平台自身的识别信息“Windows NT ”表示“操作系统为 Windows”

     1 url = 'http://www.someserver.com/register.cgi'
     2 user_agent = 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT)'
     3 headers = { 'User-Agent' : user_agent }
     4 values = {"input1": "SeeKHit",
     5           "input2": "123456",
     6           "__EVENTTARGET": "btnLogin",
     7           "__EVENTARGUMENT": "" }
     8 
     9 data = urllib.urlencode(values) # 编码工作
    10 req = urllib2.Request(url, data, headers)  # 发送请求,传data表单,模拟User-
    11 response = urllib2.urlopen(req)  #接受反馈的信息
    12 the_page = response.read()  #读取反馈的内容
  • 相关阅读:
    我在互联网的第一年
    变速变调原理与方法总结
    TIMIT语音库
    基于HTK语音工具包进行孤立词识别的使用教程
    Praat 音频分析 人工标注
    HTK源码学习总结
    HTK搭建语音拨号系统实验材料下载
    应用HTK搭建语音拨号系统4: 识别器评估
    应用HTK搭建语音拨号系统3:创建绑定状态的三音素HMM模型
    应用HTK搭建语音拨号系统2:创建单音素HMM模型
  • 原文地址:https://www.cnblogs.com/SeekHit/p/6091093.html
Copyright © 2020-2023  润新知