• 博客(1676)
  • 资源 (2)
  • 收藏
  • 关注

原创 Python爬虫编程思想(139):多线程和多进程爬虫--线程锁

线程锁的目的是将一段代码锁住,一旦获得了锁权限,除非释放线程锁,否则其他任何代码都无法再次获得锁权限。

2022-03-31 19:28:30 2129

原创 Python爬虫编程思想(138):多线程和多进程爬虫--从Thread类继承

为了更好地对与线程有关的代码进行封装,可以从Thread类派生一个子类。然后将与线程有关的代码都放到这个类中。Thread类的子类的使用方法与Thread相同。从Thread类继承最简单的方式是在子类的构造方法中通过super()函数调用父类的构造方法,并传入相应的参数值。

2022-03-18 15:16:24 3050

原创 Python爬虫编程思想(137):多线程和多进程爬虫--Thread类与线程对象

Thread类构造方法的target关键字参数不仅可以是一个函数,还可以是一个对象,我们可以称这个对象为线程对象。其实线程调用的仍然是函数,只是这个函数用对象进行了封装。这么做的好处是可以将于线程函数相关的代码都放在对象对应的类中,这样更能体现面向对象的封装性。

2022-03-18 15:11:33 2118

原创 Python爬虫编程思想(136):多线程和多进程爬虫--Thread类与线程函数

在前面的文章中使用锁(Lock)检测线程是否释放,以及使用锁可以保证所有的线程函数都执行完毕再往下执行。如果使用Thread类处理线程就方便得多了,可以直接使用Thread对象的join方法等待线程函数执行完毕再往下执行,也就是说,在主线程(main函数)中调用Thread对象的join方法,并且Thread对象的线程函数没有执行完毕,主线程会处于阻塞状态。

2022-03-18 15:08:49 3047

原创 Python爬虫编程思想(135):多线程和多进程爬虫--Python与线程

Python语言虽然支持多线程编程,但还是需要取决于具体会用的操作系统。当然,现代的操作系统基本上都支持多线程。例如,Windows、Mac OS X、Linux、Solaris、FreeBSD等。 Python多线程在底层使用了兼容POSIX的线程,也就是众所周知的pthread。

2022-03-09 22:26:09 2213

原创 Python爬虫编程思想(134):多线程和多进程爬虫--线程与进程详解

线程和进程都可以让程序并行运行,但很多读者会有这样的疑惑,这两种技术有什么区别呢?本文将为读者解开这个疑惑。

2022-03-09 22:18:07 2236

原创 Python爬虫编程思想(133):项目实战--利用Appium抓取微信朋友圈信息

本文利用Appium实现一个抓取微信朋友圈信息的爬虫。在编写爬虫之前,先要启动Appium服务器。编写基于Appium的爬虫,关键就是分析App每个界面相关元素的特征,也就是如何获取这些元素,然后在这些元素上执行特定的动作,如点击、输入字符串等。

2022-03-01 23:00:47 2770

原创 Python爬虫编程思想(132):使用Appium抓取移动数据(6)--Appium Python Client API

本文将介绍AppiumPythonClient常用API的使用方法,由于AppiumPythonClient从Selenium继承,所以在使用方法上与Selenium库类似。

2022-02-16 08:59:09 1591

原创 Python爬虫编程思想(131):使用Appium抓取移动数据(5)--控制App

本文讲解如何用Appium控制App然后单击右下角的Start Session按钮,就可以启动Android手机上的微信App(主要,手机一定要处于激活状态,不能黑屏),然后在弹出窗口的左侧会出现微信启动页的截图,如图2所示。...

2022-02-12 09:24:03 1455

原创 Python爬虫编程思想(130):使用Appium抓取移动数据(4)--查找Android App的Package和入口Activity

本文将上篇文章获得的4个信息填写到图1所示的配置页面中,填写后的效果如图2所示。

2022-02-08 08:39:06 3078

原创 Python爬虫编程思想(129):使用Appium抓取移动数据(3)--查找Android App的Package和入口Activity

可能很多同学会有这样的疑问,对于一个陌生的App,我又没有源代码,应该如何获得App的appPackage和appActivity,其实方法有很多。先来说明如何获得App的appPackage。获取App的appPackage(在没有源代码的情况下),至少有2种方式

2022-02-08 08:31:58 1277

原创 Python爬虫编程思想(128):使用Appium抓取移动数据(2)--启动Appium服务

本文主要介绍如何启动Appium服务

2022-02-08 08:24:38 3039

原创 Python爬虫编程思想(127):使用Appium抓取移动数据(1)--安装和配置Appium

Appium是移动端的自动化测试工具,类似于前面提到的Selenium。利用Appium可以驱动Android、iOS等移动设备完成自动化测试,例如,模拟点击、滑动、输入等操作。不过与Selenium一样,我们也可以利用Appium的这些特性编写爬虫应用。

2022-02-08 08:13:24 999

原创 Python爬虫编程思想(126):项目实战--实时抓取“得到”App在线课程

