xml地图|网站地图|网站标签 [设为首页] [加入收藏]
的网络适配器操作,抽象类实现求圆的面积
分类:编程

爬:

     网络的相关设置在项目开发中有较多的应用,有时候需要在项目中对网络信息进行相关设置。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

爬一个网站需要几步?

确定用户的需求

根据需求,寻找网址

读取网页

  1. urllib request

  2. requests

定位并提取数据

  1.  正则
  2. xpath
  3. beautiful soup

存储数据

  1. mysql

  2. redis

  3. 文件存储

 

爬取百度首页:(确定用户需求)

from urllib import request
url = 'http://www.baidu.com'#确定网页
response = request.urlopen(url)#打开网页
html = response.read()#读取网页内容
with open('baidu.html','wb') as f:#将内容存储到本地
    f.write(html)

 

 

 

     现在提供提供几种相关的辅助方法类。

namespace 抽象类实现求圆的面积
{
    public abstract class myClass
    {
        private int r = 0;
        /// <summary>
        /// 圆半径
        /// </summary>
        public int R
        {
            get { return r; }
            set { r = value; }
        }
        /// <summary>
        /// 抽象方法,用来计算圆面积
        /// </summary>
        public abstract double Area();
    }
    public class DriveClass : myClass//继承抽象类
    {
        /// <summary>
        /// 重写抽象类中计算圆面积的方法
        /// </summary>
        public override double Area()
        {
            return Math.PI * R * R;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            DriveClass driveclass = new DriveClass();//实例化派生类
            myClass myclass = driveclass;//使用派生类对象实例化抽象类
            myclass.R = 3;//使用抽象类对象访问抽象类中的半径属性
            Console.WriteLine("圆面积为:" + myclass.Area());//使用抽象类对象调用派生类中的的方法
            Console.ReadKey();
        }
    }
}

cookie和session之间的爱情故事:

(1).IP地址

有人评论说上面的代码是我复制粘贴过来的,确实是。我是因为这上面有注释适合初学者学习。也很好理解。这上面的代码和我写的也差不多,那好吧,有些人不希望需要这样的代码,我就把自己写的发出来吧,哈哈神奇
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

啥是cookie:

当你在浏览网站的时候,WEB 服务器会先送一小小资料放在你的计算机上,Cookie 会帮你在网站上所打的文字或是一些选择,都纪录下来。当下次你再光临同一个网站,WEB 服务器会先看看有没有它上次留下的 Cookie 资料,有的话,就会依据 Cookie,里的内容来判断使用者,送出特定的网页内容给你。

        /// <summary>
        /// IP地址
        /// </summary>
        public string IpAddress
        {
            get
            {
                string ipAddress;
                var address = GetAddress();
                if (address == null)
                {
                    ipAddress = string.Empty;
                }
                else
                {
                    ipAddress = address.Address.ToString();
                }
                return ipAddress;
            }
            set { if (value == null) throw new ArgumentNullException(nameof(value)); }
        }
namespace _005
{
    public abstract class MyClass
    {
        private int myVar;

        public int MyProperty
        {
            get { return myVar; }
            set { myVar = value; }
        }
        public abstract double Area();
    }
    public class cx : MyClass
    {
        public override double Area()
        {
            return Math.PI * MyProperty * MyProperty;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {            
            //MyClass c = new cx();
            cx c = new cx();

            c.MyProperty = 10;
            double d = c.Area();
            Console.WriteLine(d);
            Console.ReadKey();
        }
    }
}

cookie机制:

正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。然而纯粹的客户端脚本如JavaScript或者VBScript也可以生成cookie。而cookie的使用

是由浏览器按照一定的原则在后台自动发送给服务器的。浏览器检查所有存储的cookie,如果某个cookie所声明的作用范围,大于等于将要请求的资源所在的位置,则把该cookie附在请求资源的HTTP请求头上发送给服务器。

 

(2).网关地址

什么是session:

当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。

