首页 文章 精选 留言 我的

精选列表

搜索[低代码开发平台],共10000篇文章
优秀的个人博客,低调大师

【Python】从0开始写爬虫——开发环境

python小白,稍微看了点语法而已, 连字典的切片都永不顺的那种。本身是写java的,其实java也写得菜, 每天下了班不是太想写java。所以下班总是乱搞,什么都涉猎一点,也没什么太实际的收获。现在打算慢慢写个python爬虫玩 1. python环境搭建。我在windows上也是搭了python环境的,很久了。但是这个我在windows用pip安装的第三方库用起来总是报错。所以我一般都不用。我时用pycharm的python环境的。 在pycharm上安装需要的包,新建项目后,在左上角 File ->> Settings,然后弹出如下界面。点击红色箭头处添加,然后搜索就行了。不推荐自己在windows装,没必要浪费时间搞windows的环境 2. linux上,我租的阿里服务器,装的是CentOS7, linux上安装python3我就不介绍了。主要提醒一下CentOS是自带python2.7的,而且有一些功能是要用的这个版本的python,比如yum, 所以不要轻易卸载。 我安装的python3。在控制台输入 python2 就进入python2.7的shell, 输入python3就进入python3的shell。如下 [root@izwz94jyld0skyrwc1772ez ~]# python2 Python 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> >>> print 'hello, world' hello, world >>> [1]+ Stopped python2 [root@izwz94jyld0skyrwc1772ez ~]# python3 Python 3.6.2 (default, Jul 8 2018, 11:17:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> >>> print('Hello, World') Hello, World >>> 但是在用 pip 安装第三方库的时候,只有python2能用。比如我安装个pandas。 [root@izwz94jyld0skyrwc1772ez ~]# pip install pandas Looking in indexes: http://mirrors.aliyun.com/pypi/simple/ Collecting pandas Downloading http://mirrors.aliyun.com/pypi/packages/65/b2/8c3a7fc10f581d0ef196e54ba13248e09b25012ab3b213cda83f8f5e7678/pandas-0.23.3-cp27-cp27mu-manylinux1_x86_64.whl (8.9MB) 100% |████████████████████████████████| 8.9MB 75.9MB/s Collecting pytz>=2011k (from pandas) Downloading http://mirrors.aliyun.com/pypi/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl (510kB) 100% |████████████████████████████████| 512kB 81.3MB/s Collecting numpy>=1.9.0 (from pandas) Downloading http://mirrors.aliyun.com/pypi/packages/85/51/ba4564ded90e093dbb6adfc3e21f99ae953d9ad56477e1b0d4a93bacf7d3/numpy-1.15.0-cp27-cp27mu-manylinux1_x86_64.whl (13.8MB) 100% |████████████████████████████████| 13.8MB 75.1MB/s Collecting python-dateutil>=2.5.0 (from pandas) Downloading http://mirrors.aliyun.com/pypi/packages/cf/f5/af2b09c957ace60dcfac112b669c45c8c97e32f94aa8b56da4c6d1682825/python_dateutil-2.7.3-py2.py3-none-any.whl (211kB) 100% |████████████████████████████████| 215kB 85.7MB/s Requirement already satisfied: six>=1.5 in /usr/lib/python2.7/site-packages (from python-dateutil>=2.5.0->pandas) (1.11.0) Installing collected packages: pytz, numpy, python-dateutil, pandas Successfully installed numpy-1.15.0 pandas-0.23.3 python-dateutil-2.7.3 pytz-2018.5 然后我分别在python2和python3去使用它, 会发现python2可以用而python3不能用 [root@izwz94jyld0skyrwc1772ez ~]# python2 Python 2.7.5 (default, Jul 13 2018, 13:06:57) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from pandas import DataFrame /usr/lib64/python2.7/site-packages/pandas/_libs/__init__.py:4: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from .tslib import iNaT, NaT, Timestamp, Timedelta, OutOfBoundsDatetime /usr/lib64/python2.7/site-packages/pandas/__init__.py:26: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs import (hashtable as _hashtable, /usr/lib64/python2.7/site-packages/pandas/core/dtypes/common.py:6: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs import algos, lib /usr/lib64/python2.7/site-packages/pandas/core/util/hashing.py:7: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs import hashing, tslib /usr/lib64/python2.7/site-packages/pandas/core/indexes/base.py:7: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs import (lib, index as libindex, tslib as libts, /usr/lib64/python2.7/site-packages/pandas/tseries/offsets.py:21: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 import pandas._libs.tslibs.offsets as liboffsets /usr/lib64/python2.7/site-packages/pandas/core/ops.py:16: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs import algos as libalgos, ops as libops /usr/lib64/python2.7/site-packages/pandas/core/indexes/interval.py:32: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs.interval import ( /usr/lib64/python2.7/site-packages/pandas/core/internals.py:14: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs import internals as libinternals /usr/lib64/python2.7/site-packages/pandas/core/sparse/array.py:33: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 import pandas._libs.sparse as splib /usr/lib64/python2.7/site-packages/pandas/core/window.py:36: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 import pandas._libs.window as _window /usr/lib64/python2.7/site-packages/pandas/core/groupby/groupby.py:68: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs import (lib, reduction, /usr/lib64/python2.7/site-packages/pandas/core/reshape/reshape.py:30: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs import algos as _algos, reshape as _reshape /usr/lib64/python2.7/site-packages/pandas/io/parsers.py:45: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 import pandas._libs.parsers as parsers /usr/lib64/python2.7/site-packages/pandas/io/pytables.py:50: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 from pandas._libs import algos, lib, writers as libwriters >>> data={} >>> data['a'] = [1,2,3,4,5] >>> data['b'] = [6,7,8,9,0] >>> data['c'] = [11,12,13,14,15] >>> df = DataFrame(data) >>> print df a b c 0 1 6 11 1 2 7 12 2 3 8 13 3 4 9 14 4 5 0 15 >>> [8]+ Stopped python2 [root@izwz94jyld0skyrwc1772ez ~]# [root@izwz94jyld0skyrwc1772ez ~]# [root@izwz94jyld0skyrwc1772ez ~]# [root@izwz94jyld0skyrwc1772ez ~]# [root@izwz94jyld0skyrwc1772ez ~]# python3 Python 3.6.2 (default, Jul 8 2018, 11:17:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from pandas import DataFrame Traceback (most recent call last): File "<stdin>", line 1, in <module> ModuleNotFoundError: No module named 'pandas' >>> 因为pip默认用的是python2的。 所以如果我们要给python3 安装第三方库。不能直接用pip。应该用pip3. [root@izwz94jyld0skyrwc1772ez ~]# [root@izwz94jyld0skyrwc1772ez ~]# pip3 install pandas Looking in indexes: http://mirrors.aliyun.com/pypi/simple/ Collecting pandas Downloading http://mirrors.aliyun.com/pypi/packages/f4/cb/a801eaf624e36fffaa6cf1f4597a1e4b0742c200ed928e689c58fb3cb811/pandas-0.23.3-cp36-cp36m-manylinux1_x86_64.whl (8.9MB) 100% |████████████████████████████████| 8.9MB 73.6MB/s Collecting pytz>=2011k (from pandas) Downloading http://mirrors.aliyun.com/pypi/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl (510kB) 100% |████████████████████████████████| 512kB 68.8MB/s Collecting numpy>=1.9.0 (from pandas) Downloading http://mirrors.aliyun.com/pypi/packages/88/29/f4c845648ed23264e986cdc5fbab5f8eace1be5e62144ef69ccc7189461d/numpy-1.15.0-cp36-cp36m-manylinux1_x86_64.whl (13.9MB) 100% |████████████████████████████████| 13.9MB 75.1MB/s Collecting python-dateutil>=2.5.0 (from pandas) Downloading http://mirrors.aliyun.com/pypi/packages/cf/f5/af2b09c957ace60dcfac112b669c45c8c97e32f94aa8b56da4c6d1682825/python_dateutil-2.7.3-py2.py3-none-any.whl (211kB) 100% |████████████████████████████████| 215kB 81.7MB/s Requirement already satisfied: six>=1.5 in /usr/local/python3/lib/python3.6/site-packages (from python-dateutil>=2.5.0->pandas) (1.11.0) Installing collected packages: pytz, numpy, python-dateutil, pandas Successfully installed numpy-1.15.0 pandas-0.23.3 python-dateutil-2.7.3 pytz-2018.5 You are using pip version 10.0.1, however version 18.0 is available. You should consider upgrading via the 'pip install --upgrade pip' command. [root@izwz94jyld0skyrwc1772ez ~]# python3 Python 3.6.2 (default, Jul 8 2018, 11:17:50) [GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from pandas import DataFrame /usr/local/python3/lib/python3.6/importlib/_bootstrap.py:205: RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 88 return f(*args, **kwds) >>> data={} >>> data['b'] = [6,7,8,9,0] >>> data['b'] = [6,7,8,9,0] >>> data['c'] = [11,12,13,14,15] >>> df = DataFrame(data) >>> print(df) b c 0 6 11 1 7 12 2 8 13 3 9 14 4 0 15 >>> 这样就ok了。 3. 我先安装了几个包 bs4 用BeautifulSoup来解析html PyMySQL用来把数据存到数据库 4. 目前的打算是 1. 用 urllib 来获取html数据 2. 用 BeautifulSoup来解析html爬取要得信息。 3. 用PyMySQL来存储数据 4. 单页面都测试成功了考虑用线程池。放到服务器上跑个一天两天? 5. 然后会做一点数据分析。。。emmmm这都是后话了

