新人第一次发文,请多多指教。

selenium设计目的是进行自动化测试,但是很显然这样的功能同样是爬虫所需要的。本文介绍如何用selenium爬取b站up动态。

无意中发现有很多up在动态中发布一些奇怪的福利,精心挑选的二次元美图。作为一只老二刺螈,当然不能让美图从身边溜走-------爬虫走起。具体的网页

首先分析网页结构:

????是up的uid。

打开开发者工具,发现动态是这样排列的:一条条动态

这些动态是由ajax动态加载的,作为一只菜鸡,我毫不犹豫的选择了用selenium,而不是分析request(懂得都懂)。

右键检查图片元素,发现了这个,被包含在一个动态里:图片url所在位置

显然,红线部分就是图片对应的url,可以看到中间有个@符号分开了两个jpg。

这个@有什么用呢,等把图片爬下来我们就会发现,后面的jpg只是一个缩略图。不仅清晰度差,尺寸还小。所以等会写正则表达式时注意,去掉@及后面的部分。

好,到此思路就清晰了:先确定你要爬取的up的uid,带入上面我们给的网址中。

用selenium打开这个网址,调用js,自动滚动,加载ajax,直到到底。(由于不是很熟悉前端,我用循环的方式,每隔一段时间检查一下dom的底部是否出现了特定的字符串,比如现在就是检测“你已经到达了世界的尽头”)。

到底以后,js获取document,接下来解析。我直接把它赋值给一个字符串,然后用正则表达式获取url。

观察发现,每个福利动态都有一些特定的字符串出现,这是图片的来源。比如说下面,标注了图片来自Pixiv,画师是谁。没有这种标志的,一般都是一些无关的,不要爬,否则你会得到大量垃圾图片。(不得不说,这些up们的版权意识很好,没有一个不标的。不知道这是不是一个商业模式,有知道的评论一下呗)

我们通过这种标志筛选了一遍动态,接下来再用筛选这个动态的html中的url,

我用到的两个正则分别为:1. (Pixiv)|(ID)|(id)|(\u753b\u5e08)

2. //i0[^@]{50,100}(png|jpg)

获取到这些url后,下载到本地。下面是下载函数:下载一个图片到本地批量下载图片

不出意外的话,尽管我们经过了上面的筛选,还是会有一些垃圾图片混进来,一般都是一些表情符号,小的数kB,大的几百kB,而大部分图片的大小都大于1M。于是通过下面的函数,根据文件的大小,去掉不符合要求的图片:

还没完,如果你不知疲倦地爬了很多up的动态(说实话,光我看到的up就有十几个,我估计全站得有上百个这种up),这些图片难免会有重复,怎么办呢?

1是计算每张图片的hash值,比如计算md5,这样好处是几乎不可能误删图片,但是速度慢,也不简单。

2是用图片识别技术,相同的就删掉。

3是获得每张图片的大小,大小相同的就删掉。但是相比前两种误删的可能性较大。

但我在这里采用第三种,说实话,误删率很低,而且我没有一张不漏的需求,下面给出函数代码:函数有点长,去github拿吧

好了,爬虫到这里就完工了。测试了一下,在限制速度的情况下(每下载一张图片停0.5到1s),爬了900多张,用时不到10多分钟。满速度情况下,跟直接下载图片没区别,毕竟selenium加载占的时间不长。不过,为了可持续发展和爬虫道德,如果没紧急需求的话还是爬慢点吧。反正,我在爬完的那一瞬间就索然无味了。

还有一些额外的细节,要是都写出来篇幅就太大了,去看源代码吧。

另外,不能保证代码的时效性,毕竟是爬虫。

下面是github的链接:https://github.com/ai25395/py_selenium_translate/blob/master/getPictures.java​github.com

如果有用,留个赞,点个关注呗。

有什么问题的话,欢迎在评论区讨论。不能用了的话也可以说一下,有时间就修改修改。

禁止用作商业用途,如果侵权,本人不承担任何法律责任。

