zoukankan      html  css  js  c++  java
  • python爬虫(1)

    了解python的基本语法后就可以开始了,边学边巩固。

    学爬虫那什么是网络爬虫,以下是百度百科的定义:网络爬虫(又被称为网页蜘蛛,网络机器人,

    FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。

    另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫

     

    找资源的源头应该是URL,这是我个人的理解:

    URL的格式由三部分组成:
    ①第一部分是协议(或称为服务方式)。
    ②第二部分是存有该资源的主机IP地址(有时也包括端口号)。
    ③第三部分是主机资源的具体地址,如目录和文件名等。

    执行的版本是python2.7, 开发工具是JetBrains PyCharm 5.0

    ==========================================================
    import urllib2

    response = urllib2.urlopen("http://www.baidu.com")
    print response.read()

    ==========================================================
    输出是一大堆html,css,js代码,后面要研究的是也是这些材料,具体说是解析器要做的。
    网络爬虫的组成
    在网络爬虫的系统框架中,主过程由控制器,解析器,资源库三部分组成。控制器的主要工作是负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进行页面的处理,主要是将一些JS脚本标签、CSS代码内容、空格字符、HTML标签等内容处理掉,爬虫的基本工作是由解析器完成。资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索引。
    控制器
    控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL链接,分配一线程,然后启动线程调用爬虫爬取网页的过程。
    解析器
    解析器是负责网络爬虫的主要部分,其负责的工作主要有:下载网页的功能,对网页的文本进行处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。
    资源库
    主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有:Oracle、Sql Server等。
     
     

    HTTP是基于请求和应答机制的--客户端提出请求,服务端提供应答。

    urllib2用一个Request对象来映射你提出的HTTP请求,在它最简单的使用形式中你将用你要请求的

    地址创建一个Request对象,通过调用urlopen并传入Request对象,将返回一个相关请求response对象,

    这个应答对象如同一个文件对象,所以你可以在Response中调用.read()。

    ==========================================================
    import urllib2

    req = urllib2.Request("http://www.baidu.com")
    response = urllib2.urlopen(req)
    print response.read()
    ==========================================================
    以上代码更能体现http的过程。

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

    1.GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,

    参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。

    如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII。POST把提交的数据则放置在是HTTP包的包体中。

    
    

    2."GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据,这个限制是特定的浏览器及服务器对它的限制。

    3.POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。
    上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义,比如:通过GET提交数据,
    用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,
    那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击。
  • 相关阅读:
    「国庆训练」Bomb(HDU-5934)
    「题目代码」P1049~P1053(Java)
    「日常训练」Case of Matryoshkas(Codeforces Round #310 Div. 2 C)
    「日常训练」ZgukistringZ(Codeforces Round #307 Div. 2 B)
    「专题训练」Air Raid(HDU-1151)
    「专题训练」Machine Schedule(HDU-1150)
    「日常训练」Girls and Boys(HDU-1068)
    「Python」conda与pip升级所有的包
    「赛后补题」Meeting(HDU-5521)
    通过button将form表单的数据提交到action层
  • 原文地址:https://www.cnblogs.com/herosoft/p/4955777.html
Copyright © 2011-2022 走看看