优秀的个人博客,低调大师

阿里巴巴开发规约之OOP规约

1.避免用一个类的对象的引用访问此类的静态变量或静态方法,无谓增加编译器解析成本,直接用类名来访问, 2.在使用参数时参数的对象避免是Object 3.Object的equals方法容易抛出空指针,应使用常量或者确定的量来调用 如“test”.equals(object); 4.相同类型的包装类对象之间的值比较必须用equals方法进行,用 == 有大坑, 5.POJO:普通的Java对象,把有getter/setter方法的Java对象成为POJO,通常这个是和数据库表联系起来的, 规定:所有的POJO类属性必须使用包装数据类型, RPC方法的返回值和参数必须使用包装类型,RPC即Dubbo , Spring Cloud 所有的局部变量使用基本数据类型 6.构造方法中禁止加入任何的业务逻辑,如果有就加入到init方法中 7.POJO必须写toString方法 8.String的split最后一个分隔符需做有无内容的检查 9.不要在this.成员变量名 = 参数名使用业务逻辑,增加排查问题的难度, 10.循环类内字符串的连接方法用StringBuilder的append方法进行扩展 11.慎用Object的clone的方法拷贝对象,一般都是浅拷贝,要想深拷贝要重写这个clone的方法 12.如果不允许外部直接通过new来创建对象,那么构造方法必须是private

