本篇文章将对网页结构进行讲解，若要进行深入学习，可在w3school看最权威的教程。本文还将重点玩一玩浏览器中的F12开发人员工具，开始手动实现爬虫中的“爬取”操作。 额，仍然没有开始写代码。如已了解本篇芝士，阔以直接跳至下一节教程。HTMLHTML全称是超文本标记语言，它算不上是编程语言，但作为语言也有语法，写网页也就是在写HTML，下面是html网页的一般构造： ... ... ... 可以看到，html层次结构清晰分明，以<标签>开始，以</标签>结束，标签还可以添加属性，比如 ，其中有几个重要的标签如下 把所有的html代码包裹起来 html头部，不显示网页内容，一般会引入一些CSS样式 `、给网页起**标题**` 顾名思义，“身体”，里面是html的内容，爬取资源一般也是在这个标签之下。 一般的网页在这个标签下都有很多个 `标签，还有` （JS代码）标签CSScss是样式表，也是一种语言，可以给html里的一些元素预设样式，可以是以文件形式附加于html中，也可以直接将css代码放在html的style标签内部，以下是示例：p { text-align: center; color: black; font-family: arial; }JSJS全称是javascript，它是一种编程语言（图灵完备），可以响应鼠标键盘事件、操作html元素、以及进行各种高级操作，甚至有人用它写了C语言的编译器。和css类似，它也可以以文件形式附加于html中，也可以直接将其代码放在 `内（注意` 标签可以在body、head中的任何位置），以下是示例：var person = { firstName: "Bill", lastName : "Gates", id : 678, fullName : function() { return this.firstName + " " + this.lastName; } };前端与后端前端主要指的就是HTML、CSS、JS，在浏览网页时浏览器所下载的便是html、css、js代码，并将其渲染在浏览器内。 后端主要处理浏览器发来的请求，是服务器运行的程序，一般用Golang、Java、node.js、C++、Python等语言写成。F12开发者工具在浏览器里随便打开一个网页，按键盘上的F12键即可打开F12开发者工具窗口，chromium内核系的浏览器的开发者工具如下图所示： 图中红框内标出的便是编写爬虫常用到的工具，其中 左上角按钮可定位页面中元素对应的html代码 右边一按钮可将网页以手机ua显示 console中可使用js语言进行调试、操作页面元素，也可直接使用js语言在console中编写爬虫 sources中可看到该网页所有的代码、图片等资源，也可在此页面中对js代码建立断点进行调试 network中可对网站进行抓包
网络爬虫的目的通常是获取某个网页的特定信息（例如百度文库的文章、股票数据、天气数据等），这就涉及到网络的连接过程了，本文将极其简单抽象地讲解爬虫涉及到的网络通信国过程，以及一些常用的术语。 额，仍然还没有开始写代码。如已了解本篇芝士，阔以直接跳至下一节教程。从零开始的网络通信假如你想与A取得联系，要zha办嘞？ 如果使用的是近代的电话系统，那么你需要拨至接线生，让接线生接A的线路 这个过程和现代的网络通信非常相似 网络通信中表示ABC使用的是IP地址、MAC地址 本机的IP地址可以在百度里搜索IP查到，如下图： 上网的过程实际上就是不同IP地址间数据传输的过程，比如上百度、上qq，实际上就是与百度、qq的服务器通信的过程服务器其实也是一台电脑，主要是为其他电脑提供服务（登qq、网盘、邮件、搜索等），绝大多数为24小时运行 其内部运行有一个服务器程序，对传入的数据进行处理，并传回响应的数据DNS但是，我们上网的时候，并不需要记百度的IP地址才能上百度啊 而是通过访问网址http://baidu.com网址中包含域名，下文将详细介绍网址的结构，可先粗略将其与域名等价前文说到数据传输都是通过IP地址，所以，网址与IP地址间还存在一个转换的机制 这个转换的机制一般就是通过DNS服务器实现，DNS全称Domain Name System（域名系统）（域名解析） DNS服务器一般有固定的IP地址，例如：8.8.8.8、8.8.4.4、114.114.114.114等 一般联网时便会从路由器得到一个DNS服务器地址，用于对网址中域名的解析 浏览器将域名发送给DNS服务器收到IP地址，再直接与IP地址进行通信 可以看出，DNS服务器与电话系统中的接线生十分相似，都是作为一个中介提供服务URL（网址）网址也叫URL，其结构如下图所示： 协议头网络通信有多种协议，如HTTP、HTTPS（加密的HTTP）、FTP（文件服务器）、NTP（校时服务器）等 网络数据传输需要固定的协议，否则程序无法看懂对方传输的信息域名域名一般是yyy.xxx.com形式的，其中xxx.com称为顶级域名（一级域名），yyy.xxx.com称为二级域名，以此类推... 域名拥有者可以定义它下一级的域名，比如我拥有huanghaozi.cn，我便可以定义www.huanghaozi.cn 、diary.huanghaozi.cn等等（端口）浏览网页时一般不输入端口，不输入时http协议默认为80端口，不同的端口有不同的服务器程序路径服务器电脑里一般有一个wwwroot文件夹作为网址里的/（根目录），服务器的程序会解析传进来的路径请求附加参数服务器的程序也会获取传进来的附加参数，根据参数的不同进行处理，传回不同的数据IP地址与MAC地址IP地址经常上网的人大概知道，网络不是法外之地，当有人发表不良言论时，网络警察通常可以通过其IP地址进行定位扩展：IP地址分为IPv4和IPv6，IPv4地址于2019/11/25正式耗尽，未来互联网发展就靠IPv6了，两者网域，可以说是不同的两个“世界”，目前支持IPv6的路由设备不多，可在http://test-ipv6.com 测试是否能连接到IPv6。MAC地址MAC地址又称物理地址，每一个网卡（或者可以说电脑）都有一个独立的MAC地址，由此可以定位具体的设备GET请求与POST请求上网过程中需要对服务器发出请求，才能进行网页浏览、登录等操作 HTTP、HTTPS协议中主要包含两种请求：GET与POST，可从具体的上网操作中直观理解GET与POST请求的区别GET顾名思义，GET就是获取，向服务器发送GET请求往往就是获取某个网页、获取某段信息的请求 常用在网站浏览POST顾名思义，POST就是发送，POST请求将向服务器发送信息，并获取响应返回的网页等信息 常用在网站登录、搜索Ping测试网络常使用ping命令测延迟等信息，用法是在cmd里输：ping 域名 例如：ping baidu.com
本文主要讲解一些杂七杂八的内容 (命令行、环境变量、注册表、编码、权限) 额，还没有开始写代码。如已了解本篇芝士，阔以直接跳至下一节教程。黑窗口 大家好我是cmd.exe，图里就是我的魂儿（文件） 其实我长下面图二这个亚子，你可以用Win键+R输入cmd按enter打开我： （我的亚子有没有一种很 牛批 的赶脚？） （什么？没有？！） （本宫可是GUI——图形界面 的祖宗！八十年代的电脑整个屏幕都是我的亚子！） （唉，老了，没什么人知道我了） 我告诉你怎么用我吧，我其实可以当一个操作系统来用哦！（毕竟以前的操作系统就长我这样） 你可以用键盘对着我打字，告诉我你要干蛤，但是我只看得懂命令（毕竟我名字就叫cmd - command嘛） 对了，注意到红框框里这个东西了吗： 这个是我的工作路径，额，意思就是我在偷窥这....啊不...是在这个目录里工作，所以命令里可以有这个工作路径下的文件啊、程序啊，我能操控它们！ 对了，改我工作路径用这个命令：cd 要改到的那个路径话说能记住嘛....这个很常用的，试几次就会啦！ 额，你是初学我嘛？！我赶脚你只需要记住我这一个命令就够了！ 因为我能运行很多程序！ 前面说了我其实可以当操作系统用，所以我可以运行程序喔，比如： 这个路径下有这样的一个程序： 要运行它，可以这样给我命令：cd C:\Users\huang\Desktop CEIC爬虫.exe就是酱紫的： 先把路径切到CEIC爬虫.exe所在的路径，然后再直接把它名字报给我，我就把它执行啦！你可以随便试一些.exe程序都是这样的⭐环境变量我叫PATH，我是系统里的一个重要的环境变量，你可以在这里找到我： （假装自己是高级的东西） 按编辑按钮可以看到我里面都有啥： 蛤？看了这么久了，你居然不知道我是干什么的？！ 呵呵，没有我，你还想在cmd里运行python xxx、pip xxx？你在想Pea*** 其实，cmd它就是个庙里的老道，它完全就是因为我这个宝物，才敢那么嚣张！它每次启动不都还得看我一眼！不然它就是个废wu！ 上面的图你也看见了，我里面全是各种各样的路径，看！比如这个！ 你就不好奇这个目录里有啥吗？ 你看cmd就在这个目录里面！ 我可有用了，你想想看，你是不是每天都在用这个沙雕作者的投资日记程序啊？！ 我可以帮你简化这个过程！ 你把那个沙雕作者的程序找一下，我这边是在这里： 把它文件名改成a.exe随便放在一个空的文件夹里，路径最好是全英文的，这个是那个沙雕作者的操作： 然后你把这个图里面这个路径复制一下，然后把我的编辑窗打开： 点新建，然后把刚才的路径粘进去： 一路点确定确定确定，就操作完成了！ 什么，你不知道有啥用？！ 试试按Win+R键，输入a.exe，然后按enter： 看！神奇的一幕发生了！它直接运行了你刚才复制改名的那个程序！ 嘿嘿，我很厉害吧！效率是不是高了很多？其实它在cmd里也能直接敲了，根本不用切工作路径： cmd它忘了告诉你了，.exe后缀的程序可以不用加后缀直接运行的！ 所以在那个Win+R那里也可以直接敲a然后enter就运行了生成的xlsx表格文件在之前赋给我的那个路径下哦！注册表我是没什么存在感的注册表，在Win+R输regedit再按enter我就出来了： 其实我就是一堆变量，只是比较多，程序运行的时候可以在我这里存取一些值，嗷对了，我这里存储了所有程序的安装信息，就酱....编码规则emmm...我不是什么东西，我是一个规则 计算机存的是一堆二进制数，不是字母也不是汉字，所以对应的，有一套对应的编码规则（也叫字符集） 最常见的就是ASCII码，可以表示很常见的一些符号、数字、字母，但是没有汉字 有很多很多语言，为了能表示所有的语言，人类就又把我设计了一遍，哦不，是很多遍，最常用的应该是这几种吧： 这些基本上都带了人类所有的语言文字，当然，拥有十三亿人口的天朝也有自己的编码规则GB、GBK开头的就是（国标、国标扩） 有时候写程序会遇到无法识别汉字，或者出现乱码的情况，这时候就得考虑我啦！ 最好把文件存成UTF-8，解释器也用UTF-8编码，因为支持的语种最多权限电脑里对文件最常见的操作就是读、写 文件的写权限通常只能由一个程序占用，占用的时候其他程序就不能再往这个文件里写东西了 读权限倒是无碍 但是，有些文件会对不同用户有不同的权限 Windows系统里，只需要知道管理员权限比较厉害就行了在有关文件操作的程序中，有时会遇到Permission denied这个错误 这时就需要检查权限、是否有程序正在占用文件...这些问题了
Pycharm是真滴好看d===(￣▽￣*)b ...啊不...是好用！ 下载地址Pycharmhttps://www.jetbrains.com/pycharm/download/#section=windows 版本的区别： Community能白嫖，Professional要钱 Community没有Web开发等功能Q：Web是个什么鬼？ A：Web=网-->网站前后台开发 Q：那你用的什莫版本？ A：Professional，假装自己很专业（但是这篇文章只讲Community） Q：为蛤？ A：你萌大概暂时用不上那些功能叭... Q：（白嫖是什莫？） A：（就是要钱的反义词...） Q：（作者的水平？） A：（非常辣鸡）Anacondahttps://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/?C=M&O=D 这个是清华tuna站提供的下载源，访问比较快，不是官网但提供的安装包相同Q：清华tuna是什莫？ A：清华大学开源软件镜像站 Q：说了等于没说.... Q：辣这个AnaConda是什莫？莫不是condom？你搞hs？ A： A：AnaConda就是个集成了很多模块的Python A：（话说作者你都在想什么hs东西啊喂，这不应该是正常的QA嘛？！）安装过程Pycharm简单的说：下一步--下一步--下一步--安装--完成 哼！明明就是这样...不信你试试... 好叭... 那就是：Next--Next--Next--Install--Finish 且慢！这个页面最好勾上左边这两个勾： Anaconda简单的说：Next--I agree--Next--Install--Finish （这次才不会错了嘞）记得安装完成后要配置环境变量： （我能一口气背下来：此电脑右键属性左边高级系统设置高级选项卡右下角环境变量） （但是直接用Win10的娜妹子就行！） 然后编辑PATH 新建这两个环境变量 就是anaconda的安装文件夹，和这个目录下的Scripts这两个文件夹然后确定确定确定就OK了Q：环境变量是什莫？ A：如果没有环境变量，辣你在cmd里敲命令的时候，只能调用工作目录下的程序，环境变量PATH里面有很多路径，顾名思义，环境就是敲命令时能调用的工作目录以外的程序........ A：就比方说cmd是一个世界，环境变量就相当于定义了这个世界的空气、水、温度这些东西...命令能直接取用...A：说了也听不懂的亚子，得自行体会叭... （CMD就是个黑窗口，能敲命令，按win+R键，输入cmd，再按enter打开） 配置过程汉化Pycharm英语真是一门辣鸡的拼音语言，看着比中文慢多了，严重影响工作效率 为了提高工作效率（绝对不是看不懂），汉化很有必要我都能想到的事情，别人肯定早就想到并做完了 于是我打开浏览器一搜，果然！出现了！汉化包！ 转自平方X原创汉化，直接把二次分享链接晾这了：链接：https://pan.baidu.com/s/1RIe6IszmiNMVdeQcSc05Fw 提取码：a5jm然后把这个jar放到安装目录里的lib目录下就OK了 什么？你找不到安装目录？快使用Win10的娜妹子！ 粘进去就完事啦什么？你不是Win10？你没有娜妹子？ 自己找！初次打开Pycharm打开Pycharm，第一次打开出现的是这个 确定就好，然后同意协议并继续： 然后选主题，下一步 然后start using！！！ 然后就可以开始创建项目了： 配置解释器InterpreterQ：解释器是什么？ A：把Python转成C、Java什么的才能运行，相当于Runtime Q：说人话！ A：就是要跑你的代码（脚本（外挂）），要用这个才能跑，就是一个叫python.exe的文件 A：把它想成神器就行了在上一步点完创建项目之后，就会出现下面的窗口，点开上面那个红框就开始配置anaconda啦！首先选择Existing Interpreter，点击右边那个点点点 然后把左边选择System Interpreter，找到之前安装anaconda的目录下的python.exe点确定，卡一会儿，就能点Create啦！打开就是这样的，可能要扫一遍包吧： （个人赶脚这个每日提示没什莫卵用） 界面就是这样的啦 Helloworld先随便建个代码文件： 直接叫helloworld吧： 按enter创建完毕了，敲点代码进去： 字很小很蓝瘦，点开菜单里的文件-->设置，左边一栏里点开编辑器-->Font 我喜欢这样设置： 字比较带，听说很多看不懂的数学公式、代码放大就能看懂！ 反正我是信了...下面是带字体效果： 运行一下： 出现了！Hello World! 换tuna的pypi源我们经常会用pip命令安装很多package，但是官方源在国外，贼慢，所以为了效率，换成国内源很有必要个人比较喜欢tuna 参考tuna的帮助在cmd里敲就行： https://mirror.tuna.tsinghua.edu.cn/help/pypi/