爬虫第一步遇到的坑

最近,跟着一个视频来学习,视频上爬取36kr这个网站,我也跟着写了,感觉挺简单的,使用Jsoup很快就拿到页面上的文字。谁知再分析网页获得自己需要的数据的时候,只能获得一个根标签,里面什么也没有,第一次爬虫遇到这样的问题,顿时懵逼了。问了几个人之后,自己明白了这是因为我要抓取的页面数据,它是使用react来实现的,也就是通过javaScript的库渲染完成的。到此我基本知道了原因和接下来怎么抓取。

Jsoup不支持解析javaScript动态渲染的页面,在这里选取了HtmlUnit来解析。

首先到官网(HtmlUnit)上下载jar包。

看下HtmlUnit的解析过程:

final WebClient webClient=new WebClient();
webClient.getOptions().setCssEnabled(false);//关闭css
webClient.getOptions().setJavaScriptEnabled(true);//这个要为true,false依然获取不到
final HtmlPage page=webClient.getPage("https://36kr.com/");

HtmlDivision htmlDiv =page.querySelector("#app");//获取第一个div
System.out.println(htmlDiv.asXml());
webClient.close();
setJavaScriptEnabled(true)设置为true之后,运行的时候会出现一些警告信息。

原文地址:https://www.cnblogs.com/yangms/p/9859042.html

时间: 2024-08-30 11:54:15

爬虫第一步遇到的坑的相关文章

【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对IP的检测.本文介绍的是利用Redis数据库实现的分布式爬虫,Redis是一种常用的菲关系型数据库,常用数据类型包括String.Hash.Set.List和Sorted Set,重要的是Redis支持主从复制,主机能将数据同步到从机,也就能够实现读写分离.因此我们可以利用Redis的特性,借助req

学习Python爬虫第一步,Bs4库

首先是安装BS4库 因为Python的pip真的很方便,所以一般不出意外,只需要一个pip就足以完成一个库的安装. pip install beautifulsoup4 名字很长不要记错名字呦. 想要利用爬虫获得我们想要的内容,就一定要学会一个解析HTML的库. 我们总不能用正则表达式,匹配出我们需要的内容,那任务量一定是巨大的,繁琐的,很少有人去那么做,除非你就是需要这个网页中特定的元素. 怎么使用BS4库? Bs4库和有些库还有一些不同,像我们学习爬虫一定要学习的requests库,我们只需

Python爬虫——第一个小爬虫01

Python小爬虫——贴吧图片的爬取 在对Python有了一定的基础学习后,进行贴吧图片抓取小程序的编写. 目标: 首先肯定要实现图片抓取这个基本功能 然后要有一定的交互,程序不能太傻吧 最后实现对用户所给的链接进行抓取 一.页面获取 要让python可以进行对网页的访问,那肯定要用到urllib之类的包.So先来个 import urllib urllib中有 urllib.urlopen(str) 方法用于打开网页并返回一个对象,调用这个对象的read()方法后能直接获得网页的源代码,内容与

手把手教你写电商爬虫-第一课 找个软柿子捏捏

话说现在基本上大家都在网上买东西,国家经济数据已经可以在网络购物的数据中略微窥见一二,再加上目前B2B行业的持续火爆,大有把所有交易搬到网上来的趋势,这个系列教程就来讲讲如果爬取这些大量的电商交易的数据. 工具要求:教程中主要使用到了 1.神箭手云爬虫框架  这个是爬虫的基础,2.Chrome浏览器和Chrome的插件XpathHelper 这个用来测试Xpath写的是否正确 基础知识:本教程中主要用到了一些基础的js和xpath语法,如果对这两种语言不熟悉,可以提前先学习下,都很简单 教程正式

Linux——搭建PHP开发环境第一步:mysql

原文链接:http://www.jb51.net/article/83647.htm 1.第一步就是看linu是否安装了mysql,经过rpm -qa|grep mysql查看到centos下安装了mysql5.1,那就开始卸载咯 2.接下来就是卸载mysql5.1了,命令:rpm -e mysql-libs --nodeps 3.yum中之后mysql5.1,安装还是5.1,现在就要去增加一个新的repo rpm -Uvh http://mirror.steadfast.net/epel/6/

第三 章、面向对象 第一步部分

一.类与对象的基本概念 类:抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法): 对象:是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性区分不同的对象. 类与对象的区别:类是对象的模板,对象是类的实例,类只有通过对象才可以使用,开发中应该先产生类,再产生对象.类不能直接使用,方法可以直接使用. 二.类与对象的定义 1.类的定义: 在JAVA中定义类,可以使用class关键字完成, 语法为: 1 class 类名称{ 2 属性(变量): 3 行为(方

yii 第一步

第一步:index.php // include Yii bootstrap filerequire_once(dirname(__FILE__).'/../../framework/yii.php');defined('YII_DEBUG') or define('YII_DEBUG',true); // create a Web application instance and run//Yii::createWebApplication()->run(); $configFile=dirn

标题优化是google海外推广的第一步吗

在很多站长的眼里,都认为标题优化是google推广的第一步,但真的是这样吗?下面具体分析分析其中的正确性. 1.网站标题应该对用户有足够的吸引力. 什么都有就是没有重点,网页标题好像一个人的头衔一样,如果你看到一张名片上印了十几个头衔,你会很鄙视这个人,而对于这样的网页,搜索引擎也不喜欢.所以,你的一个网页只要用一个主要的关键词写入标题中,如果一个意思有多个表达,可以适当列举几个.比如"网站运营-网站运营方案下载"这样还是可以的.搜索引擎也是根据网站标题和网站内容判定你的网站主要写的是

核心思想:用技术创造价值的第一步:定义价值点,也就是找到杠杆的支点(陈天桥是典范)

杠杆 技术本就是一种杠杆. 曾经,技术的草莽时期,是一个英雄辈出的年代.两个人可以创造 Unix,C 语言,一个人也可以发明 Linux,也可以写出 Foxmail.掌握了技术,就可能创造历史,那时技术的杠杆很高. 如今,是技术的成熟时期,个体英雄少了,更多是一种团队和集团军作战的时代.如果你是技术的绝世高手(精的极致),那你需要找到一支契合你技能的场景与队伍,加入进去.此时个人的技术杠杆也许不像曾经那么高 —— 能创造历史,但也许你们这个队伍还是有机会能创造历史. 前几年,Facebook 曾