一:工程概况

注意:

二:涉及到的类

package com.bigdata.crawler;

import java.io.IOException;
import java.util.List; import org.apache.commons.io.IOUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.interactions.Actions; import com.bigdata.util.DriverCommon; public class CnzzCrawler {
private String baseUrl ="http://new.cnzz.com/v1/login.php?siteid=1262437219";
private String password = "******";//查看密码 private ChromeDriver driver;
public CnzzCrawler() {
}
public CnzzCrawler(ChromeDriver driver) {
super();
this.driver = driver;
}
public void start(){
// 登入网站
driver.get(baseUrl);
// 输入密码
driver.findElement(By.id("password")).sendKeys(password); try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// 点击登入 html body div.pwdmain div.pwdcheck div.pwdcheck4 div form div img
// body > div.pwdmain > div.pwdcheck > div.pwdcheck4 > div:nth-child(1) > form > div:nth-child(2) > img driver.findElement(By.cssSelector("div.pwdcheck4 > div:nth-child(1) > form > div:nth-child(2) > img")).click();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Document doc = Jsoup.parse(driver.getPageSource());
//System.out.println(doc);
//html.cnzz body div#userLoginHeader.userLoginHeader div.section div#rightContainer.rightContainer div#dashboardRootEl.dashboard ul#module_container.module.ui-sortable li.module_data0.moduleTwo table tbody tr.bg-white td.url div a.blue12
Elements elements= doc.select("a.blue12"); for(Element e: elements ){
String string = e.attr("href");
System.out.println(string);
}
driver.close();
}
public static void main(String[] args) throws IOException {
System.setProperty("webdriver.chrome.driver", DriverCommon.getDriverName(DriverCommon.getOSType()));
//System.setProperty("webdriver.firefox.driver", "D:/Program Files (x86)/Mozilla Firefox/firefox.exe"); ChromeDriver driver = new ChromeDriver();
//FirefoxDriver driver = new FirefoxDriver();
new CnzzCrawler(driver).start();
} }

  

package com.bigdata.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class DriverCommon {
/**
* 获取操作系统类型
*/
public static String getOSType(){
String temp = System.getProperty("os.name");
if(temp.contains("Mac")){
return "mac";
}else if(temp.contains("Win")){
return "win";
}else{
try {
Process process = Runtime.getRuntime().exec("getconf LONG_BIT");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String s = bufferedReader.readLine();
if(s.contains("64")){
return "linux64";
}else{
return "linux32";
}
} catch (IOException e) {
e.printStackTrace();
return "linux64"; //默认Linux64
}
}
} /**
* 获取浏览器驱动
* @param os
* @return
* @throws IOException
*/
public static String getDriverName(String os) throws IOException{
if(os == null)
return null;
switch (os) {
case "win":
return "chromedriver.exe";
case "mac":
return "chromedriver_mac";
case "linux_32":
return "chromedriver_linux32";
case "linux_64":
default:
return "chromedriver_linux64";
}
}
}

  

