关于java htmlutil 爬虫 爬取中国移动通话记录详单 大牛进

caoheike 2017-04-25 12:53:32
以下是我的测试代码。 根据元素获取图片保存到本地,然后scanner输入验证码之后模拟提交。但是 如果说 验证码输入的位数不对,还会给我返回 验证码必须为4位
如果按照我下载保存的验证码 去输入没有任何提示了,打印的页面还是 登陆页面。
所以 小弟不知道是因为验证码输入错了。 还是因为这种方法不行?求指教

String phoneNo = "18220834780";
String passwords = "xxx";
String validateCodes = null;
// 5、模拟用户登录
final WebClient webClient = new WebClient();
// 1.获取某个待测页面
final HtmlPage page = webClient.getPage("https://sn.ac.10086.cn/login");

System.out.println(page.getTitleText() + "---------------------");

HtmlForm form = page.getForms().get(0);

HtmlTextInput username = (HtmlTextInput) form.getInputByName("userName");
System.out.println(username);

HtmlPasswordInput password = (HtmlPasswordInput) form.getInputByName("password");
System.out.println(password);
HtmlTextInput verifyCode = (HtmlTextInput) form.getInputByName("verifyCode");
username.setValueAttribute(phoneNo);
password.setValueAttribute(passwords);

DomNodeList<DomNode> iList = page.querySelectorAll(".loginPageBtn2013");
HtmlImage valiCodeImg = (HtmlImage) page.getElementById("verifyImg");
ImageReader imageReader = valiCodeImg.getImageReader();
BufferedImage bufferedImage = imageReader.read(0);

BufferedImage inputbig = new BufferedImage(256, 256, BufferedImage.TYPE_INT_BGR);
Graphics2D g = (Graphics2D) inputbig.getGraphics();
g.drawImage(bufferedImage, 0, 0, 100, 100, null); // 画图
g.dispose();
inputbig.flush();

File file2 = new File("e:/"); // 此目录保存缩小后的关键图
if (file2.exists()) {
System.out.println("多级目录已经存在不需要创建!!");
} else {
// 如果要创建的多级目录不存在才需要创建。
file2.mkdirs();
}
String name = "asasdas.png";
String fname = name.substring(0, name.lastIndexOf("."));// 新名字
ImageIO.write(inputbig, "jpg", new File("e:/" + fname + ".jpg")); // 将其保存在C:/imageSort/targetPIC/下
System.out.println("请输入验证码");
Scanner scanner = new Scanner(System.in);

verifyCode.setValueAttribute(scanner.next());
HtmlPage retPage = ((DomElement) iList.get(0)).click();
System.out.println(retPage.asXml());
...全文
487 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复
爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库、JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