        /// <summary>
        /// 网关地址
        /// </summary>
        public string Getway
        {
            get
            {              
                string getway;
                if (Getwaryes != null && Getwaryes.Count > 0)
                {

                    getway = Getwaryes[0].Address.ToString() == "0.0.0.0" ? "" : Getwaryes[0].Address.ToString(); 
                }
                else
                {
                    getway =string.Empty;
                }
                return getway;
            }
            set { if (value == null) throw new ArgumentNullException(nameof(value)); }
        }

session机制:

session机制是一种服务器端的机制,服务器使用一种类似于散列表的结构(也可能就是使用散列表)来保存信息。 

当程序需要为某个客户端的请求创建一个session的时候,服务器首先检查这个客户端的请求里是否已包含了一个session标识

  • 称为session id,如果已包含一个session id则说明以前已经为此客户端创建过session,服务器就按照session id把这个session检索出来使用(如果检索不到,可能会新建一个),如果客户端请求不包含session id,则为此客户端创建一个session并且生成一个与此session相关联的session id,session id的值应该是一个既不会重复,又不容易被找到规律以仿造的字符串,这个session id将被在本次响应中返回给客户端保存

 

(3). DHCP服务器地址

cookie和session机制之间的区别与联系

一家咖啡店有喝5杯咖啡免费赠一杯咖啡的优惠,然而一次性消费5杯咖啡的机会微乎其微,这时就需要某种方式来纪录某位顾客的消费数量。想象一下其实也无外乎下面的几种方案: 
1、该店的店员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了。这种做法就是协议本身支持状态。 
2、发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态。 
3、发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息。这种做法就是在服务器端保持状态。

 

 

 

       /// <summary>
        /// DHCP服务器地址
        /// </summary>
        public string DhcpServer
        {
            get
            {
                string dhcpServer;
                if (DhcpServerAddresses != null && DhcpServerAddresses.Count > 0)
                {
                    dhcpServer = DhcpServerAddresses[0].ToString();
                }
                else
                {
                    dhcpServer = string.Empty;
                }
                return dhcpServer;
            }
            set { if (value == null) throw new ArgumentNullException(nameof(value)); }
        }

封装请求网页的两种方法:post 和 get

以百度翻译为例:

 1 from urllib import request,parse
 2 from urllib.error import HTTPError,URLError
 3 
 4 
 5 def get(url,headers = None):
 6     return url_requests(url,headers=headers)
 7 def post(url,form,headers=None):
 8     return url_requests(url,form,headers=headers)
 9 
10 def url_requests(url,form = None,headers = None):
11     user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
12 
13     if headers == None:
14         headers = {
15             'User-Agent':user_agent
16         }
17     html_b = b''
18 
19     try:
20         #post请求
21         if form:
22   #通过requests 传入data来实现post请求
23             #先用parse模块将form转为字符串
24             form_str = parse.urlencode(form)
25             # print(form_str)
26             #再将str转换为bytes
27             form_b = form_str.encode('utf-8')
28             # print(form_b)
29             req = request.Request(url,data=form_b,headers=headers)
30         else:
31             req = request.Request(url,headers=headers)
32         response = request.urlopen(req)
33         html_b = response.read()
34     except HTTPError as e:
35         print(e)
36     except URLError as e:
37         print(e)
38     return html_b
39 
40 if __name__ == '__main__':
41     url = 'http://fanyi.baidu.com/sug'
42     form = {
43         'kw': '哈哈'
44     }
45     html_bytes = post(url, form=form).decode('utf-8')
46     print(html_bytes)
47 
48 
49     # url = 'http://www.baidu.com'
50     # html_byte = get(url).decode('utf-8')
51     # print(html_byte)

 

(4).MAC地址

        /// <summary>
        /// MAC地址
        /// </summary>
        public string MacAddres
        {
            get
            {
                string macAddress;
                if (MacAddress == null)
                    macAddress = string.Empty;
                else if (MacAddress.ToString().Length == 12)
                {
                    macAddress = MacAddress.ToString().Insert(4, "-").Insert(9, "-");
                }
                else
                {
                    macAddress = MacAddress.ToString();
                }
                return macAddress;
            }
            set { if (value == null) throw new ArgumentNullException(nameof(value)); }
        }

(5). 主DNS地址

本文由澳门新葡亰手机版发布于编程,转载请注明出处:的网络适配器操作,抽象类实现求圆的面积

上一篇:实例级别和类级别的static,委托的介绍 下一篇:没有了
猜你喜欢
热门排行
精彩图文