精华内容
下载资源
问答
  • 基于Java的网页内容爬取 - 链接

    千次阅读 2018-04-09 17:23:38
    基于Java的网页内容爬取 - 链接 @目前是爬个链接做做测试 1.代码 import com.google.common.collect.Lists; import com.google.common.collect.Sets; import org.jsoup.Jsoup; import org.jsoup.nodes....

    基于Java的网页内容爬取 - 链接


    @目前是爬个链接做做测试


    1.代码

    import com.google.common.collect.Lists;
    import com.google.common.collect.Sets;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import utils.print.Print;
    
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    import java.util.List;
    import java.util.Set;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;
    
    /**
     * @author Created by 谭健 on 2018/4/9 0009. 星期一. 11:23.
     * © All Rights Reserved.
     * <p>
     * URL 爬取
     */
    public class WebReptile {
    
    
        public static void main(String[] args) throws Exception {
            URL url = new URL("https://www.aliyun.com/");
            URLConnection conn = url.openConnection();
            // 设置连接网络超时时间
            conn.setConnectTimeout(1000 * 10);
            // 读取指定网络地址中的文件
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
    
            // 这个也不能断掉链接
            String regex = "(https?://(w{3}\\.)?)?\\w+\\.\\w+(\\.[a-zA-Z]+)*(:\\d{1,5})?(/\\w*)*(\\??(.+=.*)?(&.+=.*)?)?";
    
            // 比较水的正则
            String regex1 = "[http]{4}\\\\:\\\\/\\\\/([a-zA-Z]|[0-9])*(\\\\.([a-zA-Z]|[0-9])*)*(\\\\/([a-zA-Z]|[0-9])*)*\\\\s?";
            String regex2 = "(http://.*)\\\\s+";
            String regex3 = "(?isu)(http\\://[a-zA-Z0-9\\.\\?/&\\=\\:]+)";
            Pattern p = Pattern.compile(regex);
            //       line = bufferedReader.readLine();
            StringBuilder html = new StringBuilder(8000);
    
            // 读取网站的html源代码
            while ((line = bufferedReader.readLine()) != null) html.append(line);
    //        while ((line = bufr.readLine()) != null) {
    //            Matcher m = p.matcher(line);
    //            while (m.find()) {
    //                System.out.println(m.group());
    //            }
    //        }
    
    
            // 存储找到的链接
            List<String> list = Lists.newArrayListWithExpectedSize(900);
    
            // 格式化HTML,有些网站心机比较深,做了压缩,需要先格式化,不然会漏掉99%的链接
            Document document = Jsoup.parseBodyFragment(html.toString());
            String[] htmlLines = document.toString().split("\n");
            // 一行一行的找
            for (String htmlLine : htmlLines) {
                Matcher m = p.matcher(htmlLine);
                while (m.find()) {
                    String group = m.group();
                    // Print.echo(m.group());
                    // 有些是这个行里面有链接,可能在中间,或者其它什么地方,我没做处理
                    if (group.contains("http") || group.contains("https")) {
                        // 做个截断,链接不在第一分段的不要了,比较少
                        String uri = group.split("\"")[0];
                        if (uri.contains("http") || uri.contains("https"))
                            list.add(uri);
    //                    if (group.split("\"")[0].equalsIgnoreCase("buy.aliyun.com/buy/package.html")) {
    //                        Print.echo(group);
    //                    }
                    }
                }
            }
    //        document.body().html();
    //
    //        Print.echo(document.toString());
    //        Print.echo(html);
    
    
            Print.echo(list.size());
            // 去重
            Set<String> set = Sets.newHashSet(list);
            Print.echo(set.size());
    
            set.forEach(Print::echo);
        }
    
    
    }

    2.结果

    1. 如果不做限制,大约1200-1300个
    2. 比较容易操作 [搞事情] 的链接大约847个
    3. 不重复的链接大约633个
    4. 在IDEA的控制台里面都是那种可以直接点出去的链接
    5. 还不完善,但是搞些简单的事情还是没毛病,老铁
    展开全文
  • 公众号“企鹅爸爸”内容爬取&简析 目录公众号“企鹅爸爸”内容爬取&简析1.前言2.“企鹅爸爸”商城商品销售情况爬取及简析3.“企鹅爸爸”公众号最近50篇文章评论数等信息爬取及简析4.总结 1.前言 本篇...

    公众号“企鹅爸爸”内容爬取&简析

    1.前言

    1. 本篇主要围绕爬取和简析“企鹅爸爸”公众号中商城和历史文章的部分内容。(报告中爬取部分的代码以及采集到的具体数据有所省略)
    2. “企鹅爸爸”商城销售量信息较易爬取。共采集了有销售量的商品总数94条。
    3. 鹅厂的微信公众号,历史文章的反爬非常强,如果构建企业级爬虫成本极高。但为了满足初步分析的目的,我们可以另辟蹊径,先快速获取少量数据(最近的50篇文章)。ps:目前已经没有点赞数了。

    2.“企鹅爸爸”商城商品销售情况爬取及简析

    1. “企鹅爸爸”在售商品价格分布情况:
      由图可知,“企鹅爸爸”在售商品的价格主要分布在200元内,总体平均价格为113元,50元左右的商品数最多。
      在这里插入图片描述
    2. “企鹅爸爸”各年龄层在售商品数及比例情况:
      由以下两图可知,各年龄层在售商品中,3岁+商品数最多。
      另外,3-6岁+的商品占据了整体在售产品数量的73.63%
      在这里插入图片描述
      在这里插入图片描述
    3. 哪些是爆款?
      有下表可知(销售量占中体前80%的商品列表),销售量前三名都是三岁+的产品(具体特点可以再仔细研究)。
      另外,通过计算,我们可以发现表中商品总数为26,占据整体有销量商品的27.66%,但占据了80%的销量,比较符合帕累托法则。
      在这里插入图片描述

    3.“企鹅爸爸”公众号最近50篇文章评论数等信息爬取及简析

    1. 文章基本信息示例:
      最受欢迎的文章都是比较具有热点或话题性的内容
      在这里插入图片描述
    2. 是否原创对阅读数的影响:
      从数据上来看差别不大,原创平均阅读数上稍差,标准差较小,具体情况性质可以再仔细探讨。
      在这里插入图片描述
    3. 近50篇公众号阅读数分布密度图:
      每篇文章平均阅读数为4790,
      在这里插入图片描述

    4.总结

    1.本篇是简单爬取信息和分析的作业,“企鹅爸爸”具体内容有待深入研究。
    2.爬虫部分占据整体过程的大部分的时间,建议聘用专业爬虫工程师或者支付一点费用直接购买相关服务,会省去大量时间等成本。
    在这里插入图片描述

    展开全文
  • 网站内容爬取工具

    2015-09-26 13:45:19
    网站内容抓去工具,有效抓去所有链接下的所有网页
  • Python 爬虫学习笔记三:多页内容爬取&内容分析及格式化 python int 与 string 之间的转换: Python int与string之间的转化 string–>int 1、10进制string转化为int int(‘12’) 2、16进制string转化...

    Python 爬虫学习笔记三:多页内容爬取&内容分析及格式化


    1. python int 与 string 之间的转换:

    Python int与string之间的转化
    string–>int

    1、10进制string转化为int

     int(‘12’)

    2、16进制string转化为int

      int(‘12’, 16)

    int–>string

    1、int转化为10进制string

      str(18)

    2、int转化为16进制string

      hex(18)


    2 . 由于链家网上面选中第二页的时候,只是在页面后面多了一个“d2”, 如: http://sh.lianjia.com/ershoufang/pudong/d2 , 所以要想爬取更多的网页只需要循环更新requests 的页面URL

    3 . 增加了一个循环之后,可以打印所有的爬取结果

    from lxml import etree
    import requests
    import string
    url = 'http://sh.lianjia.com/ershoufang/'
    region = 'pudong'
    price = 'p23'
    finalURL = url+region+price
    
    def spider_room(finallyURL):
       r= requests.get(finallyURL)
       html = requests.get(finalURL).content.decode('utf-8')
       dom_tree = etree.HTML(html)
       # all the messages
       all_message = dom_tree.xpath("//ul[@class='js_fang_list']/li")
       for index in range(len(all_message)):
          print(all_message[index].xpath('string(.)').strip())
       return
    for i in range(20):
       finallyURL = finalURL + '/d'+str(i)
       spider_room(finallyURL)

    4 . 爬取了20页的内容,可是内容的结果输出的形式并没有改变


    【注】 看到的比较好的文章

    [1] 利用Python爬取朋友圈数据,爬到你开始怀疑人生
    [2] 请问爬虫如何爬取动态页面的内容?
    [3] 如何用爬取的数据赚钱
    [4] 钱塘数据大数据交易中心
    [5] 利用爬虫技术能做到哪些很酷很有趣很有用的事情?

    展开全文
  • python爬取小说(一)目录和章节内容爬取

    万次阅读 多人点赞 2018-08-17 17:49:58
    最近有些想法,就是想做一个小说网站(大家别笑,纯粹拿来练手,怕很久不做爬虫忘记了) ...1、目标:爬取网站章节、url、章节内容; 2、使用python库:urllib.request,re,bs4(无此环境的自行安装啊) 3、数...

    最近有些想法,就是想做一个小说网站(大家别笑,纯粹拿来练手,怕很久不做爬虫忘记了)
    ok,那想要做网站,总的有数据吧?数据从哪儿来?当然是“偷取”别人的咯。。。。(好像挺理所当然)
    好吧,既然要头数据,不免要找个冤大头,我这里找的是笔趣阁网站的,
    1、目标:爬取网站章节、url、章节内容;
    2、使用python库:urllib.request,re,bs4(无此环境的自行安装啊)
    3、数据存储;(预留)
    4、前端显示;(预留)
    这里写图片描述
    嗯,就是这几个任务。首先我把爬取目录等的代码贴上。

    # -*- coding: utf-8 -*-
    import urllib.request
    import bs4
    import re
    
    # 模拟浏览器访问url并获取页面内容(即爬取源码)
    def getHtml(url):
        user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"
        headers = {"User-Agent":user_agent}
        request = urllib.request.Request(url,headers=headers)
        response = urllib.request.urlopen(request)
        html = response.read()
        return html
    
    
    # 爬取整个网页(这里就细致一些,指定编码之类的)
    def parse(url):
        html_doc = getHtml(url)
        sp = bs4.BeautifulSoup(html_doc, 'html.parser', from_encoding="utf-8")
        return sp
    
    
    # 获取书籍目录(正式开始了)
    def get_book_dir(url):
        books_dir = []
        name = parse(url).find('div', class_='listmain')
        if name:
            dd_items = name.find('dl')
            dt_num = 0
            for n in dd_items.children:
                ename = str(n.name).strip()
                if ename == 'dt':
                    dt_num += 1
                if ename != 'dd':
                    continue
                books_info = {}
                if dt_num == 2:
                    durls = n.find_all('a')[0]
                    books_info['name'] = (durls.get_text())
                    books_info['url'] = 'http://www.biqukan.com' + durls.get('href')
                    books_dir.append(books_info)
        return books_dir
    
    
    # 获取章节内容
    def get_charpter_text(curl):
        text = parse(curl).find('div', class_='showtxt')
        if text:
            cont = text.get_text()
            cont = [str(cont).strip().replace('\r \xa0\xa0\xa0\xa0\xa0\xa0\xa0\xa0', '').replace('\u3000\u3000', '')]
            c = " ".join(cont)
            ctext = re.findall(r'^.*?html', c)
            return ctext
        else:
            return ''
    
    
    # 获取书籍(目录和内容整合)
    def get_book(burl):
        # 目录
        book = get_book_dir(burl)
        if not book:
            return book
    
        # 内容
        for d in book:
            curl = d['url']
            try:
                print('正在获取章节【{}】【内容】【{}】'.format(d['name'],d['url']))
                ctext = get_charpter_text(curl)
                d['text'] = ctext
                print(d['text'])
                print()
            except Exception as err:
                d['text'] = 'get failed'
    
        return book
    
    
    if __name__ == '__main__':
    	# 这里我先爬取一本书的,需要多本书,那就再加个爬取首页所有书籍的url就可以
        book = get_book('http://www.biqukan.com/1_1094/')
        print(book)
    
    

    结果展示:

    这里写图片描述

    之后会进行数据存储和前端展示,so,敬请期待~~

    创作不易,喜欢的话给喵喵赏点吧~(可怜眼神)
    在这里插入图片描述

    展开全文
  • 今日头条文章评论内容爬取

    千次阅读 2019-03-25 18:29:40
    因为业务要求,需要爬取今日头条文章相关评论内容。经过分析,今日头条评论接口有很多个(主要包括PC端和app端)。 经过分析发现app端较pc端更好爬取,主要是从大量爬取被封IP的概率考虑。下面主要以...
  • 实验内容:爬取中国工程院网页上的院士信息,把每位院士的简介保存为本地文本文件,把每位院士的照片保存为本地图片,文本文件和图片文件都以院士的姓名为主文件名。 #-*- codeing = utf-8 -*- #@Time :2021/5/20 8:...
  • 利用Ajax分析微博并爬取内容如微博内容,点赞数,转发数,评论数等。 分析 打开陈一发微博网站:https://m.weibo.cn/p/1005051054009064,并同时打开开发者工具。 我们可以在Network中分析可以得出,微博中所有...
  • Python3 爬虫--- 问卷星内容爬取

    千次阅读 2020-06-02 00:17:09
    今天面试有个问卷星的笔试题,但是无法复制题目内容。 所以爬取一下。 import time from requests_html import HTMLSession wenjuanxing_ID = id wenjuanxing_URL = "https://ks.wjx.top/jq/{}.aspx".format...
  • 利用Python进行百度文库内容爬取(一)

    千次阅读 多人点赞 2018-07-14 19:38:27
    在很多时候我们需要下载百度文库内容的时候,弹出来的是下载券不足,而现在复制其中的内容也只能复制一部分,如果遇到一些政治开卷考,考前抱佛脚,想要复制出文库中的内容,可谓是难上加难。 对百度文库内容的获取...
  • 废话不多说了直接进入正题:在后续探索爬虫过程中,我发现了一个问题,有些网页的源代码打开后没有我们需要爬取内容(或者不全),后续内容均为动态加载的,源代码没有变,比如这次我要爬取的ins页面上用户上传的...
  • html = driver.page_source ...result = bf1.find_all(class_='txt') for each_result in result: bf2 = BeautifulSoup(str(each_result), 'lxml') texts = bf2.find_all('p') print(texts[0].getText())
  • 1、打开京东,到商品搜索页 2、匹配所有商品节点对象列表 3、把节点对象的文本内容取出来,查看规律,是否有更好的处理办法? ... # 如何判断是否为最后1页?...这种爬取方法效率比较慢,但是基本上网站的内容都可以爬取
  • 本爬虫源于女朋友要考时事政治,要我帮她整理中公教育的时事政治内容,因本人最近对爬虫有了初步(一点点)的了解,为了免去机械复制粘贴时间,做了一个低端爬虫,通过本次爬虫,对python基础内容也深入了解了下,...
  • news_df_merge=pd.merge(news_df,text_df,right_index=True, left_index=True) news_df_merge

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 92,741
精华内容 37,096
关键字:

内容爬取