Python网络爬虫 _XPath解析【6】
问题引入: 前面我们可以通过HTTP Requests请求获取到网站的HTML源代码,但是仍没有得到我们想要的信息。 那怎么办呢,这时我们就需要通过代码解析,从复杂的源码中提取出我们想要的信息。 爬虫解析器 爬虫解析器用作于从复杂的网页代码中解析提取出我们想要的数据。如下图,通过解析我们可以从结构复杂的代码中提取出我们想要的。 爬虫解析器有三大类,分别是正则表达式解析器,Bs解析器和Lxml解析器。其对于的解析方法如下: 正则表达式解析:正则表达式(Regular Expression) 简称 ‘Re’...
Python网络爬虫 _反爬虫【4】
1.由于网络爬虫具有一定的弊端,使用网络爬虫可以悄无声息的从互联网上获取很多资源,包括一些付费,原创和不公开的资源。所以很多大型网站都采取了反爬虫机制,来抵御爬虫的不正当行为。 2.本次介绍了什么是反网络爬虫?,简单的爬虫伪装操作?以及如何应对网络爬虫?。 什么是反网络爬虫? 反爬虫:是指对扫描器中的网络爬虫环节进行反制,它会根据ip访问频率,浏览网页速度和User-Agent等参数来判断是否为网络爬虫,随后通过一些反网络爬虫机制来阻止或妨碍网络爬虫的正常爬取。以此达到网络爬虫恶意获取网站资源的效果。 爬虫伪装1. 什么是爬虫伪装? 爬虫伪装:指的是将爬虫伪装成其他工具, 我们知道请求头中的User-Agent是用于告诉服务器请求是通过什么工具发出的(浏览器,程序,),以及工具对应的版本和类型是什么。 现在大多网站,都会根据User-Agent的参数来判断请求是否为网络爬虫发出的,服务器都希望访问网站的用户,是浏览器发出的请求,而不是爬虫程序。因为爬虫本身就是一种程序,所以就会被反爬虫机制给阻止。 我们只需要将User-Agent的参数更改一下即可。 2....
Python网络爬虫_URL封装【5】
为了达到便于管理的目的,大多网站会对网页的URL地址采取封装措施。 URL封装 在我们访问网站时,通常会看到不一样的网址,就如豆瓣电影的动作片排行榜的网页路径一样。并不是一个很层级形式的路径。 这就是URL封装。 3. 可以发现,URL路径中,从里面的问号开始往后就是封装的内容。 4. 像URL路径这样的,一般以Json的形式存在于请求的Request Payload,内参数用于指定路径。准确来说应该是一种请求体。5. 我们打开检查查看Payload6. 可以发现,Payload参数完全对应着URL的后半部分。 如果我们把这个Payload放入代码中拼接起来会咋样呢因为像这样的参数我们需要将它们写成字典再传入Params可选参数,即可。123456789101112131415import requests # 导入请求库tou = { # 伪装浏览器 "User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML,...
Python网络爬虫_发送HTTP请求【3】
了解HTTP协议相关知识后,我们可以尝试利用Python发送一次HTTP请求。Request是Python的第三方库,用于构建和发送HTTP请求。 安装Requests: 因为是第三方库,所以我们需要用到命令行终端的pip来进行安装。 打开终端,输入 pip install requests 再回车。 当显示如图所示,则表示安装成功了。 #安装成功: 但是如果显示如下,则表示你已经安装过了Requests,不需要再进行安装了。 #安装失败(重复): 打开该库后可以看到里面包含了很多方法模块,而我们待会就会用到里面的status_codes 编写代码:1. 发送HTTP请求 当Requests库安装好之后,就到了编写Python代码的环节了,新建一个py文本。 导入Requests模块。因为爬虫的主要行为是爬取内容,所以我用GET请求方法,获取一个服务器对象。我们拿百度为例。get内写的是要获取的完整的URL。 注意:URL要带上http协议,加密协议带https。 123import requests # 导入模块send =...
Python网络爬虫_HTTP请求与响应【2】
问题引入: 网络爬虫爬取的对象的是Web,我们将它称之为服务端,而爬虫就是本地的客户端。那么要怎样才能使客户端与服务端建立连接并爬取数据呢?这时就需要利用HTTP了 什么是HTTP?1.HTTP:超文本传输协议(Hypertext Transfer Protocol,简称:HTTP)它是一个简单的请求-响应协议,架构运行在TCP之上。这套协议定义了客户端可发送什么样的请求(Request)信号和服务器可返回什么样的响应(Response)。它的作用是规定www服务器与浏览器之间信息传递规范,是二者共同遵守的协议。 2.当用户使用浏览器输入网址访问目标网站时,需要向网站服务器发送HTTP请求,通过发送请求即可从服务器获取页面内容的响应。但实际上服务器只会发送网页代码,我们所看到的页面效果是经过浏览器渲染而成的。 请求类型:1.HTTP请求类型有八种:(GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT)2.但我们常用的只有两种:GET和POST。 GET : 用于获取数据,一般用于搜索排序和筛选之类的操作。 POST...
Python网络爬虫_初识【1】
本次教程是依据个人学习心得与学习记录所做,见证的是我们的成长。 什么是网络爬虫?定义: Web...
Python Socket TCP多线程通信【四】
Python Socket TCP多线程通信一.创建客户端连接一.开启多线程通信 前面说到,因为单线程原因,客户端与服务器无法做到自由对话,则需要用到多线程来处理。我们现在的服务端和客户端最多也就是发送消息和接收消息两种行为,所以我们采用双线程。 或许我们可以新建一个Client.py的客户端和Server.py的服务端,代码照搬第一期的。 首先编写客户端代码。导入内置的线程模块,随后调用模块内置函数threading.Thread( ),因为有两个行为(发送消息和接收消息)所以需要定义并启动双线程。 target:与目标函数对接使得目标函数开启一个线程。 args:向目标函数传入一个参数。这里两个线程同时将socket传入,可以使得socket获得两个线程的处理。 .start:启动线程。 1import threading # 导入线程模块 123# 启动多线程(多个线程共用一个Socket)threading.Thread(target=send_msg,...
Python Socket TCP单线程通信【三】
一. 前言 前一期的简单通信只是草草的说到了它能够达到通信的效果,但它并不是很灵活,因为它没法自定义客户端要发送的内容,并且只能够发送一次消息至服务器。现在完善一下代码。 二.客户端持续发送与接收 我们在发送消息时,不可能是发送一次就完事了,那就相当于是邮箱,而如果要持续向服务器发送消息,我们就需要用到while循环,循环send( )函数,为了达到自定义编写消息内容,可以将input( )的内容赋值到send( )内。 1234while True: # 发送服务器消息 Contest_server = input() Client.send(Contest_server.encode('utf-8')) 当然了,因为是通信,也不可能是只有一方向另一方发送,应该是彼此之间通信,所以,客户端也可以用到recv( )函数用于接收服务器发送的消息。和上面一样,利用循环语句保持同步。 12345678while True: # 发送服务器消息 Contest_server = input() ...
Python Socket TCP简单通信【二】
一.前言 接着上期的介绍,现在我们开始利用现有的代码让客户端对服务器发出请求并完成简单的通信。 二.TCP协议通信流程 在开始这项工作之前,我们认识一下客户端向服务器发送请求并完成连接的一个Socket TCP通信执行流程。 1.‘三次握手’ 当客户端向服务器发送连接请求时,两者之前会发送三次文段,也就是我们俗话说的“三次握手”。 它的具体过程是: 客户端主动向服务器发送连接请求(文段1)。 处于监听状态的服务器被动的接收了来自客户端的请求,并将确认的连接请求返回给客户端(文段2)。 最后客户端也将确认的连接请求返回给了服务器(文段3) 表示客户端完成了与服务器的连接。两端建立连接即可进行通信。 2....
Python Socket TCP初始【一】
Python Socket TCP通信初识一.什么是Socket ? Socket(套接字):一种独立于协议的网络编程接口,它就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进行交互的接口。 我们使用的任何一个网络通信工具都是以Socket为底层编写出来的,如QQ,WeChat,Email,浏览器等。利用Socket我们可以完成很多与网络通信有关的操作。 二.Socket多人聊天 最近突发奇想,想学一下Python的Socket技术,设计一款属于自己的聊天工具。因为最近太闲了,Python的干货也看不下去了,基本上,那些语法基础,函数,类之类的都已经掌握了,现在先想来点新鲜的。2.网上还是有很多关于Python Socket的教程的,我也总结一些,给大家和自己也写一份教程,加深记忆。 三. 利用Python 开发Socket多人聊天1.Socket...