本文会给出一个真实的爬虫项目,这个爬虫项目抓取了“得到”App的在线课程列表。

2022-01-26 22:05:07 2541

原创 Python爬虫编程思想(125):抓取移动App数据--使用mitmweb监听请求与响应

mitmproxy有3中监听请求与响应的方式。mitmproxy控制台方式mitmdump与Python对接的方式mitmweb可视化方式

2022-01-26 09:04:35 1748

原创 Python爬虫编程思想(124):抓取移动App数据--mitmdump与Python对接

mitmdump是mitmproxy的命令行接口,同时还可以对接Python对请求进行处理,这要比Charles方便不少。有了这个功能,就无需手工截获和分析HTTP请求和响应,只需要写好请求和响应的处理逻辑即可。

2022-01-24 22:12:20 1585

原创 Python爬虫编程思想(123):抓取移动App数据--使用mitmproxy编辑请求信息

mitmproxy可以通过命令行方式对截获的信息进行编辑,我们可以利用这个功能重新编辑请求。单击e键,会弹出如图1所示的Part窗口,询问想编辑哪一部分信息。

2022-01-24 22:02:38 1064

原创 Python爬虫编程思想(122):抓取移动App数据--用mitmproxy监听App的请求与响应数据

如果读者按着上一篇文章的方法成功启动了代理,并在手机上正确设置了代理的IP和端口号,那么在手机上的任何HTTP/HTTPS请求都会被mitmproxy监听到。由于大多数读者的手机上可能安装了很多App,有一些App会不断向服务端发送请求,所以根本不需要自己访问网络,只要代理设置完,就会立刻在mitmproxy的控制台显示监听到的数据,如图1所示。

2022-01-19 12:13:08 2036

原创 Python爬虫编程思想(121):抓取移动App数据--设置手机的代理

与Charles一样,mitmproxy需要运行在PC上,mitmproxy的默认端口是8080,启动mitmproxy的同时会开启一个HTTP/HTTPS代理服务。手机与PC必须在同一个网段(都需要连接Wi-Fi),然后手机的代理设置为PC的IP地址,端口号设为8080。这样手机App在访问互联网时,会先通过代理,也就是说,运行在PC端的代理起到了中间人的作用,这样这个中间人就可以监听手机APP与服务端的交互数据。

2022-01-19 12:08:30 1275

原创 Python爬虫编程思想(120):抓取移动App数据--在移动端安装mitmproxy证书

只有在需要监听的手机上安装并信任mitmproxy证书,才能监听HTTPS请求的数据。首先需要将mitmproxy-ca-cert.pem文件上传到手机上,本文以iPhone7为例。读者可以将mitmproxy-ca-cert.pem文件通过发送邮件的方式发送到iPhone,不过有一些邮件客户端打开pem文件有问题。

2022-01-18 22:40:53 1023

原创 Python爬虫编程思想(119):抓取移动App数据--在PC端安装mitmproxy证书

如果要监听HTTPS数据,必须要在PC端安装证书。mitmproxy在安装后会提供一套CA证书,只要移动端信任这套CA证书,就可以通过mitmproxy监听HTTPS请求的数据,否则我们看到的都是乱码。

2022-01-18 22:34:43 1253

原创 Python爬虫编程思想(118):抓取移动App数据--mitmproxy基础

mitmproxy是一个支持HTTP和HTTPS的抓包程序,功能与Charles类似,只不过mitmproxy是一个控制台程序,操作都需要在控制台完成。本节将会介绍mitmproxy的基本用法。

2022-01-18 22:29:20 768

原创 Python爬虫编程思想(117):抓取移动App数据--使用Charles监听HTTPS数据包

现在已经在PC端和手机端安装并信任了Charles证书,接下来可以监听HTTPS数据包了。目前大多数知名应用都使用了HTTPS传输数据。本文选择了京东商城手机端。

2022-01-12 21:19:25 1521

原创 Python爬虫编程思想(116):抓取移动App数据--在PC端和移动端安装证书

要想通过Charles监听HTTPS数据,必须在PC端和手机端安装证书。

2022-01-12 21:16:34 582

原创 Python爬虫编程思想(115):抓取移动App数据--使用Charles抓取HTTP数据包

Charles是一个跨平台网络抓包工具,支持Windows、Mac和Linux平台,读者可以到Charles官网下载特定平台的Charles安装包,然后直接安装即可。

2022-01-12 21:08:05 1573

原创 Python爬虫编程思想(114):项目实战--使用Splash Lua抓取京东搜索结果

本文会利用Splash Lua脚本在京东商城上搜索商品,然后抓取搜索出的商品名称,以及将每一页搜索结果的截图保存为PNG格式的文件。

2022-01-12 09:16:21 450

原创 Python爬虫编程思想(113):基于Splash的爬虫--Splash HTTP API

前面讲解例如Splash Lua脚本的用法,但这些脚本只能在Splash测试页面中运行,那么如何在Python语言中利用Splash渲染页面呢?其中一种函数就是通过Splash HTTP API。

2022-01-10 21:06:19 527

