zoukankan      html  css  js  c++  java
  • python爬虫基本原理及入门

    爬虫:请求目标网站并获得数据的程序

    爬虫的基本步骤:

    使用python自带的urllib库请求百度:

    import urllib.request
    
    response = urllib.request.urlopen('http://www.baidu.com')
    print(type(response))
    
    #打印结果
    <class 'http.client.HTTPResponse'>

    可以从类型上看出来,response是一个HTTP响应

     

     

    请求:

    请求的方式以GET和POST最为常用,一般的GET方法将请求参数放在URL中。如在百度中搜索一个关键词,这就形成了以GET在URL中更改参数的方法。

    而POST将参数放在表单内进行请求。如请求登陆百度,需要向百度服务器发送你的账号密码这些东西。

     

    请求头是一个很重要的请求内容,在一般的浏览器请求中,网站会返回一个你的浏览器信息,如果在代码不伪装程浏览器的情况下,你的IP地址会迅速的被网站封掉,每个爬虫库的伪装方式都是不同的,如urllib库

    import urllib.request
    
    heads = {}
        heads['User-Agent'] = 'Mozilla/5.0 ' 
                              '(Macintosh; U; Intel Mac OS X 10_6_8; en-us) AppleWebKit/534.50 ' 
                              '(KHTML, like Gecko) Version/5.1 Safari/534.50'
    
    
    req = urllib.request.Request(url=url, data=data, method='POST', headers=heads)
    
    response = urllib.request.urlopen(req)
    print(response.getheaders()) #getheaders()方法将会返回给你一些请求信息,如时间,服务器信息等,包含user-agent

     

     响应:

    响应就是请求之后浏览器所呈现的东西,最重要的就是响应体,包含了网页的源文件

    在代码的情况下查看响应状态:

    import urllib.request
    
    response = urllib.requset.urlopen('http://www.baidu.com')
    
    print(response.getcode())
    
    #返回200表示成功

     

    解析方式:

    当想要获得网页中某些元素应该怎样去解析?

    解析的方式多种多样,目前还只是使用正则来做解析,听说xpath是最简单解析方式,不过我觉得每个库还是要使用一下试试的,看看哪个更适合你。

    为什么有的网页请求源码和在浏览器中查看到的不一样?

    这是因为动态网站使用了JS渲染,元素都是经过js动态加载出来的,所以想要获得源码还要去模拟浏览器的行为,像selenium驱动browser,PhantomJS等工具。

  • 相关阅读:
    wpf如何将图片设置为窗体的背景
    C#用Oracle.DataAccess中连接Oracle要注意版本问题!
    C#格式化数值结果表
    将字符串的16进制转换成byte[]
    Java各个类型与byte[]的转换
    记录下 Jquery的使用
    页面div与顶部有缝隙问题
    Js 转换Json返回的时间格式(转)
    Div垂直居中水平居中
    C# 日期格式大全
  • 原文地址:https://www.cnblogs.com/mzc1997/p/7799090.html
Copyright © 2011-2022 走看看