爬虫总结和详解
文章平均质量分 60
数据知道
IT技术博主,博主会持续更新专栏文章,欢迎关注和订阅文章博客,欢迎私信和博主交流技术。如有需要请站内私信或者联系VX名片(ID:data_know)
展开
-
有名的爬虫框架 colly 的特性及2个详细采集案例
前言:colly 是 Go 实现的比较有名的一款爬虫框架,而且 Go 在高并发和分布式场景的优势也正是爬虫技术所需要的。它的主要特点是轻量、快速,设计非常优雅,并且分布式的支持也非常简单,易于扩展。框架简介:基于colly框架及net/http进行封装,实现的一款可配置分布式爬虫架构。使用者只需要配置解析、并发数、入库topic、请求方式、请求url等参数即可,其他代码类似于scrapy,不需要单独编写。github地址:colly特性干净的API快速(单核>1k请求/秒)原创 2024-03-25 10:32:02 · 8904 阅读 · 0 评论 -
Python中requests、aiohttp、httpx性能对比
在Python中,有许多用于发送HTTP请求的库,其中最受欢迎的是requests、aiohttp和httpx。这三个库的性能和功能各不相同,因此在选择使用哪个库时,需要考虑到自己的需求和应用场景。首先,让我们来了解一下这三个库的基本介绍。是一个简单易用的HTTP库,它可以发送HTTP请求和处理HTTP响应。它的API简单易用,可以轻松地实现HTTP请求和响应的处理。是一个异步HTTP客户端/服务器框架,它使用asyncio库实现异步IO操作。原创 2024-03-13 09:53:56 · 9490 阅读 · 0 评论 -
5个鲜有人知的爬虫技巧
几点鲜有人知的爬虫技巧。原创 2023-09-13 13:03:54 · 11980 阅读 · 0 评论 -
ADB各种操作指令详解大汇总
1. ADB:ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。客户端:用于发送命令。客户端在开发计算机上运行。您可以通过发出 ADB命令来从命令行终端调用客户端。守护进程:在设备上运行命令。守护进程在每个设备上作为后台进程运行。服务器:管理客户端和守护进程之间的通信。...原创 2022-08-10 18:34:23 · 38894 阅读 · 2 评论 -
Wireshark经典实践和面试13点总结
wireshark是目前全球使用最广泛的开源抓包软件(前身为Ethereal),由Gerald Combs编写并与1998年以GPL开源许可证发布。能在多种平台上抓取和分析网络包。图形界面非常友好,也可以使用命令行形式:TShark。wireshark是一款网络嗅探工具。可以监视网络的状态、数据流动情况以及网络上传输的信息。Wireshark不仅支持上百种网络协议的解析(如网络基础协议:ARP, DNS, DHCP;数据传输协议:TCP, UDP;高级应用协议:HTTP, SMTP/POP3, SMB。..原创 2022-08-05 20:53:15 · 28385 阅读 · 1 评论 -
appium概述,环境搭建及python3环境下案例
一. 介绍官网:http://appium.io/介绍:http://appium.io/docs/cn/about-appium/intro/官方github: https://github.com/appium/appiumAppium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UIAutomation库、Android系统的UI原创 2021-08-10 17:05:57 · 29317 阅读 · 0 评论 -
爬取热榜数据,通过Qt界面显示,代码可直接运行(python3经典编程案例)
代码如下:# -*- encoding: utf-8 -*-import sysfrom lxml import etreefrom requests import getfrom PyQt5 import QtCore, QtGui, QtWidgetsHEADERS = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/7原创 2021-08-08 21:24:19 · 29177 阅读 · 0 评论 -
python3异步爬虫:asyncio + aiohttp + aiofiles(python经典编程案例)
爬取网站为:http://www.tulishe.com/all# -*- encoding: utf-8 -*-import osimport timeimport asyncioimport aiohttpimport aiofilesfrom lxml import etreefrom functools import wrapsfrom asyncio.proactor_events import _ProactorBasePipeTransportdef silence_原创 2021-07-25 16:04:43 · 29792 阅读 · 2 评论 -
python3爬取音乐(python经典编程案例)
爬取网站:https://www.9ku.com/下载音乐代码:import reimport osimport timeimport requestsimport urllib.parseheaders = { 'Referer': 'https://www.9ku.com/', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Ch原创 2021-07-12 20:44:15 · 33006 阅读 · 5 评论 -
linux上安装selenium环境及测试
win10安装selenium环境请参考:https://cuiyonghua.blog.csdn.net/article/details/103699493下面是:linux 安装selenium+chrome+chromedriver一. 安装chrome1.1 增加yum源在/etc/yum.repos.d/目录下新建文件google-chrome.repo,向其中添加如下内容: [google-chrome] name=google-chrome baseurl=http://d原创 2021-06-24 19:03:22 · 30249 阅读 · 0 评论 -
scrapy源码9 - webclient
webclient.py 这个文件从名字上看出来应该是定义一个web 客户端的类。from time import time导入时间from six.moves.urllib.parse import urlparse, urlunparse, urldefrag导入urlparse,urlunparse,urldefragfrom twisted.web.client import HTTPClientFactory导入HTTPClientFactoryfrom twisted.web原创 2021-01-31 23:50:30 · 28992 阅读 · 0 评论 -
scrapy源码9 - tls
tls.py 这个文件看起来挺简单的。import loggingfrom OpenSSL import SSLfrom scrapy import twisted_versionlogger = logging.getLogger(__name__)这里就是导入logging,ssl,twisted_version 包。全局日志loggerMETHOD_SSLv3 = 'SSLv3'METHOD_TLS = 'TLS'METHOD_TLSv10 = 'TLSv1.0'ME原创 2021-01-31 15:41:47 · 29260 阅读 · 1 评论 -
用python执行js代码:PyExecJS库
一. 安装node.js环境安装NodeJS下载: http://nodejs.cn/download/安装: https://www.runoob.com/nodejs/nodejs-install-setup.html测试安装成功可在控制台输入:node --version二. 安装PyExecJS源:https://pypi.org/project/PyExecJS/安装:pip install PyExecJS查看执行JS的环境:import execjs# 返回:JScrip原创 2021-01-07 20:37:51 · 29854 阅读 · 0 评论 -
用requests+tkinter实现小型翻译器
代码如下:# -*- coding: utf-8 -*-import requestsfrom requests.exceptions import RequestExceptionimport tkinter as tk# 定义翻译函数def translate(): str1 = text1.get() # 定义一个变量,用来接收输入文本框的值 data = { 'doctype': 'json', 'type': 'AUTO',原创 2020-11-30 20:43:06 · 29051 阅读 · 0 评论 -
puppeteer的各种案例
1. 一个简单的案例import asynciofrom pyppeteer import launchasync def main(url): browser = await launch() page = await browser.newPage() res = await page.goto(url, options={'timeout': 30000}) data = await page.content() title = await page原创 2020-11-30 20:03:30 · 31185 阅读 · 0 评论 -
scrapy源码9 - downloadermiddleware
下载中间件import six导入six兼容包from twisted.internet import defer导入deferfrom scrapy.http import Request, Response导入请求和响应from scrapy.middleware import MiddlewareManagerfrom scrapy.utils.defer import mustbe_deferred导入中间件管理 和mustbe_defferredfrom scrapy.uti原创 2020-11-30 14:03:58 · 28946 阅读 · 0 评论 -
用python爬取阳光电影的链接
用python爬取阳光电影的链接,并存入文本。把链接直接复制到迅雷软件即可下载电影,方便快捷。python代码如下:# -*- encoding: utf-8 -*-"""@Author: cuiyonghua@CreateDate: 2020/10/15 3:44 下午@Description: """import requestsimport refor page in range(1, 223): url = 'http://www.ygdy8.net/html/gndy原创 2020-10-20 17:59:21 · 30218 阅读 · 1 评论 -
scrapy源码8 - contextfactory
contextfactory.py 这个文件,相对文件内容不多。from OpenSSL import SSLfrom twisted.internet.ssl import ClientContextFactoryfrom scrapy import twisted_version这3句代码, 导入ssl,导入ClientContextFactory ,导入twisted_version我们看看这个version是啥内容twisted_version = (_txv.major, _t原创 2020-10-13 20:10:01 · 29124 阅读 · 0 评论 -
scrapy源码7:downloader的源码分析
这里我们看看scrapy.core.downloader 这个吧。from __future__ import absolute_import# 在python2.5,你可以打开 import的行为直接去绝对导入使用一个 from __future__ import absolute_import 。这个绝对导入行为将成为一个默认的细节在将来的python中。一旦绝对导入被默认,import string 将总是寻找基本库。# 建议用户尽可能多的使用绝对导入,因此在你的代码中使用from pkg im原创 2020-09-01 10:03:16 · 30259 阅读 · 0 评论 -
scrapy源码6:deffer和parallel的源码分析
deferscrapy的核心的代码大量用到deffer对象,还有一些并行的东西。 这里简单去学习下deffer和并行的方法知识 。twisted.interet.defer 这个官方的api就是下面的网址了。http://twistedmatrix.com/documents/current/api/twisted.internet.defer.html我们可以看到这个defer是twisted提供的internet方法的包twisted先了解下twisted是个什么。Twisted: The原创 2020-08-31 19:24:35 · 30428 阅读 · 0 评论 -
scrapy源码5:middleware的源码分析
这个文件是中间件的基类了。from collections import defaultdictimport loggingimport pprint# 这几个都是引用默认字典, 日志, 打印的,没啥问题。 from scrapy.exceptions import NotConfiguredfrom scrapy.utils.misc import load_object# 导入了notconfigure没有配置的异常, 导入了load_object去完成字符串到对应类对象的方法。前面原创 2020-08-31 13:03:33 · 30114 阅读 · 0 评论 -
scrapy源码4:spidermw的源码分析
import sixfrom twisted.python.failure import Failure# 导入six包和导入failurefrom scrapy.middleware import MiddlewareManager# 这里导入了一个中间件管理的基类,应该适用于后续的继承的吧。 from scrapy.utils.defer import mustbe_deferredfrom scrapy.utils.conf import build_component_list#.原创 2020-08-31 12:45:19 · 30178 阅读 · 0 评论 -
scrapy源码3:scraper的源码分析
我们看看scraper.py文件吧。从注释中我们可以看出这个scraper模块是实现爬虫组件去解析响应流并且提取数据的。import loggingfrom collections import deque# 这2个就是日志的deque队列的导入。from twisted.python.failure import Failurefrom twisted.internet import defer# 这2句,导入了一个Failure和一个defer延迟。from scrapy.util原创 2020-08-31 09:50:04 · 30537 阅读 · 0 评论 -
Ajax动态刷新-有道翻译案例(python经典编程案例)
1. 网站分析爬取网站:http://fanyi.youdao.com/1.1 在输入框中输入需要翻译的字段,翻译动态刷新.可知此链接为Ajax.1.2 经过一系列测试发现,其实际需操作的URL为 http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule 。上述篮框中的意思为:e 为输入所翻译的内容ts 为七位整数的时间戳salt 为时间戳后加上一位,大于0小于9的数字bv 为User-Agent的原创 2020-07-20 20:39:05 · 32153 阅读 · 0 评论 -
scrapy源码2:scheduler的源码分析
一. scheduler核心Scheduler主要负责scrapy请求队列的管理,即进队与出队。进一步来说,会涉及到队列的选择,队列去重,序列化。from_crawler(cls, crawler): settings = crawler.settings dupefilter_cls = load_object(settings['DUPEFILTER_CLASS']) dupefilter = dupefilter_cls.from_settings(原创 2020-07-02 20:54:33 · 32954 阅读 · 0 评论 -
scrapy源码1:engine的源码分析
scrapy中engine.py的源码分析如下:"""engine.py提供了2个类:Slot和ExecutionEngine Slot: 提供了几个方法添加请求,删除请求,关闭自己,触发关闭方法 它使用Twisted的主循环reactor来不断的调度执行Engine的"_next_request"方法,这个方法也是核心循环方法。 ExecutionEngine: 引擎的执行任务爬虫引擎是控制调度器,下载器和爬虫的。This is the Scrapy eng原创 2020-06-30 13:02:17 · 43448 阅读 · 0 评论 -
用3种方式爬取动态网站数据:华南粮网
需求:爬取 华南粮网:https://gdgrain.com/#!/list?params=%7B%22type%22:7%7D 的标题和时间。该网站查看网页源代码发现,无标题数据:该网站通过requests请求是请求不到数据的,可以通过下面的方法来获取数据。1. 分析网站,找出post请求网站分析如图:代码如下:import requestsimport jsonimport timeurl = 'https://gdgrain.com/sgtcPortals-front/sgtc/原创 2020-06-29 18:21:59 · 34902 阅读 · 0 评论 -
pyppeteer的环境搭建,常见参数及2个案例
一. pyppeteer介绍Puppeteer是谷歌出品的一款基于Node.js开发的一款工具,主要是用来操纵Chrome浏览器的 API,通过Javascript代码来操纵Chrome浏览器,完成数据爬取、Web程序自动测试等任务。Puppeteer 默认以 headless 模式运行,但是可以通过修改配置文件运行“有头”模式。Pyppeteer的两大特点,chromium浏览器和asyncio框架:Chromium是一款独立的浏览器,是Google为发展自家的浏览器Google Chrome而原创 2020-06-28 19:10:46 · 45417 阅读 · 1 评论 -
用selenium爬取csdn博客文章,并用4种方法提取数据
为了方便susu学习selenium,下面代码用selenium爬取博客文章的标题和时间,并用selenium自带的解析,etree,bs4,scrapy框架自带的selector等4种方式来解析网页数据;当然,请求库还可以使用urllib,requests;也可以用aiohttp来实现异步爬取,用Splash实现动态渲染页面的抓取。# -*- encoding: utf-8 -*-from selenium import webdriverfrom selenium.webdriver.chro原创 2020-06-15 16:42:38 · 33883 阅读 · 3 评论 -
用python爬取链家二手房信息,并把数据存入mongodb
爬取网站:https://gz.lianjia.com/ershoufang/pg爬取链家二手房信息,数据存mongodb,代码如下:import requestsfrom fake_useragent import UserAgentfrom lxml import etreeimport timeimport randomfrom pymongo import MongoClientclass LianjiaSpider(object): def __init__(self原创 2020-05-21 21:00:59 · 35085 阅读 · 2 评论 -
基于Base64编码的反爬虫
1. Base64的用法# base64的用法import base64encodestr = base64.b64encode('abcr34r344r'.encode('utf-8'))print(encodestr) # b'YWJjcjM0cjM0NHI='encodestr = base64.b64encode('abcr34r344r'.encode('utf-8'))...原创 2020-03-29 23:36:33 · 33365 阅读 · 0 评论 -
反爬:请求参数中的mcode是按时间戳通过base64加密得来的
代码如下:# coding=utf-8"""1.在债券信息中找到债券代码:http://bond.sse.com.cn/disclosure/info/creditabs/2.搜索:http://webapi.cninfo.com.cn/#/thematicStatistics?location=b11 进入债券报表,选择债券基本信息查询,再按债券查询遇到的问题:请求参数中的mc...原创 2020-02-29 19:58:44 · 33458 阅读 · 0 评论 -
反爬:请求头中加X-Requested-With,才能请求到数据
请求头中加X-Requested-With,才能请求到数据如网站:http://view.jfinfo.com/research/ydjcimport reimport requestsfrom lxml import etree"""网站:http://view.jfinfo.com/research/ydjc请求头中加X-Requested-With,才能请求到数据"""h...原创 2020-02-29 19:56:03 · 34796 阅读 · 0 评论 -
反爬:请求头中需要加上Referer,才能访问到网页返回的数据
请求头中需要加上Referer,才能访问到网页返回的数据:如网站:http://stock.cnstock.com/xt,代码如下:import requestsimport reimport timeimport jsonfrom lxml import etree"""网站:http://stock.cnstock.com/xt请求头中需要加上Referer才能访问到数据...原创 2020-02-29 19:52:19 · 34990 阅读 · 0 评论 -
写爬虫遇到的各类较难的xpath汇总
1. 如网站:http://www.afinance.cn/new/yzcj/List_19.html,提取时间的xpath如下://div[@class="nrbf"]/font[@class!="a"]/text()[1]提取到的截图如下:原创 2020-02-13 10:29:57 · 33108 阅读 · 1 评论 -
java常用的爬虫框架
目前主流的Java爬虫框架主要有Nutch、Crawler4j、WebMagic、WebCollector等。1. 分布式爬虫:Nutchgithub地址:https://github.com/andrewcao95/nutch-crawlerNutch是apache旗下的一个用Java实现的开源索引引擎项目,通过nutch,诞生了hadoop、tika、gora。Nutch的设计初衷主要是...原创 2019-12-31 18:51:26 · 47298 阅读 · 1 评论 -
常见反爬虫策略 及应对措施
一般网站从三个方面反爬虫:请求网站访问时的请求头Headers,用户行为,目标网站的目录和数据加载方式。前两个方面反爬虫策略中最为常见的,而第三个则是应用ajax(异步加载)的方式加载页面目录或者内容,增大爬虫在对目标网站形成访问之后获取数据的难度。但是仅仅检验一下请求头或者做几个ip限制显然无法达到网站运营者对anti-spam的要求,所以更进一步的反制措施也不少。最主要的大概有:Cookie...原创 2019-12-31 18:35:03 · 39365 阅读 · 0 评论 -
在爬虫框架scrapy中使用selenium
1. wangyi.pyimport scrapyfrom selenium import webdriver'''在scrapy中使用selenium的编码流程: 1.在spider的构造方法中创建一个浏览器对象(作为当前spider的一个属性) 2.重写spider的一个方法closed(self,spider),在该方法中执行浏览器关闭的操作 3.在下载中...原创 2019-12-27 20:29:35 · 33495 阅读 · 0 评论 -
selenium的介绍,win10系统配置selenium,并用python爬取网页的案例
1. selenium的介绍Selenium 是一个自动化测试工具,利用它可以驱动浏览器执行特定的动作,如点击、下拉等操作,同时还可以获取浏览器当前呈现的页面的源代码,做到可见即可爬。对于一些 JavaScript 动态渲染的页面来说,此种抓取方式非常有效。2. 准备工作首先需要安装 Chrome浏览器,然后到 https://chromedriver.storage.googleapi...原创 2019-12-25 16:03:15 · 33077 阅读 · 0 评论 -
爬虫基本流程总结
爬虫基本流程总结如下:原创 2019-08-06 10:04:01 · 34151 阅读 · 0 评论