• 主页
  • 课程

    关于课程

    • 课程归档
    • 成为一名讲师
    • 讲师信息
    同等学历教学

    同等学历教学

    免费
    阅读更多
  • 特色
    • 展示
    • 关于我们
    • 问答
  • 事件
  • 个性化
  • 博客
  • 联系
  • 站点资源
    有任何问题吗?
    (00) 123 456 789
    weinfoadmin@weinformatics.cn
    注册登录
    恒诺新知
    • 主页
    • 课程

      关于课程

      • 课程归档
      • 成为一名讲师
      • 讲师信息
      同等学历教学

      同等学历教学

      免费
      阅读更多
    • 特色
      • 展示
      • 关于我们
      • 问答
    • 事件
    • 个性化
    • 博客
    • 联系
    • 站点资源

      未分类

      • 首页
      • 博客
      • 未分类
      • R 爬虫之爬取公众号图片

      R 爬虫之爬取公众号图片

      • 发布者 weinfoadmin
      • 分类 未分类, 老俊俊的生信笔记
      • 日期 2021年9月10日
      • 评论 0评论

      感谢老俊俊的大力支持。我们会每日跟新,欢迎您关注老俊俊的生信笔记。






      开始


      相信很多小伙伴们入门生信时候会去搜狗的微信网址里搜索各种数据分析和绘图的教程和代码,都是一些 公众号 的博主写的文章,当然对大家代码的水平提升很有帮助。

      今天尝试一下爬取我们搜索 关键词 后的结果的汇总,主要包含文章标题,文章链接地址,文章图片下载部分。

      首先我们进入搜狗的微信浏览页面:

      https://weixin.sogou.com/

      假如我们想搜索 barplot 相关的公众号文章:

      接下来爬取我们需要的东西。


      下水


      1、找出网址规律



      可以看到和 barplot 相关的文章有 459 条记录,接下来我们找到每页网址的规律:

      我们点击第二页和第三页的网址看看对比一下:

      # 第二页
      https://weixin.sogou.com/weixin?oq=&query=barplot&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=99&_sug_=n&type=2&sst0=1627207816457&page=2&ie=utf8&p=40040108&dp=1&w=01015002&dr=1
      # 第三页
      https://weixin.sogou.com/weixin?oq=&query=barplot&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=99&_sug_=n&type=2&sst0=1627207816457&page=3&ie=utf8&p=40040108&dp=1&w=01015002&dr=1

      可以看到只有 page=2/3 这串字符变化,也就是对应我们的每页的页数,然后根据规律就可以拿出全部页的网址,默认每页网址显示的 10 篇文章:

      # 加载包
      library(rvest)
      library(curl)
      library(tidyverse)

      # 构造网址
      w1 = 'https://weixin.sogou.com/weixin?oq=&query=barplot&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=99&_sug_=n&type=2&sst0=1627207816457&page='
      w2 = '&ie=utf8&p=40040108&dp=1&w=01015002&dr=1'

      # 总共有46页
      web <- c()
      for (i in 1:46) {
        web <- c(web,paste(w1,i,w2,sep = ''))
      }
      web
      [1] "https://weixin.sogou.com/weixin?oq=&query=barplot&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=99&_sug_=n&type=2&sst0=1627207816457&page=1&ie=utf8&p=40040108&dp=1&w=01015002&dr=1"
      [2] "https://weixin.sogou.com/weixin?oq=&query=barplot&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=99&_sug_=n&type=2&sst0=1627207816457&page=2&ie=utf8&p=40040108&dp=1&w=01015002&dr=1"
      [3] "https://weixin.sogou.com/weixin?oq=&query=barplot&_sug_type_=1&sut=0&lkt=0%2C0%2C0&s_from=input&ri=99&_sug_=n&type=2&sst0=1627207816457&page=3&ie=utf8&p=40040108&dp=1&w=01015002&dr=1"
      ...

      到这里我们就构造好所有页数的对应网址了。

      2、提取标题



      接下来我们提取所有文章的标题:

      # 提取标题
      title <- c()
      for (i in web) {
        title <- c(title,read_html(i,endcoing = 'utf-8') %>%
                     html_nodes('h3 a') %>%
                     html_text())
      }
      # 查看标题数量
      length(title)
      [1] 100
      title
      [1] "Seaborn入门:详解barplot和countplot"
      [2] "【零基础学绘图】之绘制barplot柱状图图(四)"
      [3] "R语言绘图-柱状图barplot"

      咦,怎么只有 100 个,不应该是 459 个嘛,我看了一下,这个网址好像需要登录才能查看更多的内容,就是一般进去最多能查看前面 10 页的内容。那就那这 100 个测试吧。

      这里我们就获取了文章的标题。

      3、文章链接地址



      然后我们获取每篇文章的链接地址:

      # 提取文章链接
      article_link <- c()
      for (i in web) {
        article_link <- c(article_link,read_html(i,endcoing = 'utf-8') %>%
                            html_nodes('h3 a') %>%
                            html_attr(name = 'href'))
      }
      # 查看链接数量
      length(article_link)
      [1] 100
      article_link
      [1] "/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS__DuqHKHotGVcKQHiR-Z4kwwY1QfKXewlqXa8Fplpd9XoRtJuOp6MBQVK_yR_9CMaeLLhI87V__fDCSUKfEhxB5z1n4SQUak5sfuO8PS9XFMiSomaAUEa499pBVaNN3R4RTrtPW9nTqTeB0FFgpJiZphaafWTyrPyDp4YhXd43M7I81lMPPLX6DNlR3_F84OSHdIVqdGLBg0SJ5faQ2WZYCn9lOoZLP2Q..&type=2&query=barplot&token=02329954D2CCD14CD2D71521B94972EAD23C4E4160FD4204"
      [2] "/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS__DuqHKHotGVcKQHiR-Z4kwwY1QfKXewlqXa8Fplpd9B7pfJwj5jfb46f7Bk0LMqA4YWXidI6Tfj9oxUG4n_LisLAZcBskZRSK-f0T4K6vToiZtHcle1GTdGJHzvJJbdM5NEmmBE0PyRkbv47FD8lTYfypfs4iHO75FK10vTo45ADxAimrIbDOZKdKHk2f6RUkPq6wBnjWBNZZte1yqH2VOJBjQH7pCxQ..&type=2&query=barplot&token=02329954D2CCD14CD2D71521B94972EAD23C4E4160FD4204"
      [3] "/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS__DuqHKHotGVcKQHiR-Z4kwwY1QfKXewlqXa8Fplpd95eWIqeXemYcJBSjIp3QYfAy1F8JUWxhEF2_mX7LChUSQ6poYe90C-tXCoygifV_er0mV7hN-tdOUi8jujtkO_y1U1zZ5KCaPZIP_GygNj31JruxiIUdUzf_ibqtQWgqBpvFgkNMOOsiMpmdSMjTXQrI00nqFSBDYOO1fwzcdnUYSYTqT4eyLmA..&type=2&query=barplot&token=02329954D2CCD14CD2D71521B94972EAD23C4E4160FD4204"

      可以看到获得到了这样的网址,我们查看一下 html:

      可以看到是以 https://weixin.sogou.com 连接上我们获得的地址:

      # 提取文章链接
      web <- web[1:10]
      article_link <- c()
      for (i in web) {
        article_link <- c(article_link,read_html(i,endcoing = 'utf-8') %>%
                            html_nodes('h3 a') %>%
                            html_attr(name = 'href') %>%
                            paste('https://weixin.sogou.com',.,sep = ''))
      }
      # 查看链接数量
      length(article_link)
      [1] 100
      article_link
      [1] "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS__DuqHKHotGtgGWfDYDVbEwwY1QfKXewlqXa8Fplpd9XoRtJuOp6MBQVK_yR_9CMaeLLhI87V__fDCSUKfEhxB5z1n4SQUak5sfuO8PS9XFMiSomaAUEa499pBVaNN3R3mSIXnD3Pg6LktuC7V0EquaEcMqEvQvG5U1iL67PCmTcgPPEUFPf-r3PtgDfPrmQMZ5dpzLBO73QmlabCV93ciq3X8EKMKOIA..&type=2&query=barplot&token=02F08C756BA166D81217D6E380A3121F1299DCB460FD6654"
      [2] "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS__DuqHKHotGtgGWfDYDVbEwwY1QfKXewlqXa8Fplpd9B7pfJwj5jfb46f7Bk0LMqA4YWXidI6Tfj9oxUG4n_LisLAZcBskZRSK-f0T4K6vToiZtHcle1GTdGJHzvJJbdP9O2B2ilbrAEVQtIlRv83ygBxwepFDAWwdIwkNU2Xji4YSkVaxMo2FrQT6kp7BJDpoP8AMwzMplnvcc-nPGPnP6zvkPgoArRQ..&type=2&query=barplot&token=02F08C756BA166D81217D6E380A3121F1299DCB460FD6654"
      [3] "https://weixin.sogou.com/link?url=dn9a_-gY295K0Rci_xozVXfdMkSQTLW6cwJThYulHEtVjXrGTiVgS__DuqHKHotGtgGWfDYDVbEwwY1QfKXewlqXa8Fplpd95eWIqeXemYcJBSjIp3QYfAy1F8JUWxhEF2_mX7LChUSQ6poYe90C-tXCoygifV_er0mV7hN-tdOUi8jujtkO_yXgEgHaCSybhvAPBTlit5IgkOvNg3oY9BwlnNeASL2zzsdhjBRBl1n8dd609q67fG-AlJA5cEcXMZitppjHB_XI3OTRHYU2og..&type=2&query=barplot&token=02F08C756BA166D81217D6E380A3121F1299DCB460FD6654"
      ...

      我们输入获得的网址是可以进入相应的文章的,这样就获得了每篇文章的地址。

      4、获取并下载文章的图片



      每个公众号的文章发表都需要一个配图,就是我们在网页里看到的,我们尝试一下把这些图片下载下来。这点也是我们这节重点学习的东西。

      先看看图片对应的 html 内容格式,是以 img 标记的,其图片真实的存放地址是 src 后面的东西:

      我们测试一下返回内容:

      # 获取图片
      web[1] %>% read_html(endcoing = 'utf-8') %>% html_nodes('img') %>% html_attr(name = 'src')
      [1] "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http://mmbiz.qpic.cn/mmbiz_jpg/5mt0ewv9OS0z6agn0ibpzjD4xJ78hJg1SejeHwHfn5NibPGXLuQeJSSzWia5oSPEfaVZbZ0UnSTaXXTlgrAFPGialg/0?wx_fmt=jpeg"
      [2] "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http://mmbiz.qpic.cn/mmbiz_jpg/SW8c6NQiaAMbuSc9WYlOTibhHicFhHXTLZKgOicFT1RFmeQgCPAf22c29URM4cjzE4CoxnyAO1oUzkNDhx97Cr058A/0?wx_fmt=jpeg"
      [3] "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http://mmbiz.qpic.cn/mmbiz_jpg/bjvWWMcEDlkIrb2NTrhHpqpyO6pUaOW28lPFxibS9qT7j7T2pI6iawjnUtyBdzOXkNviavZYze6jHk5LGib7X1mOmw/0?wx_fmt=jpeg"

      一直到 &url= 后面的地址是图片的 存储地址 ,我们把后面提取出来就可以了:

      # 批量获取图片地址
      img_link <- c()
      for (i in web) {
        img_link <- c(img_link,read_html(i,endcoing = 'utf-8') %>%
                        html_nodes('img') %>%
                        html_attr(name = 'src'))
      }
      # 查看图片地址数量
      length(img_link)
      [1] 100
      img_link
      [1] "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http://mmbiz.qpic.cn/mmbiz_jpg/5mt0ewv9OS0z6agn0ibpzjD4xJ78hJg1SejeHwHfn5NibPGXLuQeJSSzWia5oSPEfaVZbZ0UnSTaXXTlgrAFPGialg/0?wx_fmt=jpeg"
      [2] "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http://mmbiz.qpic.cn/mmbiz_jpg/SW8c6NQiaAMbuSc9WYlOTibhHicFhHXTLZKgOicFT1RFmeQgCPAf22c29URM4cjzE4CoxnyAO1oUzkNDhx97Cr058A/0?wx_fmt=jpeg"
      [3] "//img01.sogoucdn.com/net/a/04/link?appid=100520033&url=http://mmbiz.qpic.cn/mmbiz_jpg/bjvWWMcEDlkIrb2NTrhHpqpyO6pUaOW28lPFxibS9qT7j7T2pI6iawjnUtyBdzOXkNviavZYze6jHk5LGib7X1mOmw/0?wx_fmt=jpeg"
      ...

      # 提取地址
      new_img_link <- gsub('url=','#',img_link) %>%
        strsplit(.,split = '#') %>%
        sapply(., '[',2)
      new_img_link
      [1] "http://mmbiz.qpic.cn/mmbiz_jpg/5mt0ewv9OS0z6agn0ibpzjD4xJ78hJg1SejeHwHfn5NibPGXLuQeJSSzWia5oSPEfaVZbZ0UnSTaXXTlgrAFPGialg/0?wx_fmt=jpeg"
      [2] "http://mmbiz.qpic.cn/mmbiz_jpg/SW8c6NQiaAMbuSc9WYlOTibhHicFhHXTLZKgOicFT1RFmeQgCPAf22c29URM4cjzE4CoxnyAO1oUzkNDhx97Cr058A/0?wx_fmt=jpeg"
      [3] "http://mmbiz.qpic.cn/mmbiz_jpg/bjvWWMcEDlkIrb2NTrhHpqpyO6pUaOW28lPFxibS9qT7j7T2pI6iawjnUtyBdzOXkNviavZYze6jHk5LGib7X1mOmw/0?wx_fmt=jpeg"
      ...

      得到图片的地址了接下来直接下载就行了,1 分钟不到就下载完了:

      # 新建图片储存文件夹
      dir.create('C:UsersadminDesktoppic_download')

      # 批量下载
      for (i in 1:length(new_img_link)) {
        pic_name <- paste('C:UsersadminDesktoppic_download',i,'.jpg',sep = '')
        download.file(url = new_img_link[i],
                      destfile = pic_name,
                      method = "curl")
      }
        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                       Dload  Upload   Total   Spent    Left  Speed
      100 36545  100 36545    0     0  36545      0  0:00:01 --:--:--  0:00:01  228k
        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                       Dload  Upload   Total   Spent    Left  Speed
      100 27745  100 27745    0     0  27745      0  0:00:01 --:--:--  0:00:01  288k
        % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
      ...

      我们去文件夹打开看看成果!

      数量也是 100 张,不错不错:




      最后发现一个问题,就是 SelectorGadget 在公众号文章里面是打不开的,不知道为什么。所以今天你学习了吗?


      发现更多精彩

      关注公众号

      欢迎小伙伴留言评论!

      点击我留言!

      今天的分享就到这里了,敬请期待下一篇!

      最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!

      如果觉得对您帮助很大,打赏一下吧!

      推 荐 阅 读




      • circlize 之可视化基因组数据

      • circlize 之 Advanced layout

      • circlize 之 circos.heatmap()

      • circlize 之 Implement high-level circular plots

      • 怎么批量合并 data.frame ?

      • QPCRpro 正式上线!

      • circlize 之 Legends

      • QPCR数据添加 p 值和显著性一次解决!

      • circlize 之 Graphics

      • circlize 之 Introduction

      • circlize 之 Circular layout

      • 鉴定差异翻译效率基因之 deltaTE 下篇

      • 鉴定差异翻译效率基因之 deltaTE 上篇

      • 鉴定差异翻译效率基因之 Riborex

      • purrr 包之 list 处理系列函数

      • purrr 包之 map 系列函数

      • 批量绘制单基因相关性图

      • Y 叔出品:ggfun

      • 神器之 computeMatrix + 绘图

      • Deeptools 神器之 bamCoverage

      • 在线版shiny pheatmap!

      • QPCR数据快速分析和绘图 — by shiny

      • RNA-seq:Salmon 快速定量

      • RNA-seq:Salmon 定量结果差异分析

      • 用R提取代表转录本

      • 画个CNS级别火山图!

      • R Tips :split 函数

      • 什么? R 版 Hisat2

      • R Tips :match 函数

      • conda 安装软件报错

      • MetaProfile on Transcript

      • 提取代表转录本之 gencode

      • 附近含有 m6A 修饰的 Stop Codon 序列提取

      • Introduction of m6A

      • RNA-seq : Hisat2+Stringtie+DESeq2

      • shiny VennDiagram

      • shiny CountToTPM/FPKM

      • 自己模仿画个– m6A distribution on transcript

      • 怎么把 shiny App 做成 exe 文件进行分发

      • shiny-server内网穿透

      • 在线版shiny pheatmap!

      • 用shiny创作在线火山图绘制App

      • circlize 之 Create plotting regions

      • circlize 之 High-level genomic functions

      • R 爬虫之爬取文献信息

      请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!

      • 分享:
      作者头像
      weinfoadmin

      上一篇文章

      跟着 cell 绘制条形堆叠图和分面小提琴图
      2021年9月10日

      下一篇文章

      R 爬虫之爬取文献信息
      2021年9月10日

      你可能也喜欢

      2-1675088548
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      30 1月, 2023
      9-1675131201
      如何快速批量修改 Git 提交记录中的用户信息
      26 1月, 2023
      8-1678501786
      肿瘤细胞通过改变CD8+ T细胞中的丙酮酸利用和琥珀酸信号来调控抗肿瘤免疫应答。
      7 12月, 2022

      留言 取消回复

      要发表评论,您必须先登录。

      搜索

      分类

      • R语言
      • TCGA数据挖掘
      • 单细胞RNA-seq测序
      • 在线会议直播预告与回放
      • 数据分析那些事儿分类
      • 未分类
      • 生信星球
      • 老俊俊的生信笔记

      投稿培训

      免费

      alphafold2培训

      免费

      群晖配置培训

      免费

      最新博文

      Nature | 单细胞技术揭示衰老细胞与肌肉再生
      301月2023
      lncRNA和miRNA生信分析系列讲座免费视频课和课件资源包,干货满满
      301月2023
      如何快速批量修改 Git 提交记录中的用户信息
      261月2023
      logo-eduma-the-best-lms-wordpress-theme

      (00) 123 456 789

      weinfoadmin@weinformatics.cn

      恒诺新知

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      链接

      • 课程
      • 事件
      • 展示
      • 问答

      支持

      • 文档
      • 论坛
      • 语言包
      • 发行状态

      推荐

      • iHub汉语代码托管
      • iLAB耗材管理
      • WooCommerce
      • 丁香园论坛

      weinformatics 即 恒诺新知。ICP备案号:粤ICP备19129767号

      • 关于我们
      • 博客
      • 联系
      • 成为一名讲师

      要成为一名讲师吗?

      加入数以千计的演讲者获得100%课时费!

      现在开始

      用你的站点账户登录

      忘记密码?

      还不是会员? 现在注册

      注册新帐户

      已经拥有注册账户? 现在登录

      close
      会员购买 你还没有登录,请先登录
      • ¥99 VIP-1个月
      • ¥199 VIP-半年
      • ¥299 VIP-1年
      在线支付 激活码

      立即支付
      支付宝
      微信支付
      请使用 支付宝 或 微信 扫码支付
      登录
      注册|忘记密码?