原创 Python爬虫编程思想(112):基于Splash的爬虫--模拟鼠标键盘动作

Splash Lua脚本还提供了很多方法,用于模拟鼠标和键盘的动作,例如,mouse_click函数可以模拟鼠标单击的动作,send_keys可以模拟键盘按键的动作。

2022-01-10 20:54:32 794

原创 Python爬虫编程思想(111):基于Splash的爬虫--使用CSS选择器

Splash Lua支持CSS选择器,这些选择器也需要通过一些方法使用,本节将介绍与CSS选择器相关的函数。

2022-01-10 20:51:23 456

原创 Python爬虫编程思想(110):基于Splash的爬虫--更多的Lua函数

本文介绍了更多Lua中的函数,这些函数都与爬虫息息相关!

2022-01-10 20:36:33 326

原创 Python爬虫编程思想(109):基于Splash的爬虫--执行JavaScript的n种方式

执行JavaScript代码的方法有 jsfunc、evaljs、runjs和autoload,那么它们有什么区别呢?

2022-01-05 09:21:06 309 1

原创 Python爬虫编程思想(108):基于Splash的爬虫--go函数与wait函数

go函数用于请求某个链接,而且可以指定HTTP方法,目前只支持GET和POST,默认是GET。go函数还可以指定HTTP请求头、表单等数据。wait函数用于控制页面的等待时间,

2022-01-04 10:49:58 713

原创 Python爬虫编程思想(107):基于Splash的爬虫--对象属性

从前面的Lua脚本可以注意到,main函数包含了2个参数,第1个参数是splash,这个参数非常重要,相当于Selenium中的WebDriver对象,我们可以调用splash对象的一些属性和方法来控制加载过程,本文会介绍splash对象中的常用属性。

2022-01-04 10:43:58 822

原创 Python爬虫编程思想(106):基于Splash的爬虫--异步处理与go函数

Splash支持异步处理,例如,go函数就是通过异步方式访问页面的,不过go函数并不能指定异步回调函数,所以在调用go函数后,需要使用wait函数等待一会,这样可以给页面装载留有一定的时间。

2022-01-04 10:36:14 510 1

原创 Python爬虫编程思想(105):基于Splash的爬虫--第1个Lua脚本

Splash Lua脚本需要一个入口方法,这个方法就是main方法。该方法通常由2个参数:splash和args。不过本节先不使用这args参数,只使用splash参数的go一些方法来实现

2021-12-29 22:32:52 702

原创 Python爬虫编程思想(104):Splash基础(支持Lua的轻量级浏览器)

Splash是一个JavaScript渲染服务,是一个带有HTTP API的轻量级浏览器。可以使用lua语言编写代码对页面进行渲染,Python可以通过HTTP API调用Splash内部的功能,甚至可以与Lua代码进行交互,所以Splash可以很容易与Python集成在一起实现爬虫应用。

2021-12-29 22:21:54 1052

原创 Python爬虫编程思想(103):项目实战--抓取QQ空间说说的内容

本例使用Selenium完成一个综合项目,该项目可以QQ空间说说的内容。首先需要分析一下QQ空间说说的HTML代码。

2021-12-25 20:06:21 1273

原创 Python爬虫编程思想(102):使用Selenium改变节点的属性值

Selenium本身并没有提供修改节点属性的API,不过可以通过执行JavaScript代码的方式设置节点属性,而且通过Selenium获取的节点可以直接作为DOM使用,这就意味这可以直接在JavaScript代码中使用查找到的节点。execute_script方法的第1个参数用于指定JavaScript代码,而后面的可变参数,也就是为JavaScript代码传递参数。通过arguments变量获取每个参数值,例如arguments[0]表示第1个参数值,arguments[1]表示第2个参数值,以此类推。

2021-12-25 20:02:15 1241

原创 Python爬虫编程思想(101):使用Selenium管理Cookies

使用Selenium,可以方便地管理Cookie,例如,获取Cookie、添加和删除Cookie等。

2021-12-25 19:58:55 498

原创 Python爬虫编程思想(100):使用Selenium获取节点信息

使用selenium的API还可以获得详细的节点信息,如节点的位置(相对于页面的绝对坐标)、节点名称、节点尺寸(高度和宽度)、节点属性值等。

2021-12-25 08:33:03 750

深度解析Java中的5个“黑魔法”完整源代码

深度解析Java中的5个“黑魔法”完整源代码,包含注释的有趣应用、可执行的注释、枚举实现接口、初始化的多种方式等。

2020-04-16

GWT.in.Practice

介绍GWT API的英文版的电子书, Asynchronous JavaScript and XML (Ajax) development is hard. Not ascending- Everest hard, maybe not even calculating-your-taxes hard, but hard. This is true for a number of reasons: JavaScript can require a lot of specialized knowledge and discipline, browsers have slightly different implementations and feature sets, tooling is still immature, and debugging in multiple environments is problematic. All of these factors add up to developers needing a vast knowledge of browser oddities and tricks to build and manage large Ajax projects.

2008-12-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除