java 动态爬虫_用selenium(Java)爬取b站up的动态相关推荐

  1. [python爬虫] BeautifulSoup和Selenium简单爬取知网信息测试

    作者最近在研究复杂网络和知识图谱内容,准备爬取知网论文相关信息进行分析,包括标题.摘要.出版社.年份.下载数和被引用数.作者信息等.但是在爬取知网论文时,遇到问题如下:   1.爬取内容总为空,其原因 ...

  2. [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息,两种方法从本质上都是一样的,都是通过分析网页的DOM树结构进行元素定位,再定向爬取具体的电影信息,通过代码的对 ...

  3. python爬b站评论_一个简单的爬取b站up下所有视频的所有评论信息的爬虫

    心血来潮搞了一个简单的爬虫,主要是想知道某个人的b站账号,但是你知道,b站在搜索一个用户时,如果这个用户没有投过稿,是搜不到的,,,这时就只能想方法搞到对方的mid,,就是 space.bilibil ...

  4. python selenium爬虫豆瓣_使用selenium+requests爬取豆瓣小组讨论列表

    获取本文代码 · 我的GitHub 注:这个项目的代码会在我的GitHub持续优化.更新,而在本文中的代码则是最初版本的代码. 豆瓣小组 豆瓣有一个"小组"模块,有一些小组中会发布 ...

  5. 【爬虫】用Selenium+PyQuery爬取京东商城

    文章目录 前言 1. 项目预览 2. 库的引入 3. 爬取流程 4. 驱动浏览器搜索关键字 4. 1页面分析 4.2 驱动浏览器代码 5. 解析页面 5.1 页面分析 5.2 页面解析代码 6. 保存 ...

  6. 【爬虫_数据库】Python爬取数据库内容并写入数据库

    爬取博客园内容并写入数据库 import requests from lxml import etree import re from python_link_mysql import MysqlOb ...

  7. java 网络爬虫_如何用Java实现网络爬虫

    原标题:如何用Java实现网络爬虫 微信公众号"书圈"后台回复[Javapachong1],下载本例的PPT和源码 作品描述 本章作品是一个能够抓取指定网站ACM比赛信息的爬虫.A ...

  8. 【Python爬虫案例学习21】爬取某站上海租房图片

    ####前言 其实很简短就是利用爬虫的第三方库Requests与BeautifulSoup. 其实就几行代码,但希望没有开发基础的人也能一下子看明白,所以大神请绕行. ####基本环境配置 pytho ...

  9. 爬虫系列教程四:动态网页api分析实例之爬取dropbox上的pdf

    动态网页api分析实例:爬取dropbox上的pdf 动态网页api分析实例:爬取dropbox上的pdf 任务 分析 写代码和debug 今天老师让我下载一个网课里面的pdf材料,pdf的数目比较多 ...

最新文章

  1. OSPF-网络类型(ip ospf network ?)
  2. [导入]将文字内容和图片插入到Access数据库(转帖)
  3. 何玺对话苏宁金融洪蜀宁:区块链是颠覆性技术,意义远超互联网
  4. 笔试题——JavaScript事件循环机制(event loop、macrotask、microtask)
  5. UploadHandleServlet
  6. Apache URLRewrite 原理及配置实现
  7. 对话RTP作者Ron Frederick: 我非常期待QUIC的发展
  8. mysql lower_case_table_names 区分表名大小写设置
  9. Mac os 10.15配置Java14和Eclipse环境
  10. Windows 和 Ubuntu双系统时间同步设置方法
  11. ocm认证年薪多少_从复读才考上三本,到华为201万年薪的天才少年,他经历了什么?...
  12. smbus协议的command_SMBus接口信号/应用框图/帧格式
  13. mybatis分页插件 pagehelper点击末页跳到第8页
  14. ROS使用节点句柄nh(“~“)和nh的区别:发布的话题的命名空间不同
  15. 同比增长率,环比增长速度、环比发展速度
  16. 浅析芝麻信用分征信体系
  17. 自己对网站SEO的一些简单了解
  18. 大疆FPGA/芯片开发工程师(A卷)笔试题(含详解)
  19. Highcharts 写 venn图 (韦恩图),以及解决项目中venn的报错
  20. Windows内核--Rtl字符串API “不同IRQL“(3.2)

热门文章

  1. [www.infoshare.cc]MonkeyRunner(1)——基本使用方法,一驾考宝典这款APP为例
  2. java char字节数_Java中char到底是多少字节?
  3. Android 腾讯优图 OCR 云平台识别身份证、银行卡、行驶证、驾驶证,依赖包小,识别次数免费
  4. 献给初学iOS的小盆友们——微博app项目开发之九未读数设置以及后台播放
  5. java查询结果传入excel表格批量上传并压缩下载
  6. 运行安卓程序报错android.view.InflateException: Binary XML file line #11: Error inflating class ImageView
  7. if语句转为数学公式
  8. 借身份证给别人办理流量卡有风险吗?这些情况你必须要知道!
  9. 卷积神经网络有哪些算法,神经网络卷积算法公式
  10. %JAVA_HOME% bin,添加 Path 变量,变量值 :%JAVA_HOME%\\bin;%JAVA_HOME%\\ jre