记一次爬需要登录之后才能爬取数据的demo的更多相关文章

  1. PHP Curl模拟登录并抓取数据

    使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据.具体实现的流程如下(个人总结): 1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息: ...

  2. PHP获取cookie、Token、模拟登录、抓取数据、解析生成json

    本文介绍使用PHP获取cookie,获取Token.以及模拟登录.然后抓取数据.最后解析生成json的的过程. 0. 设置Cookie路径 set_time_limit(0); //使用的cookie ...

  3. Python登录豆瓣并爬取影评

    上一篇我们讲过Cookie相关的知识,了解到Cookie是为了交互式web而诞生的,它主要用于以下三个方面: 会话状态管理(如用户登录状态.购物车.游戏分数或其它需要记录的信息) 个性化设置(如用户自 ...

  4. Scrapy 通过登录的方式爬取豆瓣影评数据

    Scrapy 通过登录的方式爬取豆瓣影评数据 爬虫 Scrapy 豆瓣 Fly 由于需要爬取影评数据在来做分析,就选择了豆瓣影评来抓取数据,工具使用的是Scrapy工具来实现.scrapy工具使用起来 ...

  5. 记一次HTTPClient模拟登录获取Cookie的开发历程

    记一次HTTPClient模拟登录获取Cookie的开发历程 环境: ​ springboot : 2.7 ​ jdk: 1.8 ​ httpClient : 4.5.13 设计方案 ​ 通过新建一个 ...

  6. 运用cookie登陆人人网爬取数据

    浏览器访问WEB服务器的过程 在用户访问网页时,不论是通过URL输入域名或IP,还是点击链接,浏览器向WEB服务器发出了一个HTTP请求(Http Request),WEB服务器接收到客户端浏览器的请 ...

  7. python高级—— 从趟过的坑中聊聊爬虫、反爬以及、反反爬,附送一套高级爬虫试题

    前言: 时隔数月,我终于又更新博客了,然而,在这期间的粉丝数也就跟着我停更博客而涨停了,唉 是的,我改了博客名,不知道为什么要改,就感觉现在这个名字看起来要洋气一点. 那么最近到底咋不更新博客了呢?说 ...

  8. Python使用Scrapy框架爬取数据存入CSV文件(Python爬虫实战4)

    1. Scrapy框架 Scrapy是python下实现爬虫功能的框架,能够将数据解析.数据处理.数据存储合为一体功能的爬虫框架. 2. Scrapy安装 1. 安装依赖包 yum install g ...

  9. python模拟浏览器爬取数据

    爬虫新手大坑:爬取数据的时候一定要设置header伪装成浏览器!!!! 在爬取某财经网站数据时由于没有设置Header信息,直接被封掉了ip 后来设置了Accept.Connection.User-A ...

随机推荐

  1. GPU编程自学6 —— 函数与变量类型限定符

    深度学习的兴起,使得多线程以及GPU编程逐渐成为算法工程师无法规避的问题.这里主要记录自己的GPU自学历程. 目录 <GPU编程自学1 -- 引言> <GPU编程自学2 -- CUD ...

  2. 我也说说Emacs吧(3) - 文件基本操作

    Spacemacs文件基本操作 有了前两讲的积累,我们知道了: 1. 我们既要学习emacs的操作,也要学习vi的操作 2. emacs是一个可扩展的平台,我们并不是从头配置,而是使用一套成熟的集成方 ...

  3. ios Label TextFile 文本来回滚动 包括好用的三方

    通常显示不够了,比如八个字.只能显示6个字 .产品要求 来回滚动 下面有两种 方法 : 一种UIScrollView  一种 View动画  如果不能满足你  请点击这个 https://github ...

  4. Django项目部署(阿里云)(1)--基本功能实现

    新博客地址:http://muker.net/django-server.html 手头需要部署一个Django项目,前面的博客也因为偷懒也没有部署,这里记录一下部署过程.ps:其实网上比较靠谱的说明 ...

  5. hdu1575 Tr A 矩阵初识

    A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973.  Input数据的第一行是一个T,表示有T组数据. 每组数据的第一行有n(2 <= n <= ...

  6. BZOJ3566 SHOI2014 概率充电器 【概率DP】

    BZOJ3566 SHOI2014 概率充电器 Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器: “采用全新纳米级加工技术,实现元件与导线能 ...

  7. 出让执行权:Task.Yield, Dispathcer.Yield

    Yield 这个词很有意思,叫做“屈服”“放弃”“让步”,字面意义上是让出当前任务的执行权,转而让其他任务可以插入执行.Task.Dispatcher.Thread 都有 Yield() 方法,看起来 ...

  8. 接口测试框架——第三篇:发送(requests)

    把下面的代码放在requests_module.py文件中 # coding: utf-8 import requests import logging from requests.exception ...

  9. Sprint第一个冲刺(第五天)

    一.Sprint介绍 今天我们主要做的是修复乱码,完善项目. 任务进度: 二.Sprint周期 看板: 燃尽图:

  10. pyqtree

    pyqtree module API Documentation Classes class Index The top spatial index to be created by the user ...