优秀的个人博客,低调大师

Android开发需要了解的网络协议

TCP/IP 分层网络 1. 应用层 应用层决定了向用户提供应用服务时通信的活动。 TCP/IP 协议族内预存了各类通用的应用服务。例如:HTTP、SSH、FTP 等。 2. 传输层 应用层的下一层就是传输层,提供处于网络连接中的两台计算机之间的数据传输 常见的传输层协议有 TCP、UDP 等。 3. 网络层 网络层又称网络互连层。 网络层用来处理在网络上流动的数据包,数据包是网络传输的最小数据单位。该层规定了通过怎样的路径到达对方的计算机,并把数据包传送给对方。 网络层的作用就是在众多选项内选择一条合适的传输路径。 4. 链路层 链路层又称数据链路层,网络接口层 用来处理连接网络的硬件部分,控制操作系统、硬件的设备驱动。 我们能够看到的交换机、网线、光纤等也属于物理层 TCP 是什么 TCP 的全称是传输控制协议(Transmission Control Protocol)位于传输层,它是一种有连接的协议,提供可靠的字节流服务[注1]。而可靠的传输服务是指,能够将数据准确可靠的传递给对方。数据为何能准确无误的送达目标处,就是因为 TCP 协议采用了三次握手策略,当然除了三次握手,TCP 协议还有其他手段来保证通信的可靠性 TCP 三次握手 发送端首先发送一个带 SYN 标志的数据包给对方 接收端收到标有 SYN 的数据包后回传一个带有 SYN/ACK 标志的数据包表示确认信息 发送端在发送一个带有 ACK 标志的数据包给接收端表示握手成功 如果握手成功后连接断开,再次连接还需要重新握手 TCP 四次挥手 由于TCP连接时全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭。 第一次挥手: Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。 第二次挥手: Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。 第三次挥手: Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。 第四次挥手: Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。 时序图 UDP 是什么 UDP 的全称是用户数据报协议(User Datagram Protocol)同样位于传输层,它是一种无连接的协议,提供面向事务的简单不可靠信息传送服务 UDP 报头 TCP 与 UDP 的差异 TCP 是有连接的而 UDP 是无连接的 TCP 是可靠的连接而 UDP 是不可靠的 UDP 不需要各种可靠性策略所以相比 TCP 性能要高不少 因为 UDP 的连接步骤少,报头内容少所以相比 TCP 更加的省流量 TCP 只能一对一连接传递消息而 UDP 可以一对一、一对多、多对一和多对多 参考 参考资料 https://blog.csdn.net/huangxy10/article/details/8012180 抓包软件 Wireshark 注1:字节流服务是指,为了方便传输,将大块数据分割成报文段为单位的数据包进行管理的服务

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册