美文网首页
利用python写简单爬虫1

利用python写简单爬虫1

作者: tancll | 来源:发表于2018-08-27 19:38 被阅读0次

    参考资料:北京理工大学 嵩天《python网络爬虫与信息提取》

    1、简单的HTML知识

    1.1、访问网页过程

    我们正常访问网络,一般包含两个过程,第一步我们需要向服务器发送一个请求(request),服务器根据得到的请求给予回应(response)。回应就会包含所需要的数据内容,但是这些数据内容可能按照某种编码方式进行编码。

    1.2、url格式

    http://host[:port][path]
    其中post是合法域名或者一个IP地址,port是服务器能够响应的端口,一般默认缺省为80,path是服务器内部资源路径

    2、requests模块

    2.1、requests的返回值

    requests模块是第三方模块,可以轻松实现获取网页内容。他可以向服务器发送一个request请求,得到服务器的response回应。这两个在Python中都是一种标准的类对象,可以查看对象的一些信息。

    import requests
    r=requests.get('https://www.baidu.com')
    #获取response对象的标准码,200是得到正确的返回信息
    r.status.code
    #从返回的response对象的header中猜测编码方式
    r.encoding
    #从返回的response对象的正文中猜测编码方式
    r.apparent_encoding
    #将返回的response对象的改成为二进制数据
    r.content 
    

    上述是可以获得基本信息的几个命令,其中如果返回的header中没有charset对象(声明编码方式),则默认encoding的返回值是ISO-8859-1。

    2.2、requests的用法

    requests模块一共有7个函数,分别为request、get、head、post、put、patch、delate。
    request是requests模块里的最基础函数,request(method,URL,*kw),其余6个函数都是将method方法改为对应方法之后进行封装完成的函数。
    1、get:获得URL对应外置的资源信息
    2、head:获得URL位置资源的头部信息
    3、post:在对应位置后追加上相应的信息
    4、put:在对应位置上增加一个对应信息,覆盖原始值
    5、patch:在对应位置是更新一个对应信息,就地修改
    6、delate:在对应位置上删除一个信息
    由于服务器安全性的考虑,所以一般用户无法向服务器写入数据,所以post、patch、put等目前暂时使用并不多。

    其中每一个函数还对应的有13个可选参数:
    params,data,json,headers,cookie,auth,files,timeout,proxies,allow-redirects,stream,verify,cert.

    其中params,headers,timeout用的比较多,下面具体介绍相关用法:
    1、params,可以把params的值添加到URL中,从而获取新的URL位置的资源。
    2、headers可以修改请求头,避免服务器拒绝访问数据。
    3、timeout可以设置响应时间。

    3、robots协议

    协议就是单纯协议而已,他会告知爬虫哪些可以抓取,一般遵守比较好,想突破应该也可以,但是不建议这样做。
    可以通过网址后加/robots.txt查看具体协议内容,一般格式如下:

    user-agent:
    Disallow:
    

    4、爬虫的一般写法

    def getHTML(url)
        import requests
        try:
            kv={'user-agent':'Mozilla/5.0'}
            r=requests.get(url,headers=kv,timeout=30)
            r.raise_for_status()
            r.encoding=r.apparent_encoding
            return r.text[:1000]
        except:
            return '产生异常'
    

    这种写法可以避免产生一些常见错误,也能够准确得知是否真的从服务器获取到真是准确的值。

    相关文章

      网友评论

          本文标题:利用python写简单爬虫1

          本文链接:https://www.haomeiwen.com/subject/wluziftx.html