2月12日学习记录

1,背诵单词:loaf 一个面包   applicable可应用 (实施 )的   motion 运动,提议   diploma毕业文凭 ,学位证书  contrast 对比,对照   trend倾向 ,趋势  honorable可敬的    transition转变,变迁   appendix附录,附属物  objection 反对 ,异议 ,不喜欢  inflation 通货膨胀   substantial 实质的 ; 相当的   hasty匆忙的 ,仓促的  interpret 解释 ,说明   fraction 碎片 ,小部分  romance  传奇 ,爱情故事  rectangle 长方形,矩形   owl 猫头鹰  denote 表示 ,意味着   editor 编辑,编者  fruitful 多产的 concede 承认 退让   jewelry 珠宝  

2,做爬取北京信件网页内容存入文件

  今天通过学习解决了用htmlunit获取每条信件的编号,拼接为url存入url_list文件

通过htmlunit爬取信件编号

package com.lq.webmagic;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.HtmlDivision;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDivElement;
import com.gargoylesoftware.htmlunit.javascript.host.html.HTMLElement;
import com.lq.file.LocalFile;
import com.lq.file.StringHandle;

public class HtmlUnit
{
    static List<String> lines_zi=new ArrayList<String>();
    static List<String> lines_jian=new ArrayList<String>();
    static List<String> lines_tou=new ArrayList<String>();
    static String line;
    public static void Value_start()
    {
        WebClient webClient=new WebClient();
        try {
            webClient.getOptions().setActiveXNative(false);   //设置是否允许本地ActiveX组件
            webClient.getOptions().setJavaScriptEnabled(true);//启用/禁用JavaScript的支持。默认情况下,这个属性被启用。
            webClient.getOptions().setDoNotTrackEnabled(true);//启用/禁用“不跟踪”的支持。默认情况下,这个属性被禁用。
            webClient.getOptions().setThrowExceptionOnScriptError(false);//更改此Web客户端时出现脚本错误的行为。
            webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);//指定是否也不例外将在一个失败的状态代码的情况下被抛出。成功的状态码的范围是200-299。默认值为true。
            webClient.getCache().setMaxSize(100);  //获取当前正在使用的缓存。
            webClient.setAjaxController(new NicelyResynchronizingAjaxController());//设置当前AJAX控制器 NicelyResynchronxxx():这AjaxController重新同步调用从主线程中调用。这个想法是,异步AJAX调用直接响应于用户动作(因此在“主”线程,而不是在后台任务的线程)进行直接对用户有用的。轻松拥有一个可测试的状态,这些调用同步进行。
            webClient.getOptions().setCssEnabled(false);//不支持css
            webClient.getOptions().setUseInsecureSSL(true);//如果设置为true,客户端将接受连接到任何主机,而不管他们是否有有效证件或没有。当你试图连接到使用过期或损坏的证书的服务器,这是特别有用的。
            webClient.getCookieManager().setCookiesEnabled(true); //返回此web客户端使用cookie管理器。启用/禁用cookie支持。 Cookies是默认启用
            webClient.getCache().clear();
            webClient.setRefreshHandler(new ImmediateRefreshHandler());//设置每当刷新触发所使用的处理程序 这刷新处理程序后立即刷新指定的页面,使用指定的URL,而忽略了等待时间。
            webClient.getOptions().setTimeout(2*1000);    //设置WebConnection的超时。设置为2秒
            webClient.setJavaScriptTimeout(600*1000);   //设置了一个脚本所允许被终止之前执行的毫秒数
            webClient.waitForBackgroundJavaScript(60*1000);//安排通过window.setTimeout,window.setInterval或异步的XMLHttpRequest执行JavaScript的任务。决定了后台任务等待(毫秒)延迟
            HtmlPage page = webClient.getPage("http://www.beijing.gov.cn/hudong/hdjl/com.web.search.mailList.flow");
            HtmlElement a=page.getElementByName("nextPage");
            int j=1,lastj=0;
            StringHandle sh=new StringHandle();
            List<String> lastInfo_zi=new ArrayList<String>();
            List<String> lastInfo_jian=new ArrayList<String>();
            List<String> lastInfo_tou=new ArrayList<String>();

            while(j!=314)
            {
                String nowInfo=page.asXml();
                String re="letterdetail\\(‘.*?‘,‘AH[0-9]{11}‘\\)";
                List<String> infoList_zi=sh.getExpString(re, nowInfo);
                int g_size_zi=infoList_zi.size();
                if(sh.StringListSameOutStringList(infoList_zi, lastInfo_zi).size()!=g_size_zi&&g_size_zi==6)
                {
                    for(int i=0;i<g_size_zi;i++)
                    {
                        String theWeb=sh.getExpToString("AH[0-9]{11}", infoList_zi.get(i));
                        System.out.println(theWeb);
                        lines_zi.add(theWeb);
                        System.out.println("-------------------------------------------");

                        if(i==g_size_zi-1)
                        {
                            lastInfo_zi=infoList_zi;
                            System.out.println(j);
                            j++;
                            break;
                        }

                    }
                    page=a.click();
                }
            }

            LocalFile localFile=new LocalFile();
            try {
                localFile.list_local(lines_zi,"xj_list.txt");
            } catch (Exception e) {
                e.printStackTrace();
            }
        }catch (FailingHttpStatusCodeException | IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally{
            webClient.close(); //
        }

    }
    public static void main(String[] args) {
        Value_start();
    }

}

保存url到文件

