网络爬虫异常文件处理
2016-12-12 12:02
225 查看
我们在爬取网页数据的时候常常会出现封IP的情况,导致数据下载不完整,成为脏数据,在清洗数据的时候,我们可以先对下载的异常文件进行单独分类,最后在读取异常文件中的源网址,重新下载。在采集数据的时候注意文件保存的格式具体如下图:<!--源网址-->+网页数据内容
![](https://img-blog.csdn.net/20161212120358585?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hhb3l1ZXlndw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
下图就是在清洗的时候整理处理的异常文件
![](https://img-blog.csdn.net/20161212120707949?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2hhb3l1ZXlndw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
具体代码如下:
下图就是在清洗的时候整理处理的异常文件
具体代码如下:
private void downloadDragGmp(HttpCall httpCall) { File file = new File("G:/fileRecord/药品GMP认证"); File files[] = file.listFiles();// 获取目录下的所有文件 HttpCallObj httpRes = null; for (File f : files) { String crawlWebsite = HtmlUtil.readWebsite(f.getAbsolutePath(), "UTF-8");// 获取源网址 if (crawlWebsite != null) { // 如果成功取出源网址,就把目标文件给剪切到其他目录(最好不要删除) String targetPath = WebConstant.cfdaSaveHtmlDirCopy + "/" + "药品GMP认证"; FileUtil.cutGeneralFile(f.getAbsolutePath(), targetPath); } try { httpRes = httpCall.getResponse(crawlWebsite, "POST"); String pageContent = new String(httpRes.getContent(), "UTF-8"); String savePath = generateSavaPath("药品GMP认证"); String fileName = f.getAbsolutePath().substring(f.getAbsolutePath().lastIndexOf("\\") + 1); HtmlUtil.saveHtmlFile(savePath + fileName, pageContent, "UTF-8"); } catch (IOException e) { e.printStackTrace(); } } }读取源网址如下
public static String readWebsite(String filePath, String charset) { File f = new File(filePath); FileInputStream fis = null; InputStreamReader isr = null; try { fis = new FileInputStream(f); // 读取原文件 if (StrUtil.isBlank(charset)) { isr = new InputStreamReader(fis); } else { isr = new InputStreamReader(fis, charset); } BufferedReader br = new BufferedReader(isr); String website = br.readLine(); int beginIndex = website.indexOf("<!--"); int endIndex = website.indexOf("-->"); if (beginIndex != -1) website = website.substring(beginIndex + 4, endIndex).trim(); return website; } catch (Exception e) { LOG.error(e); } finally { try { if (isr != null) { isr.close(); isr = null; } } catch (Exception e) { } finally { try { if (fis != null) { fis.close(); fis = null; } } catch (Exception e) { } } } return ""; }
相关文章推荐
- mysql: can't open myi文件 异常的处理
- sping 配置文件信息及相应异常处理
- 7.Strut国际化动态文本(声明式处理异常,可以拥有多个占位符):资源文件
- HDFS 拷贝本地文件至HDFS时的异常[INFO fs.FSInputChecker: Found checksum error]处理方法
- 字符流_字节流_IO异常处理_文件的续写_拷贝文本_缓冲流
- 大文件上传之异常处理
- 请求错误[Python]网络爬虫(三):异常的处理和HTTP状态码的分类
- java学习笔记7 - Spring mvc 统一异常处理和静态文件的配置
- 7.Strut国际化动态文本(声明式处理异常):资源文件
- 黑马程序员_字符流_字节流_IO异常处理_文件的续写_拷贝文本_缓冲流
- mysql: can't open myi文件 异常的处理
- 用poi处理excel文件异常:java.io.IOException: Invalid header signature; read 2338042707334752323
- VC打开/添加文件异常处理
- 异常删除oracle数据文件的处理办法
- QTP打开文件、保存文件时提示异常出错强制关闭程序处理办法
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
- Java中复制文件和文件夹的操作,异常未处理,无注释-_-!
- ASP 上传文件时,发生了未处理的异常 007 asp 0104不允许操作
- Java基础之IO流,创建文件并写入内容与IO异常的标准处理方法
- [Python]网络爬虫(三):异常的处理和HTTP状态码的分类