1> 关键信息通过ajax请求来获取,最好是需要带有临时token作为参数的请求。网站在发布的时候需要做javascript代码压缩和混淆,这样程序人员就很难通过阅读代码或者捕获请求来建立模拟采集。这里说的关键信息,是指那种对业界同行来说比较重要的信息,比如说价格等。除了这些关键信息以为的信息就最好不要用ajax请求来显示了,那样不利于SEO优化,搜索引擎的蜘蛛也不能模拟如此复杂ajax请求。另外如果有分页,一定要用ajax请求来分页。具体例子可以看看 花瓣网 的首页。至于通过表单请求来获取数据,有些采集器已经能模拟带session或者cookie信息的表单请求了,至少Jsoup是可以做到的。
2> 关键信息通过来显示。这种是技术含量比较低的防御了,唯一的好处是有利于SEO优化,因为通过alt来携带更加丰富的信息。京东的商品价格就是用来显示的,采集器采集到的价格信息需要做OCR文字识别,如果在的格式做些手脚或者加入混淆信息,那别人采集过去的信息准确度就会大大降低。另外通过来显示的另外一个好处就是可以把服务器独立出来,然后通过防火墙设置来只允许来自已知域名的请求。
3> 网页代码结构化混淆。简单的说就是关键信息的显示不是规律性的。这种做法对网站开发人员要求比较高。毕竟html是一种结构化的语言,想要通过不规律的html标签勾勒出美观的结构化界面是比较难的,但不是不可能。比如说同一张页面的上商品价格列表,你可以随机用div,li,span等这些文字标签来封装,然后通过定制css来达到规范布局。不同的页面(分页)上价格列表,最顶层的div的id或者class不一样,而且跟其他页面的的id无规律可循。这样做可以让采集程序很难发掘到采集的规律,那么采集的难度就大大加大了,即使能采集,效率也会相当低下。这种做法基本上不影响SEO优化。
不过话说回来,不管你采取哪种防御措施,想防住真正的高手是不可能的,只要能防住98%的人就可以了。剩下的那2%,你如果发现你的数据被采集了,就采取法律措施吧。前段时间大众点评起诉“食神摇一摇”抄袭数据,就是一个很好的例子。
您好,这样的:
解析HTML文档的Java程序
下面是一个解析HTML字符串,网络上下载的HTML文件,以及本地文件系统中的HTML文件的完整的Java程序。你可以使用Eclipse IDE或者别的IDE甚至命令来运行这个程序。在Eclipse里面则很简单,拷贝这份代码,新建一个Java工程,在src包上右键并粘贴进去就可以了。Eclipse会去创建正确的包及同名的Java源文件的,因此工作量最小。如果你已经有一个Java示例工程了,那么仅需一步就可以了。下面的这个Java程序展示了解析及遍历HTML文件的三个不同例子。第一个例子中,我们直接解析了一个内容为HTML的字符串,第二个例子中我们解析了一个从URL中下载的HTML文件,第三个中我们从本地文件系统中加载了一个HTML文档并进行解析。第一和第三个例子中都用到了parse方法来获取一个Document对象,你可以查询它来提取出任何的标签值或者属性值。第二个例子中,我们用到了Jsoupconnect方法,它会去创建URL的连接,下载HTML并进行解析。这个方法也会返回Document,它可以用于后续的查询及获取标签或者属性的值。
import javaioIOException;
import orgjsoupJsoup;
import orgjsoupnodesDocument;
import orgjsoupnodesElement;
/
[] Java Program to parse/read HTML documents from File using Jsoup library
[] Jsoup is an open source library which allows Java developer to parse HTML
[] files and extract elements, manipulate data, change style using DOM, CSS and
[] JQuery like method
[]
[] @author Javin Paul
[]/
public class HTMLParser{
public static void main(String args[]) {
// Parse HTML String using JSoup library
String HTMLSTring = "<!DOCTYPE html>"
+ "<html>"
+ "<head>"
+ "<title>JSoup Example</title>"
+ "</head>"
+ "<body>"
+ "|[b]HelloWorld[/b]"
+ ""
+ "</body>"
+ "</html>";
Document html = Jsoupparse(HTMLSTring);
String title = htmltitle();
String h1 = htmlbody()getElementsByTag("h1")text();
Systemoutprintln("Input HTML String to JSoup :" + HTMLSTring);
Systemoutprintln("After parsing, Title : " + title);
Systemoutprintln("Afte parsing, Heading : " + h1);
// JSoup Example 2 - Reading HTML page from URL
Document doc;
try {
doc = Jsoupconnect(">
问题:大侠们我想问两个Android开发使用jsoup解析html的相关问题
回答:第一个问题帮你解决了;第二个问题很简单(但你用错了),但没有你的这个htm文件,没有修改测试
superonCreate(savedInstanceState);TextView txt = new TextView(this);
InputStream input;
try {
input = getResources()getAssets()open("temp04_assets/txt01htm");
int buffersize = inputavailable();// 取得输入流的字节长度
byte buffer[] = new byte[buffersize];
inputread(buffer);// 将数据读入数组
inputclose();// 读取完毕后要关闭流。
String txthtml = EncodingUtilsgetString(buffer, "UTF-8");// 设置取得的数据编码,防止乱码
Document doc = Jsoupparse(txthtml);
Element infoTable = docgetElementsByAttributeValue("class",
"table002")first();
Elements tableLineInfos = infoTableselect("tr");
for (Element lineInfo : tableLineInfos) {
String lineInfoContent = lineInfoselect("td")last()text()
trim();
txtsetText(lineInfoContent);
setContentView(txt);
}
} catch (IOException err) {
errgetStackTrace();
}
总结一下Jsoup提供的方法:
获取元素的有:
getElementById(String id)
getElementsByTag(String tag)
getElementsByClass(String className)
getElementsByAttribute(String key)
siblingElements(), firstElementSibling(), lastElementSibling(); nextElementSibling(), previousElementSibling()
parent(), children(), child(int index)
获取元素数据:
attr(String key) 获取属性
attr(String key, String value) 设置属性
attributes() 获取所有属性
id(), className() and classNames()
text() 获取文字内容
text(String value) 设置文字内容
html() 获取html内容
html(String value) 设置html内容
outerHtml()
data() 获取类似script,style的数据内容
tag() and tagName()
*** 作HTML内容:
append(String html), prepend(String html)
appendText(String text), prependText(String text)
appendElement(String tagName), prependElement(String tagName)
html(String value)
我们这款沙发是采用最高端的科技制造而成,d簧的d性抗压力都是最高标准。
而且海绵质量也特别过关,定制的时候都是高端产品,坐到沙发上的时候,d性很足,也不会她坐下去的时候舒适度真好,经过无数次实践验证过的,可以放心使用。
这几天正在研究。废话不多说,直接上代码,自己研究的,通过迭代抓取。pageList就是抓取的分页页面的全部链接地址 。
其中Document doc = NetUtilsgetDocument(url);是jsoup抓取页面的基本 *** 作。
public class HtmlAnalsysTest3 {
static String url = ">
以上就是关于如何防止网站关键数据被人恶意采集全部的内容,包括:如何防止网站关键数据被人恶意采集、java中.html文件和.java文件的用途及运行环境、大侠们我想问两个Android开发使用jsoup解析html的相关问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)