• python学习21--爬虫相关


    网络爬虫1--网络的访问
      网络模块urllib;
        包含四个模块:request,error,
        解码:str=htmlstr.decode("utf-8");
        response(对象)=urllib.request.urlopen(url[,....])
          或者是:req()对象=urllib.request.Request(urlstring);
              response(对象)=urllib.request.urlopen(req).
          即:urlopen的url参数可以为一个字符串或者一个request独像。当为字符串时系统帮助做下面的两句话。
        str(字符串,二进制型)=response.read();
        对于response:
          .geurl(),返回访问的连接地址。
          .info().返回HTTPMESSAGE.
          .getcode().
    网络爬虫2--图片下载
      需要明确的是,图片等多媒体文件也是由二进制组成。
      图片下载,需要先open一个文件,然后写入;
      例如:with open('cat.jpg','wb') as f:
          f.write(response);

    网络爬虫3--在线翻译
      1.url中data参数。
      data=urllib.parse.urlencode(data).encode('utf-8').此utf-8的确定根据具体要访问的网站的源码编码格式进行设置
        python默认的编码格式为unicode
      response=urllib.request.urlopen(url.data)
      html=reponse.read().decode('utf-8').解码
      //json数据格式解析
      jsondict(字典格式)=json.loads(html)
      根据jsondict具体形式获得想要的数据。对于字典中套字典情况,可以用多重[][][]获取。
    网络爬虫4--隐藏
      1.模拟正常浏览器访问
        urlopen中的url实际上是一个Request对象。所以对于自定义head,的两种方式:
        其中需注意的是;heads是一个字典。
        方法一:
          head={}
          head['User-Agent']="string".string复制浏览器显示的。
          req=urllib.request.Request(url,data,head)
        方法二:
          req=urllib.request.Request(url,data)
          req.add_head('User-Agent','string').
      2.提交频率
        方法一:延迟提交时间
          import time
          time.sleep(5).五秒钟
        方法二:使用代理
          1.创建一个代理字典:
            字典格式:{‘类型’:‘代理ip:端口号’}
            proxy=urllib.request.ProxyHandler({})
          2.定制,创建一个opener
            opener=urllib.request.build_opener(proxy)
          3.安装opener
            urllib.request.install_open(opener)
          4.调用opener
            opener.open(url)
        3.隐藏总结:
          opener.addheaders=[{'User-Agent','str'}]
          其余同上
    4.对于单个线程来说,每次只能访问一个连接,所以直接将ip:port做成一个列表,然后随机取出。
        random.choice(列表)

  • 相关阅读:
    5.对象创建型模式-原型PROTOTYPE
    4.对象创建型模式-工厂方法
    3.对象创建型模式-生成器
    一个小应用的dbcp和c3p0配置实例
    利用 java.lang.Runtime.addShutdownHook() 钩子程序,保证java程序安全退出
    初探maven插件机制
    【转载】Git push时重复输入用户名密码的问题
    【转载】 ERROR 1045 (28000): Access denied for user root@localhost (using password: NO)
    【转载】[Java]读取文件方法大全
    【原创】iframe与父页面之间,变量、方法互相调用
  • 原文地址:https://www.cnblogs.com/zjh225901/p/6347608.html
Copyright © 2020-2023  润新知