美文网首页
Python爬虫入门-1.Request库入门

Python爬虫入门-1.Request库入门

作者: 波波在敲代码 | 来源:发表于2019-06-01 16:32 被阅读0次

    《Python爬虫入门》系列为学习北理工昊天老师课程所做的笔记。

    1.Request及其安装

    cmd命令行下通过pip3命令安装Request,及相关的几个库:

    pip3 install request
    

    2.两个简单的例子

    2.1 爬取百度首页

    ### 百度首页的爬取
    import requests # 引入requests库
    vText = requests.get("http://www.baidu.com") # 对指定网址进行爬取,并将结果返回
    print("状态码为:%i" % (vText.status_code)) # 输出访问的状态码
    vText.encoding = "UTF-8" # 指定编码类型为UTF-8格式
    print("爬取到的内容的前400个字符为:" ,vText.text[:400]) # 打印返回内容的前400个字符
    
    状态码为:200
    爬取到的内容的前400个字符为: <!DOCTYPE html>
    <!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer><link rel=stylesheet type=text/css href=http://s1.bdstatic.com/r/www/cache/bdorz/baidu.min.css><title>百度一下,你就知道</title></head> <body link=#0000cc> <div id=wrapper> <div id=head> <div class=head_wrapper> <div 
    

    状态码为200标识访问成功。

    状态码为200标识访问成功。

    requests库的get方法是其包含的7种方法(函数)中,最基本的一个,通过request.get()就可以获得指定网站的html代码。

    2.2 爬取京东商品

    ### 爬取一种京东商品页面
    import requests
    vUrl = "https://item.jd.com/2138009.html"
    vText = requests.get(vUrl)
    vText.raise_for_status() # 如果返回的状态码不为200,则raise_for_status()会产生异常
    vText.encoding = vText.apparent_encoding # 有程序自动分辨是哪种编码格式
    print(vText.text[:500])
    
    <!DOCTYPE HTML>
    <html lang="zh-CN">
    <head>
        <!-- shouji -->
        <meta http-equiv="Content-Type" content="text/html; charset=gbk" />
        <title>【优越者Y-3098ABK】优越者(UNITEK)usb分线器3.0 带电源接口3.0高速4口HUB扩展0.3米 笔记本电脑一拖四多接口HUB集线器Y-3098ABK【行情 报价 价格 评测】-京东</title>
        <meta name="keywords" content="优越者Y-3098ABK,优越者Y-3098ABK,优越者Y-3098ABK报价,优越者Y-3098ABK报价"/>
        <meta name="description" content="【优越者Y-3098ABK】京东JD.COM提供优越者Y-3098ABK正品行货,并包括优越者Y-3098ABK网购指南,以及优越者Y-3098ABK图片、Y-3098ABK参数、Y-3098ABK评论、Y-3098ABK心得、
    

    3.报头

    ### 爬取一种京东商品页面
    import requests
    vUrl = "https://item.jd.com/2138009.html"
    vText = requests.get(vUrl)
    vText.request.headers
    
    {'User-Agent': 'python-requests/2.22.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive'}
    

    通过request.headers命令可以查看报头内容中requests库发送给网站的身份信息,例如上例中显示这个访问请求是由python-requests产生的。由于有些网站并不喜欢被各种爬虫进行爬取,有可能会对爬虫进行限制。所以需要在报头中将身份伪装成浏览器。

    ### 一个亚马逊商品页面的爬取
    import requests,re
    vUrl = "https://www.amazon.cn/dp/B01K78MSHW"
    vKv = {"user-agent": "Mozilla/5.0"} # 利用字典格式,通过键值对构建虚假身份
    vText = requests.get(vUrl, headers = vKv) # 添加身份信息的参数
    vText.raise_for_status()
    

    由于亚马逊文件返回的结果特别长,所以暂不演示了。

    4.异常处理

    实际应用中,会由于网速或者是其他的各种原因而产生错误,一个好的爬虫框架应该具备完善的错误提示,下述代码通过try方法有效的告知用户程序是否正常运行:

    ### 通用网页爬取框架
    import requests
    def fGetHtmlText(vUrl):
        try:
            vKv = {"user-agent": "Mozilla/5.0"}
            vText = requests.get(url, headers = vKv, timeout = 30)
            vText.raise_for_status() # 如果状态码不是200则引发报错
            r.encoding = r.apparent_encoding # 自动判断网页编码格式
            return vText.text
        except:
            return "爬虫程序产生异常"
    if __name__ == "__main__":
        vUrl = "http://1x1y.top/na"
        vText = fGetHtmlText(vUrl)
        print(vText[:1000])
    
    <!DOCTYPE html>
    <html lang="zh">
    <head>
      <link rel="shortcut icon" href=" /favicon.ico" /> 
      <meta charset="UTF-8">
      <meta name="keywords" content="导航">
      <meta name="description" content="这是专用于自己的导航站,收录了自己比较常登陆的网站。">
      <title>一❤一意·自用导航</title>
      <title>Hello World - </title>
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <link rel="stylesheet" href="//fonts.googleapis.com/css?family=Arimo:400,700,400italic">
      <link rel="stylesheet" href="http://1x1y.top/na/usr/themes/WebStack/css/fonts/linecons/css/linecons.css">
      <link rel="stylesheet" href="http://1x1y.top/na/usr/themes/WebStack/css/font-awesome.min.css">
      <link rel="stylesheet" href="http://1x1y.top/na/usr/themes/WebStack/css/bootstrap.css">
      <link rel="stylesheet" href="http://1x1y.top/na/usr/themes/WebStack/css/xenon-core.css">
      <link rel="stylesheet" href="http://1x1y.top/na/usr/themes/WebStack/css/xenon-components.css">
      <link rel="stylesheet" href="http://1x1y.top/na/usr/t

    相关文章

      网友评论

          本文标题:Python爬虫入门-1.Request库入门

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