zoukankan      html  css  js  c++  java
  • erlang 爬虫——爬取网页图片

           说起爬虫,大家第一印象就是想到了python来做爬虫。其实,服务端语言好些都可以来实现这个东东。

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。

    我们可以通过erlang 来实现这样一个简单的爬虫功能。下面就看看如何使用erlang来实现这样一个功能。

     

    网上很多python有做爬取图片的,这里,我也拿这个开刀,用erlang做个爬取图片的简单功能。

     

    需要爬取网页地址:https://tieba.baidu.com/p/2460150866?red_tag=1460270922 

    分析下爬虫功能的点:

    1)通过已知的URL,做http数据请求(http/https  request);

    2)根据获取数据,<html>.....</html>标签,提取数据(规则抽象,提取,获取数据),正则表达式(或匹配,递归);

    3)处理结果集,落地(写文件,sql/nosql等)。

    好了,大概思路有了,先不考虑分布式爬虫,只是做个简单的demo,之后可考虑多节点多进程的spider。

    -module(http).
    
    -compile(export_all).
    
    
    start() ->
    
        % application:start(inets),
        % application:start(crypto),
        % application:start(asn1), %一定要的
        % application:start(public_key),  %一定要的
        % application:start(ssl),  %一定要的
        inets:start(),
        ssl:start(),

    {ok,{_,_,Body}} = httpc:request("https://tieba.baidu.com/p/2460150866?red_tag=1460270922"), io:format("~ts",[unicode:characters_to_binary([Body])]), %匹配HTML标记的正则表达式 {match, Res1} = re:run(Body, "<img (.*?) src="(.+?)".*?>",[{capture,first,list},global]), {match, Res} = re:run(Body, "<img src="([^"]*?)">",[{capture,first,list},global]).

    后面,遍历列表中的值,依次请求下载图片,下载图片的方式也很多, 请参考我的另一篇博客:https://www.cnblogs.com/unqiang/p/4595491.html

    通过 ibrowse (erlang的client)下载,最初的inets的请求,也可在ibrower中直接请求处理即可。

    未写完 待续。。。。

  • 相关阅读:
    5分钟速成C++14多线程编程
    Vue+element UI穿梭框使用
    element后台项目列表删除最后一项显示无数据
    vue+element 列表一列条件渲染
    百分比布局实现div自动换行
    store.js(一款好用的本地存储插件)的使用
    Vue开发h5或者小程序由px转换rem
    Vue中使用android和ios手机打开相机并选择相册功能和图片旋转问题
    js正则表达身份证姓名和身份证号码
    Vue中h5三个下拉框实现省级联动
  • 原文地址:https://www.cnblogs.com/unqiang/p/9489055.html
Copyright © 2011-2022 走看看