public void list_local(List<String> lists,String files) throws Exception// xieru xinjian de liebiao
    {
        File file=new File("outfile"+File.separator+files);
        if (!file.getParentFile().exists())
        {
            file.getParentFile().mkdirs();
        }
        file.delete();
        FileWriter local_file=new FileWriter(file);
        BufferedWriter output=new BufferedWriter(local_file);
        //Writer output=new FileWriter(local_file,true);
        for(String list:lists){
            String url="http://www.beijing.gov.cn/hudong/hdjl/com.web.consult.consultDetail.flow?originalId="+list.toString();
            String contents=url+",\n";
            output.write(contents);
        }
        output.close();
    }

3,遇到的问题:我想读取存入文件的每一个url用webmagic爬取每条信件的各个信息,但是爬取一条信件可以爬取,但是循环爬取多个页面不知道怎么爬取

4,明天计划:解决用webmagic爬取多个页面,用spark进行查重操作。

原文地址:https://www.cnblogs.com/lq13035130506/p/12301748.html

时间: 2024-10-06 00:28:00

2月12日学习记录的相关文章

2019年6月12日——开始记录并分享学习心得——Python3.7中对列表进行排序

Python中对列表的排序按照是排序是否可以恢复分为:永久性排序和临时排序. Python中对列表的排序可以按照使用函数的不同可以分为:sort( ), sorted( ), reverse( ). 下边具体介绍一下这三种函数的使用: 1. 使用sort( )对列表进行永久性排序 my_love = ['sleep', 'weekend', 'games', 'learning', 'travel'] # 定义一个列表my_love.sort() # 对列表按照字母顺序永久性排序print(my

19年12月9日学习记录

一   安装图形化界面centos  设置光驱 二   配置网卡 自动回去ip地址 划分区 dhclient 自动获取IP地址 IP addr 查看IP地址 注意英文大小写 ping -c (显示数据条数) 网站 w3c {www.baidu.com} vi /etc/sysconfig/network-scripts/ifcfg-....   设置网卡 配置IP 网关 子网掩码 dns    ONBOOT= yes   BOOTPROTO=dhcp修改为 BOOTPROTO=static sy

9月6日学习记录

早晨学习了网易云课堂的<Python Web全栈工程师>课程的预习课程<做一个静态网页>.自己手动过了一遍视频教程的代码,过程很成功,明天做这个系列的课后作业.下午,学习了中国大学MOOC课程的<Python网络爬虫与信息提取>.主要是跟着视频重新过了一遍<实战2:股票交易信息的爬取>,除了有个别的问题还需要再搞清楚一点之外,大部分的流程都明白了.明天的任务是再分别分析一下这周课程的两个实战项目.越来越清晰的感觉到自己的基础知识的缺乏.毕竟,到现在为止才学了

7月16日学习记录

今天学习了html基础知识,认识标签,学习表单,基本能看懂网页基本中语句.明天计划学习CSS. 1.大框架 <html> <head>  放标题等 </head> <body>    网站的正文 </body> </html> 2.标签大都是成对出现的,例外:<br/>(回车)&nbsp(空格)<hr/>(横线). 3.文本中常用的标签:strong(加粗)em(斜体)q blockquote(引用)等

1月5日学习记录

1.首先对数据的分析 我觉得首先要了解通用的传统方法是什么,在了解传统方法的过程中,就会对问题就更深的理解. 2.VAE学习 https://blog.csdn.net/Avery123123/article/details/103283558(待看) http://cjc.ict.ac.cn/online/onlinepaper/yfn-201916192006.pdf 这个也介绍了多种类型的VAE.(待看) https://www.cnblogs.com/HYWZ36/p/11416710.

2月1日学习记录

1,背诵英语单词20个左右: shell:贝,卵    delicate:纤弱的,熟练的  treat:威胁,恐吓  utmost:极度的,最大的  wit:机智  stool:凳子  strictly:严格的,严厉的  facility:设施  recorder:录音机       similarly:相似的,类似的  drift:流动,随意移动  helmet:头盔,钢盔  summarize:总结,概述  terminal:终结,终端  utilize:利用,使用  shepherd:牧羊

2月2日学习记录

1,背诵单词:substitute:替代者,替代物  valid:有效的  wax:蜡,蜡状物  stubborn:顽固的,固执的  abstract:抽象的  ankle:踝关节,踝  occasionally:偶尔  trace:踪迹   export:出口,输出  scan:扫描,细看  stale:陈腐的,不新鲜的  venture:冒险行事  amongst:处在.....中  calculate:计算,估计  victim:牺牲者,受害者 aluminium:铝  explode:使

2月3日学习记录

1,背诵单词:bay:海湾  earn:赚的  cheerful:欢乐的  cash:现金  basin:盆,盆地  attain:达到  effort:努力  cassette:盒式录音带  civilization:文明  cock:公鸡  cabinet:内阁,橱柜  copper:铜币  fierce:凶猛的  fame:名声  cheque:支票  communism:共产主义  emit:发出  curtain:窗帘  conversation:会话 2,学习Python爬虫的Scr

2月5日学习记录

1,背诵单词:outlook:前景,展望  operate:做手术  peach:桃子  rank:排列  oxygen:氧气  overseas:海外的  particular:特别的  paste:粘贴  patch:眼罩  pack:包裹  participate:参加  overtake:追上  modern:现代的  merchant:商人  path:小路  likewise:同样的  ministry:部门  Pacific:太平洋  minority:少数 2,学习spark视频