近来工作不繁忙,五点钟就准时下班了,晚上回家总想折腾点什么,在一个月黑风高的晚上,突发奇想,感觉写一个安卓上面可以用用的二次封装的抓数据框架,经过对比,我选择了jsoup,基于jsoup框架进行简单的二次封装(别问我为什么选择jsoup,问就是只知道这个框架)。说干就干,我拿起了我500块钱的机械键盘,花了两个晚上,完成了这个框架。(U1S1,我是为了抓小姐姐图片才写的这个框架)
1.引入jsoup库
dependencies {
api "org.jsoup:jsoup:1.13.1"
}
2.定义好注解的内容
注解有两个,一个是作用于数据的实体类,另一个是作用于数据字段。
A.作用于数据实体类(HtmlElementField)
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface HtmlElementField {
/**
* element获取的类型
*
* @return
*/
int[] types();
String[] typenames();
/**
* 是否是属性的值
*
* @return
*/
boolean isAttr() default false;
/**
* 属性的名称
*
* @return
*/
String attrName() default "";
/**
* 是否是数组
*
* @return
*/
boolean isArray() default false;
/**
* 是否在body寻找
*
* @return
*/
boolean isBody() default true;
/**
* 是否是BaseElementData对象,
* true表示的是BaseElementData对象或者List<BaseElementData>,
* false表示的是String或者List<String>
*
* @return
*/
boolean isMultiElementData() default false;
Class<?> filedModelClazz() default Object.class;
}
注解的说明:
types 数组,获取element的类型,GET_ELEMENT_BY_ID 根据id获取element,GET_ELEMENTS_BY_CLASS 根据class名获取所有的element,GET_ELEMENTS_BY_TAG 根据tag名获取所有的element
typenames 数组,id名/class名/tag名
isAttr 值是否是从属性里面获取,false表示拿text
attrName 属性名,默认为""
isArray 返回的结果是不是字符串数组,true返回的是List<String>,false返回的是String
isBody 是否在body搜索,true表示是在body搜索,false表示在head搜索
isMultiElementData 返回的数据是否是对象(对象需要全部都是String类型),true表示的是对象,false表示的是String,是否是数组需要看isArray的值
filedModelClazz 对象的class,用于获取类名
B.作用于数据字段(HtmlElementModelKeyname)
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface HtmlElementModelKeyname {
/**
* 数据的name
*
* @return
*/
String keyname();
/**
* 获取指定标签的attrs,""表示获取text,其他值表示获取属性
*
* @return
*/
String attrname();
}
注解的说明:
attrname 要获取的属性数组,获取指定标签的attrs,""表示获取text,其他值表示获取属性
keyname 组装数据的name
3.创建字段数据的类(MultiElementData)
主要用于生成json字符串。
public class MultiElementData {
public String[] keys;
public String[] values;
public MultiElementData(String[] keys, String[] values) {
this.keys = keys;
this.values = values;
}
@Override
public String toString() {
StringBuffer stringBuffer = new StringBuffer("{");
try {
boolean isNeedDeletePoint = false;
for (int i = 0; i < keys.length; i++) {
stringBuffer.append("\"");
stringBuffer.append(keys[i]);
stringBuffer.append("\"");
stringBuffer.append(":");
stringBuffer.append("\"");
stringBuffer.append(values[i]);
stringBuffer.append("\"");
stringBuffer.append(",");
isNeedDeletePoint = true;
}
if (isNeedDeletePoint) {
stringBuffer.deleteCharAt(stringBuffer.length() - 1);
}
} catch (Exception e) {
e.printStackTrace();
}
stringBuffer.append("}");
return stringBuffer.toString();
}
}
4.创建保存注解信息的实体类
A.HtmlElementFieldModel
public class HtmlElementFieldModel {
public Field field;
public HtmlElementField annotation;
}
B.HtmlElementModelKeynameModel
public class HtmlElementModelKeynameModel {
public Field field;
public HtmlElementModelKeyname annotation;
}
5.定义获取element的方式(JsoupConstans)
public class JsoupConstans {
//根据id获取element
public static final int GET_ELEMENT_BY_ID = 0;
//根据class获取element
public static final int GET_ELEMENTS_BY_CLASS = 1;
//根据tag获取element
public static final int GET_ELEMENTS_BY_TAG = 2;
//根据select语句获取element
public static final int GET_ELEMENTS_BY_ATTRVALUE = 3;
}
6.编写一个jsoup的帮助类(JsoupUtil)
用于操作jsoup的api
public class JsoupUtil {
private Document document;
private String url = "";
//0表示在线html,1代表本地的html文件
private int type = 0;
private Element body;
private Element head;
private String title;
public JsoupUtil(String url) throws Exception {
this(url, 0);
}
public JsoupUtil(String url, int type) throws Exception {
this.url = url;
this.type = type;
if (type == 0) {
init(url);
} else {
initLocal(url);
}
}
private void initLocal(String localpath) throws IOException {
File file = new File(localpath);
document = Jsoup.parse(file, "UTF-8");
initHtmlElement();
}
private void init(String url) throws Exception {
document = Jsoup.connect(url).get();
initHtmlElement();
}
/**
* 获取body,head,title
*/
private void initHtmlElement() {
head = document.head();
body = document.body();
title = document.title();
}
/**
* 根据id获取节点
*
* @param id
* @param isBody
* @return
*/
public Element getElementTypeById(String id, boolean isBody) {
if (isBody) {
return getBodyElementById(id);
} else {
return getHeadElementById(id);
}
}
/**
* 根据id获取节点
*
* @param id
* @param isBody
* @return
*/
public Elements getElementsTypeById(String id, boolean isBody) {
if (isBody) {
return getBodyElementsById(id);
} else {
return getHeadElementsById(id);
}
}
/**
* 根据class获取节点
*
* @param className
* @param isBody
* @return
*/
public Elements getElementsTypeByClass(String className, boolean isBody) {
if (isBody) {
return getBodyElementsByClass(className);
} else {
return getHeadElementsByClass(className);
}
}
/**
* 根据tag获取节点
*
* @param tagName
* @param isBody
* @return
*/
public Elements getElementsTypeByTag(String tagName, boolean isBody) {
if (isBody) {
return getBodyElementsByTag(tagName);
} else {
return getHeadElementsByTag(tagName);
}
}
/**
* 根据select语句来获取elements
*
* @param selectStr
* @param isBody
* @return
*/
public Elements getElementsBySelectStr(String selectStr, boolean isBody) {
if (isBody) {
return getBodyElementsBySelectStr(selectStr);
} else {
return getHeadElementsBySelectStr(selectStr);
}
}
/**
* 获取全部body节点
*
* @return
*/
public Elements getAllElementsType(boolean isBody) {
if (isBody) {
return getBodyAllElements();
} else {
return getHeadAllElements();
}
}
/**
* 根据id获取body节点
*
* @param id
* @return
*/
private Element getBodyElementById(String id) {
if (body == null) {
return null;
}
return body.getElementById(id);
}
/**
* 根据id获取body节点
*
* @param id
* @return
*/
private Elements getBodyElementsById(String id) {
if (body == null) {
return null;
}
return new Elements(body.getElementById(id));
}
/**
* 根据class获取body节点
*
* @param className
* @return
*/
private Elements getBodyElementsByClass(String className) {
if (body == null) {
return null;
}
return body.getElementsByClass(className);
}
/**
* 根据tag获取body节点
*
* @param tagName
* @return
*/
private Elements getBodyElementsByTag(String tagName) {
if (body == null) {
return null;
}
return body.getElementsByTag(tagName);
}
/**
* 根据select语句获取head的elements
*
* @param selectStr
* @return
*/
private Elements getBodyElementsBySelectStr(String selectStr) {
if (body == null) {
return null;
}
return body.select(selectStr);
}
/**
* 获取全部body节点
*
* @return
*/
private Elements getBodyAllElements() {
if (body == null) {
return null;
}
return body.getAllElements();
}
/**
* 根据id获取head节点
*
* @param id
* @return
*/
private Element getHeadElementById(String id) {
if (head == null) {
return null;
}
return head.getElementById(id);
}
/**
* 根据id获取head节点
*
* @param id
* @return
*/
private Elements getHeadElementsById(String id) {
if (head == null) {
return null;
}
return new Elements(head.getElementById(id));
}
/**
* 根据class获取head节点
*
* @param className
* @return
*/
private Elements getHeadElementsByClass(String className) {
if (head == null) {
return null;
}
return head.getElementsByClass(className);
}
/**
* 根据tag获取head节点
*
* @param tagName
* @return
*/
private Elements getHeadElementsByTag(String tagName) {
if (head == null) {
return null;
}
return head.getElementsByTag(tagName);
}
/**
* 根据select语句获取head的elements
*
* @param selectStr
* @return
*/
private Elements getHeadElementsBySelectStr(String selectStr) {
if (head == null) {
return null;
}
return head.select(selectStr);
}
/**
* 获取全部head节点
*
* @return
*/
private Elements getHeadAllElements() {
if (head == null) {
return null;
}
return head.getAllElements();
}
/**
* 释放资源
*/
public void release() {
document = null;
body = null;
head = null;
System.gc();
}
}
7.处理注解与jsoup帮助类(JsoupManager)
public class JsoupManager<T> {
private Class<T> clazz;
private static final String TAG = "JsoupManager";
private Field[] allFields;
private List<HtmlElementFieldModel> fieldModels;
HashMap<String, String[]> multiElementAttrsHashmap = new HashMap<>();
HashMap<String, String[]> multiElementKeysHashmap = new HashMap<>();
public JsoupManager(Class<T> clazz, Class<?>... otherClazz) {
this.clazz = clazz;
// 得到所有定义字段
allFields = clazz.getDeclaredFields();
fieldModels = getFieldsAndSort();
if (otherClazz != null) {
initMultiAttrAndNames(otherClazz);
}
}
public JsoupManager(Class<T> clazz) {
this(clazz, null);
}
public T getDataByUrl(String url) {
T result = null;
SystemLogUtil.printSysLog("getDataByUrl", url);
JsoupUtil jsoupUtil = null;
try {
jsoupUtil = new JsoupUtil(url);
StringBuffer buffer = new StringBuffer("{");
boolean isNeedDeletePoint = false;
for (int i = 0; i < fieldModels.size(); i++) {
HtmlElementFieldModel htmlElementFieldModel = fieldModels.get(i);
//拼接json的字段名
String fieldname = htmlElementFieldModel.field.getName();
buffer.append("\"");
buffer.append(fieldname);
buffer.append("\"");
buffer.append(":");
int[] types = htmlElementFieldModel.annotation.types();
String[] names = htmlElementFieldModel.annotation.typenames();
//是否返回的是attr的值
boolean isAttr = htmlElementFieldModel.annotation.isAttr();
//attr名称
String attrName = htmlElementFieldModel.annotation.attrName();
//是否是返回字符串数组
boolean isArray = htmlElementFieldModel.annotation.isArray();
boolean isBody = htmlElementFieldModel.annotation.isBody();
boolean isMultiData = htmlElementFieldModel.annotation.isMultiElementData();
Class<?> filedModelClazz = htmlElementFieldModel.annotation.filedModelClazz();
ArrayList<Element> elements = getElements(jsoupUtil, types, names, isBody);
String className = filedModelClazz.getName();
String[] multiElementAttrs = multiElementAttrsHashmap.get(className);
String[] multiElementKeys = multiElementKeysHashmap.get(className);
//拼接json的值的字符串
if (!isArray) {
if (!isMultiData) {
appendValues(buffer, isAttr, attrName, elements, 0);
} else {
appendMultiData(buffer, multiElementAttrs, multiElementKeys, elements, 0);
}
isNeedDeletePoint = true;
} else {
buffer.append("[");
boolean isNeedDeletePointInside = false;
for (int j = 0; j < elements.size(); j++) {
if (!isMultiData) {
appendValues(buffer, isAttr, attrName, elements, j);
} else {
appendMultiData(buffer, multiElementAttrs, multiElementKeys, elements, j);
}
isNeedDeletePointInside = true;
}
if (isNeedDeletePointInside) {
buffer.deleteCharAt(buffer.length() - 1);
}
buffer.append("]");
buffer.append(",");
if (i == fieldModels.size() - 1) {
isNeedDeletePoint = true;
} else {
isNeedDeletePoint = false;
}
}
}
if (isNeedDeletePoint) {
buffer.deleteCharAt(buffer.length() - 1);
}
buffer.append("}");
result = GsonUtils.getInstance().getEntetyByString(buffer.toString(), clazz);
} catch (Exception e) {
e.printStackTrace();
SystemLogUtil.printSysLog("JsoupManager", e.getMessage().toString());
} finally {
//释放
if (jsoupUtil != null) {
jsoupUtil.release();
}
}
return result;
}
/**
* 拼接对象
*
* @param buffer
* @param multiElementAttrs
* @param multiElementKeys
* @param elements
* @param j
*/
private void appendMultiData(StringBuffer buffer, String[] multiElementAttrs, String[] multiElementKeys, ArrayList<Element> elements, int j) throws Exception {
String[] multiElementValues = new String[multiElementAttrs.length];
for (int i = 0; i < multiElementAttrs.length; i++) {
String multiElementAttr = multiElementAttrs[i];
if (multiElementAttr == "") {
multiElementValues[i] = elements.get(j).text();
} else {
multiElementValues[i] = elements.get(j).attr(multiElementAttr);
}
}
MultiElementData multiElementData = new MultiElementData(multiElementKeys, multiElementValues);
buffer.append(multiElementData.toString());
buffer.append(",");
}
/**
* 拼接值的字符串
*
* @param buffer
* @param isAttr
* @param attrName
* @param elements
* @param j
*/
private void appendValues(StringBuffer buffer, boolean isAttr, String attrName, ArrayList<Element> elements, int j) {
String value = "";
try {
value = isAttr ? elements.get(j).attr(attrName) : elements.get(j).text();
} catch (Exception e) {
e.printStackTrace();
}
buffer.append("\"");
buffer.append(value);
buffer.append("\"");
buffer.append(",");
}
/**
* 获取所有的目标element
*
* @param jsoupUtil
* @param types
* @param names
* @param isBody
* @return
*/
private ArrayList<Element> getElements(JsoupUtil jsoupUtil, int[] types, String[] names, boolean isBody) {
try {
if (types.length > 1) {
return getElementsMulti(jsoupUtil, types, names, isBody);
} else {
return getElementsSingle(jsoupUtil, types[0], names[0], isBody);
}
} catch (Exception e) {
e.printStackTrace();
}
return new ArrayList<>();
}
/**
* TODO 有多层级选择器的情况
*
* @param jsoupUtil
* @param types
* @param names
* @param isBody
* @return
*/
private ArrayList<Element> getElementsMulti(JsoupUtil jsoupUtil, int[] types, String[] names, boolean isBody) throws Exception {
ArrayList<Element> result = new ArrayList<>();
ArrayList<Element> temp = new ArrayList<>();
boolean isFirst = true;
for (int i = 0; i < types.length; i++) {
dealTempData(temp, jsoupUtil, types[i], names[i], isFirst, isBody);
isFirst = false;
}
result.addAll(temp);
return result;
}
private void dealTempData(ArrayList<Element> temp, JsoupUtil jsoupUtil, int type, String name, boolean isFirst, boolean isBody) throws Exception {
if (isFirst) {
//获取第一级数据
if (type == GET_ELEMENT_BY_ID) {
temp.addAll(jsoupUtil.getElementsTypeById(name, isBody));
} else if (type == GET_ELEMENTS_BY_CLASS) {
temp.addAll(jsoupUtil.getElementsTypeByClass(name, isBody));
} else if (type == GET_ELEMENTS_BY_TAG) {
temp.addAll(jsoupUtil.getElementsTypeByTag(name, isBody));
} else if (type == GET_ELEMENTS_BY_ATTRVALUE) {
temp.addAll(jsoupUtil.getElementsBySelectStr(name, isBody));
}
} else {
if (temp == null) {
temp = new ArrayList<>();
}
ArrayList<Element> tempNew = new ArrayList<>(temp);
temp.clear();
//非第一级数据
if (tempNew != null && tempNew.size() > 0) {
for (int i = 0; i < tempNew.size(); i++) {
if (type == GET_ELEMENT_BY_ID) {
temp.add(tempNew.get(i).getElementById(name));
} else if (type == GET_ELEMENTS_BY_CLASS) {
temp.addAll(tempNew.get(i).getElementsByClass(name));
} else if (type == GET_ELEMENTS_BY_TAG) {
temp.addAll(tempNew.get(i).getElementsByTag(name));
} else if (type == GET_ELEMENTS_BY_ATTRVALUE) {
temp.addAll(tempNew.get(i).select(name));
}
}
}
}
}
/**
* 只有一层筛选条件的情况下
*
* @param jsoupUtil
* @param type
* @param name
* @param isBody
* @return
*/
private ArrayList<Element> getElementsSingle(JsoupUtil jsoupUtil, int type, String name, boolean isBody) throws Exception {
ArrayList<Element> result = new ArrayList<>();
if (type == GET_ELEMENT_BY_ID) {
result.addAll(jsoupUtil.getElementsTypeById(name, isBody));
} else if (type == GET_ELEMENTS_BY_CLASS) {
result.addAll(jsoupUtil.getElementsTypeByClass(name, isBody));
} else if (type == GET_ELEMENTS_BY_TAG) {
result.addAll(jsoupUtil.getElementsTypeByTag(name, isBody));
} else if (type == GET_ELEMENTS_BY_ATTRVALUE) {
result.addAll(jsoupUtil.getElementsBySelectStr(name, isBody));
}
return result;
}
/**
* 获取全部的字段并排序
*
* @return
*/
private List<HtmlElementFieldModel> getFieldsAndSort() {
List<HtmlElementFieldModel> outputFieldModels = new ArrayList<HtmlElementFieldModel>();
for (Field field : allFields) {
if (field.isAnnotationPresent(HtmlElementField.class)) {
HtmlElementFieldModel outputFieldModel = new HtmlElementFieldModel();
outputFieldModel.field = field;
outputFieldModel.annotation = field.getAnnotation(HtmlElementField.class);
outputFieldModels.add(outputFieldModel);
}
}
return outputFieldModels;
}
/**
* 获取全部的字段并排序
*
* @param allMdFields
* @return
*/
private List<HtmlElementModelKeynameModel> getMdFieldsAndSort(Field[] allMdFields) {
List<HtmlElementModelKeynameModel> outputFieldModels = new ArrayList<HtmlElementModelKeynameModel>();
for (Field field : allMdFields) {
if (field.isAnnotationPresent(HtmlElementModelKeyname.class)) {
HtmlElementModelKeynameModel outputFieldModel = new HtmlElementModelKeynameModel();
outputFieldModel.field = field;
outputFieldModel.annotation = field.getAnnotation(HtmlElementModelKeyname.class);
outputFieldModels.add(outputFieldModel);
}
}
return outputFieldModels;
}
/**
* 初始化
*
* @param otherClazz
*/
private void initMultiAttrAndNames(Class<?>[] otherClazz) {
for (int index = 0; index < otherClazz.length; index++) {
try {
Class<?> tempClazz = otherClazz[index];
String className = tempClazz.getName();
List<HtmlElementModelKeynameModel> fieldMdModels = getMdFieldsAndSort(tempClazz.getDeclaredFields());
String[] attrs = new String[fieldMdModels.size()];
String[] keys = new String[fieldMdModels.size()];
for (int i = 0; i < fieldMdModels.size(); i++) {
attrs[i] = fieldMdModels.get(i).annotation.attrname();
keys[i] = fieldMdModels.get(i).annotation.keyname();
}
multiElementAttrsHashmap.put(className, attrs);
multiElementKeysHashmap.put(className, keys);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
-------------------------------------------------------------------------------------------这里是华丽的分割线-------------------------------------------------------------------------------------------
下面就到了使用的环节了
1.编写数据实体类(例子:MenuNetModel)
public class MenuNetModel {
/**
* 表示查找id为htitle的text内容(第一个)
*/
@HtmlElementField(types = GET_ELEMENT_BY_ID, typenames = "htitle")
public String title;
/**
* 表示查找id为menu-second-navi的属性为class内容(第一个)
*/
@HtmlElementField(types = GET_ELEMENT_BY_ID, typenames = "menu-second-navi", isAttr = true, attrName = "class")
public String titleTemp;
/**
* 表示查找class为caption的属性值为 href=/g/35261/的text
*/
@HtmlElementField(types = {GET_ELEMENTS_BY_CLASS, GET_ELEMENTS_BY_ATTRVALUE}, typenames = {"caption", "[href=/g/35261/]"})
public String attrText;
/**
* 表示查找class为caption的属性值为 href=/g/35261/的text数组
*/
@HtmlElementField(types = {GET_ELEMENTS_BY_CLASS, GET_ELEMENTS_BY_ATTRVALUE}, typenames = {"caption", "[href=/g/35261/]"}, isArray = true)
public List<String> attrTexts;
/**
* 表示查找属性值为 href=/g/35261/的text
*/
@HtmlElementField(types = GET_ELEMENTS_BY_ATTRVALUE, typenames = "[href=/g/35261/]")
public String attrText1;
/**
* 表示查找属性值为 href=/g/35261/的text数组
*/
@HtmlElementField(types = GET_ELEMENTS_BY_ATTRVALUE, typenames = "[href=/g/35261/]", isArray = true)
public List<String> attrTexts1;
/**
* 表示查找id为map_rank下面的a标签的text数组
*/
@HtmlElementField(types = {GET_ELEMENT_BY_ID, GET_ELEMENTS_BY_TAG}, typenames = {"map_rank", "a"}, isArray = true)
public List<String> locationName;
/**
* 表示查找id为map_rank下面的a标签的属性href的值数组
*/
@HtmlElementField(types = {GET_ELEMENT_BY_ID, GET_ELEMENTS_BY_TAG}, typenames = {"map_rank", "a"}, isArray = true, isAttr = true, attrName = "href")
public List<String> locationPath;
/**
* 表示查找class为tag_div下面的a标签的数据数组
*/
@HtmlElementField(types = {GET_ELEMENTS_BY_CLASS, GET_ELEMENTS_BY_TAG}, typenames = {"tag_div", "a"}, isArray = true,
isMultiElementData = true, filedModelClazz = ElementData.class)
public List<ElementData> data;
/**
* 表示查找class为tag_div下面的a标签的数据数组
*/
@HtmlElementField(types = {GET_ELEMENTS_BY_CLASS, GET_ELEMENTS_BY_TAG}, typenames = {"tag_div", "a"}, isArray = true,
isMultiElementData = true, filedModelClazz = ElementDataTemp.class)
public List<ElementDataTemp> dataTemp;
public static class ElementData {
/**
* 表示是获取text
*/
@HtmlElementModelKeyname(attrname = "", keyname = "name")
public String name;
/**
* 表示是获取href的属性值
*/
@HtmlElementModelKeyname(attrname = "href", keyname = "path")
public String path;
@Override
public String toString() {
return "ElementData{" +
"name='" + name + '\'' +
", path='" + path + '\'' +
'}';
}
}
public static class ElementDataTemp {
@HtmlElementModelKeyname(attrname = "", keyname = "name1")
public String name1;
@HtmlElementModelKeyname(attrname = "href", keyname = "path1")
public String path1;
@Override
public String toString() {
return "ElementDataTemp{" +
"name1='" + name1 + '\'' +
", path1='" + path1 + '\'' +
'}';
}
}
@Override
public String toString() {
return "MenuNetModel{" +
"title='" + title + '\'' +
", titleTemp='" + titleTemp + '\'' +
", attrText='" + attrText + '\'' +
", attrTexts=" + attrTexts +
", attrText1='" + attrText1 + '\'' +
", attrTexts1=" + attrTexts1 +
", locationName=" + locationName +
", locationPath=" + locationPath +
", data=" + data +
", dataTemp=" + dataTemp +
'}';
}
}
2.调用JsoupManager
A.如果有数据的isMultiElementData为true
JsoupManager<MenuNetModel> jsoupManager = new JsoupManager<>(MenuNetModel.class, MenuNetModel.ElementData.class, MenuNetModel.ElementDataTemp.class);
MenuNetModel dataByUrl = jsoupManager.getDataByUrl("fullUrl");
B.如果不符合A的情况
JsoupManager<MenuNetModel> manager = new JsoupManager<>(MenuNetModel .class);
MenuNetModel model = manager.getDataByUrl("fullUrl");
3.测试的html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>美女图片_宅男女神</title>
<meta name="keywords" content="高清美女图片 美女写真 美女生活照">
<meta name="description" content="分享海量国内美女高清套图(推女郎、美媛馆等),日韩高清美女图片写真,以及女神博客的生活照和素颜照,并提供强大的检索功能。">
<link href="https://res.onvshen.com/style/site.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="topwelcome">
<div id="topcontainer"><span class="span_03">欢迎访问 <a href="#" title="宅男女神">宅男女神</a> | 最全面女神资料 | 最高清美女图片 </span><span
class="span_09"></span><span class="span_08"><a href="/message/">访客留言</a></span><span
class="span_06"><a href="javascript:void(0)" onclick="addfavorite()">收藏本站</a></span>
</div>
</div>
<div id="wrapper">
<div id="top"><!------------上部导航菜单-------------->
<div id="topnav">
<div class="left_top ">
<div class="home"><a href="/" title="首 页" class="home"></a></div>
<div class="menu-main-navi-container">
<ul id="menu-main-navi" class="menu">
<li class="menu-item"><a href="/article/">最新情报</a></li>
<li class="menu-item"><a href="/find/">宅男女神专区</a></li>
<li class="menu-item"><a href="/gallery/">美女图片</a></li>
<li class="menu-item"><a href="/rank/">宅男女神排行榜</a></li>
<li class="menu-item"><a href="/arena/">女神大PK</a></li>
<li class="menu-item"><a href="/tag/">倾城·美人榜</a></li>
<li class="menu-item"><a href="/meet/">巧遇女神</a></li>
<li class="menu-item"><a href="/apply/match.aspx">女神速配</a></li>
</ul>
</div>
</div>
</div><!------------上部导航菜单结束--------------></div>
<div class="search_box"><span class="search_box_span"><input type="image"
src="https://res.onvshen.com/style/HotNewspro/images/go.gif"
class="go" alt="Search" title="搜索"><input
id="txtInput" type="text" class="search_text" onkeydown="fnKeydown(event);"
value="输入名称关键字" onkeyup="fnKeyup(event)" onblur="searchBlur()" onfocus="searchFocus()"></span>
<button type="button" class="g-button-red g-button" onclick="searchResult()" value="查询">查询
</button>
<button type="button" class="g-button-yellow g-button" value="找美女"
onclick="location='/find/'">找美女
</button>
<span class="hot_type_span"><span style="margin: 0 5px; color: #dd4b39; font-weight: bold;">热门查询:</span><span><a
title="克拉女神" href="/gallery/kela/">克拉女神</a></span><span><a title="语画界"
href="/gallery/xiaoyu/">语画界</a></span><span><a
title="美媛馆" href="/gallery/meiyuanguan/">美媛馆</a></span><span><a title="波萝社"
href="/gallery/bololi/">波萝社</a></span><span><a
title="魅妍社" href="/gallery/mistar/">魅妍社</a></span><span><a title="模范学院"
href="/gallery/mfstar/">模范学院</a></span></span><i
class="search_lb"></i><i class="search_rb"></i>
<ul id="top_search_list" style="display: none"></ul>
</div>
<div id="post_rank">
<div id="map_rank">
<div class="browse">
现在位置: <a title="返回首页" href="/">首页</a> > <a title="美女图片" href="/gallery/">美女图片</a>
</div>
</div>
<div class="entry_box_arena">
<div class="box_entry" style="overflow: hidden;">
<div class="gallery_h1_div"><h1 id="htitle" class="gallery_h1">美女图片</h1>
<div id="ddesc">分享海量国内美女高清套图(推女郎、美媛馆等),日韩高清美女图片写真,以及女神博客的生活照和素颜照,并提供强大的检索功能。
</div>
</div>
<div class="tag_div">
<ul>
<li><a href="/gallery/meiguo/">美国</a><a href="/gallery/eluosi/">俄罗斯</a><a
href="/gallery/wukelan/">乌克兰</a><a href="/gallery/yingguo/">英国</a><a
href="/gallery/faguo/">法国</a><a href="/gallery/deguo/">德国</a><a
href="/gallery/yidali/">意大利</a><a href="/gallery/xibanya/">西班牙</a><a
href="/gallery/helan/">荷兰</a><a href="/gallery/jieke/">捷克</a><a
href="/gallery/keluodiya/">克罗地亚</a><a href="/gallery/danmai/">丹麦</a><a
href="/gallery/tuerqi/">土耳其</a><a href="/gallery/ruidian/">瑞典</a><a
href="/gallery/putaoya/">葡萄牙</a><a href="/gallery/xila/">希腊</a><a
href="/gallery/yazhou/">亚洲</a><a href="/gallery/yilang/">伊朗</a><a
href="/gallery/aierlan/">爱尔兰</a><a href="/gallery/nuowei/">挪威</a><a
href="/gallery/rihan/">日韩</a><a href="/gallery/baxi/">巴西</a><a
href="/gallery/gelunbiya/">哥伦比亚</a><a href="/gallery/weineiruila/">委内瑞拉</a><a
href="/gallery/xinjiapo/">新加坡</a><a
href="/gallery/aodaliya/">澳大利亚</a><a
href="/gallery/jianada/">加拿大</a><a href="/gallery/moxige/">墨西哥</a><a
href="/gallery/yiselie/">以色列</a><a href="/gallery/nanfei/">南非</a><a
href="/gallery/bolan/">波兰</a><a href="/gallery/saierweiya/">塞尔维亚</a><a
href="/gallery/boduolige/">波多黎各</a><a
href="/gallery/aodili/">奥地利</a><a
href="/gallery/xinxilan/">新西兰</a><a href="/gallery/bilishi/">比利时</a><a
href="/gallery/bohei/">波黑</a><a href="/gallery/agenting/">阿根廷</a><a
href="/gallery/zhili/">智利</a><a
href="/gallery/baieluosi/">白俄罗斯</a><a href="/gallery/guba/">古巴</a><a
href="/gallery/hanfu/">汉服</a><a href="/gallery/neidi/">中国内地</a><a
href="/gallery/taiwan/">台湾</a><a href="/gallery/xianggang/">香港</a><a
href="/gallery/aomen/">澳门</a><a href="/gallery/riben/">日本</a><a
href="/gallery/hanguo/">韩国</a><a href="/gallery/malaixiya/">马来西亚</a><a
href="/gallery/yuenan/">越南</a><a href="/gallery/taiguo/">泰国</a><a
href="/gallery/feilvbin/">菲律宾</a><a href="/gallery/hunxue/">混血</a><a
href="/gallery/yindu/">印度</a><a href="/gallery/oumei/">欧美</a><a
href="/gallery/feizhou/">非洲</a></li>
</ul>
</div>
<div class="tag_div">
<ul>
<li><a href="/gallery/jiemeihua/">姐妹花</a><a href="/gallery/luoli/">萝莉</a><a
href="/gallery/wumei/">妩媚</a><a href="/gallery/qingxin/">清新</a><a
href="/gallery/mengxi/">萌系</a><a href="/gallery/zhiyu/">治愈系</a><a
href="/gallery/qingchun/">清纯</a><a href="/gallery/qizhi/">气质</a><a
href="/gallery/xinggan/">性感</a><a href="/gallery/lengyan/">冷艳</a><a
href="/gallery/yexing/">野性</a><a href="/gallery/youhuo/">诱惑</a><a
href="/gallery/yangyan/">养眼</a><a href="/gallery/dachidu/">大尺度</a><a
href="/gallery/chengshu/">成熟</a><a href="/gallery/keai/">可爱</a><a
href="/gallery/yubei/">玉背</a><a href="/gallery/shuangmawei/">双马尾</a><a
href="/gallery/yundong/">运动</a><a href="/gallery/zhixing/">知性</a><a
href="/gallery/feizhuliu/">非主流</a><a href="/gallery/wenshen/">纹身</a>
</li>
</ul>
</div>
<div class="tag_div">
<ul>
<li><a href="/gallery/gugan/">骨感</a><a href="/gallery/nvshen/">女神</a><a
href="/gallery/jipin/">极品</a><a href="/gallery/meitui/">美腿</a><a
href="/gallery/botao/">波涛胸涌</a><a
href="/gallery/xiongqi/">人间胸器</a><a
href="/gallery/jiaoxiao/">娇小萝莉</a><a href="/gallery/tongyanjuru/">童颜巨乳</a><a
href="/gallery/rougan/">肉感</a><a href="/gallery/bainen/">白嫩</a><a
href="/gallery/xiaomaise/">小麦色</a><a
href="/gallery/xiangjian/">香肩</a><a href="/gallery/yuzu/">玉足</a><a
href="/gallery/mitaotun/">蜜桃臀</a><a href="/gallery/youwu/">尤物</a><a
href="/gallery/meitun/">美臀</a></li>
</ul>
</div>
<div class="tag_div">
<ul>
<li><a href="/gallery/lanqiu/">篮球宝贝</a><a href="/gallery/quanji/">拳击宝贝</a><a
href="/gallery/zuqiu/">足球宝贝</a><a href="/gallery/dudou/">肚兜</a><a
href="/gallery/qipao/">旗袍</a><a href="/gallery/kongjie/">空姐</a><a
href="/gallery/dingziku/">丁字裤</a><a href="/gallery/hefu/">和服</a><a
href="/gallery/kaibei/">开背毛衣</a><a href="/gallery/bijini/">比基尼</a><a
href="/gallery/neiyi/">内衣</a><a href="/gallery/zhifu/">制服</a><a
href="/gallery/cos/">角色扮演</a><a href="/gallery/xiaofu/">校服</a><a
href="/gallery/hushi/">护士</a><a href="/gallery/shishen/">湿身</a><a
href="/gallery/heisi/">黑丝</a><a href="/gallery/nvpu/">女仆</a><a
href="/gallery/yanjing/">眼镜</a><a href="/gallery/gaogenxie/">高跟鞋</a><a
href="/gallery/jinghua/">警花</a><a href="/gallery/chuniang/">厨娘</a><a
href="/gallery/jiaoshi/">教师</a><a href="/gallery/mishu/">秘书</a><a
href="/gallery/nvbing/">女兵</a><a href="/gallery/shuishoufu/">水手服</a><a
href="/gallery/siwa/">丝袜</a></li>
</ul>
</div>
<div class="tag_div">
<ul>
<li><a href="/gallery/yalayi/">雅拉伊</a><a href="/gallery/sungirl/">阳光宝贝</a><a
href="/gallery/xiuren/">秀人网</a><a
href="/gallery/meiyuanguan/">美媛馆</a><a
href="/gallery/imiss/">爱蜜社</a><a href="/gallery/mistar/">魅妍社</a><a
href="/gallery/mfstar/">模范学院</a><a href="/gallery/youmihui/">尤蜜荟</a><a
href="/gallery/miitao/">蜜桃社</a><a href="/gallery/youwuguan/">尤物馆</a><a
href="/gallery/yunvlang/">御女郎</a><a
href="/gallery/feilin/">嗲囡囡</a><a href="/gallery/micat/">瑞丝馆
(猫萌榜)</a><a href="/gallery/candy/">网红馆(糖果画报)</a><a
href="/gallery/uxing/">优星馆</a><a href="/gallery/wings/">影私荟</a><a
href="/gallery/xiaoyu/">语画界</a><a href="/gallery/huayan/">花の颜</a><a
href="/gallery/leyuan/">星乐园</a><a href="/gallery/huayang/">花漾</a><a
href="/gallery/xingyan/">星颜社</a><a href="/gallery/ugirl/">尤果网</a><a
href="/gallery/aiyouwu/">尤果圈</a><a href="/gallery/youguo/">优果网</a><a
href="/gallery/tgod/">推女神</a><a href="/gallery/tuigirl/">推女郎</a><a
href="/gallery/bololi/">波萝社</a><a href="/gallery/kimoe/">激萌文化</a><a
href="/gallery/girlt/">果团网</a><a
href="/gallery/xiongchuan/">熊川纪信</a><a
href="/gallery/toutiao/">头条女神</a><a href="/gallery/youmei/">尤美</a><a
href="/gallery/mtgirl/">蜜团女孩</a><a href="/gallery/missleg/">蜜丝</a><a
href="/gallery/partycat/">轰趴猫</a><a href="/gallery/slady/">猎女神</a><a
href="/gallery/kela/">克拉女神</a><a
href="/gallery/51modo/">51modo</a><a
href="/gallery/rqstar/">RQ-STAR</a><a
href="/gallery/ysweb/">YS-Web</a><a href="/gallery/dgcc/">DGC</a><a
href="/gallery/bomb/">Bomb.tv</a><a
href="/gallery/misty/">@misty</a><a
href="/gallery/sabra/">Sabra.net</a><a href="/gallery/4kstar/">4K-STAR</a>
</li>
</ul>
</div>
<div class="tag_div">
<ul>
<li><a href="/gallery/yushi/">浴室</a><a href="/gallery/shatan/">沙滩</a><a
href="/gallery/yongchi/">泳池</a><a href="/gallery/huwai/">户外</a><a
href="/gallery/jiepai/">街拍</a><a href="/gallery/jiaju/">家居</a><a
href="/gallery/xuedi/">雪地</a><a href="/gallery/sifang/">私房照</a><a
href="/gallery/christmas/">圣诞</a><a
href="/gallery/chunjie/">春节</a><a href="/gallery/shamo/">沙漠</a><a
href="/gallery/yugang/">浴缸</a><a href="/gallery/wenquan/">温泉</a>
</li>
</ul>
</div>
<div class="tag_div">
<ul>
<li><a href="/gallery/sportillustrated/">体育画报</a><a
href="/gallery/bigcomic/">Weekly Big Comic Spirits</a><a
href="/gallery/champion/">Young Champion</a><a
href="/gallery/playboy/">Weekly Playboy</a><a
href="/gallery/young/">Young Magazine</a><a href="/gallery/jump/">Weekly
Young Jump</a></li>
</ul>
</div>
</div>
<i class="lt"></i><i class="rt"></i></div>
<div class="entry_box_b_arena"><i class="lb"></i><i class="rb"></i></div>
<div class="clear12"></div>
<div class="entry_box_arena">
<div class="box_entry">
<div class="box_entry_title">
<div class="hot_tag"><span id="stag">美女图片</span></div>
</div>
<div class="clear"></div><!-- thumbnail -->
<div class="post_entry">
<div id="listdiv" class="listdiv">
<div style="height: 12px"></div>
<ul>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35266/"><img
alt="[XiuRen] 2021.02.08 No.3097 周于希Sandy"
data-original="https://t1.onvshen.com:85/gallery/24410/35266/cover/0.jpg"
title="[XiuRen] 2021.02.08 No.3097 周于希Sandy"
src="https://t1.onvshen.com:85/gallery/24410/35266/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35266/" class="caption">[XiuRen]
2021.02.08 No.3097 周于希Sandy</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35265/"><img
alt="[XiuRen] 2021.02.02 No.3071 白茹雪Abby"
data-original="https://t1.onvshen.com:85/gallery/27374/35265/cover/0.jpg"
title="[XiuRen] 2021.02.02 No.3071 白茹雪Abby"
src="https://t1.onvshen.com:85/gallery/27374/35265/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35265/" class="caption">[XiuRen]
2021.02.02 No.3071 白茹雪Abby</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35264/"><img
alt="[YOUMI] 2020.12.30 VOL.581 王雨纯"
data-original="https://t1.onvshen.com:85/gallery/19702/35264/cover/0.jpg"
title="[YOUMI] 2020.12.30 VOL.581 王雨纯"
src="https://t1.onvshen.com:85/gallery/19702/35264/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35264/" class="caption">[YOUMI]
2020.12.30 VOL.581 王雨纯</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35263/"><img
alt="[FEILIN] 2021.01.25 No.371 桃香子"
data-original="https://t1.onvshen.com:85/gallery/26917/35263/cover/0.jpg"
title="[FEILIN] 2021.01.25 No.371 桃香子"
src="https://t1.onvshen.com:85/gallery/26917/35263/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35263/" class="caption">[FEILIN]
2021.01.25 No.371 桃香子</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35262/"><img
alt="[HuaYang] 2020.12.30 VOL.344 徐安安"
data-original="https://t1.onvshen.com:85/gallery/27828/35262/cover/0.jpg"
title="[HuaYang] 2020.12.30 VOL.344 徐安安"
src="https://t1.onvshen.com:85/gallery/27828/35262/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35262/" class="caption">[HuaYang]
2020.12.30 VOL.344 徐安安</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35261/"><img alt="尤果圈合集情人多情"
data-original="https://t1.onvshen.com:85/gallery/23823/35261/cover/0.jpg"
title="尤果圈合集情人多情"
src="https://t1.onvshen.com:85/gallery/23823/35261/cover/0.jpg"
style="display: inline;"></a>
</div>
<div class="galleryli_title"><a href="/g/35261/" class="caption">尤果圈合集情人多情</a>
</div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35260/"><img
alt="[XiuRen] 2021.02.05 No.3086 妲己_Toxic"
data-original="https://t1.onvshen.com:85/gallery/22359/35260/cover/0.jpg"
title="[XiuRen] 2021.02.05 No.3086 妲己_Toxic"
src="https://t1.onvshen.com:85/gallery/22359/35260/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35260/" class="caption">[XiuRen]
2021.02.05 No.3086 妲己_Toxic</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35259/"><img
alt="[XiuRen] 2021.01.29 No.3062 芝芝Booty"
data-original="https://t1.onvshen.com:85/gallery/22899/35259/cover/0.jpg"
title="[XiuRen] 2021.01.29 No.3062 芝芝Booty"
src="https://t1.onvshen.com:85/gallery/22899/35259/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35259/" class="caption">[XiuRen]
2021.01.29 No.3062 芝芝Booty</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35258/"><img
alt="[XiuRen] 2021.01.25 No.3039 方子萱"
data-original="https://t1.onvshen.com:85/gallery/22469/35258/cover/0.jpg"
title="[XiuRen] 2021.01.25 No.3039 方子萱"
src="https://t1.onvshen.com:85/gallery/22469/35258/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35258/" class="caption">[XiuRen]
2021.01.25 No.3039 方子萱</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35257/"><img
alt="[XiuRen] 2021.01.25 No.3037 奶油妹妹"
data-original="https://t1.onvshen.com:85/gallery/28119/35257/cover/0.jpg"
title="[XiuRen] 2021.01.25 No.3037 奶油妹妹"
src="https://t1.onvshen.com:85/gallery/28119/35257/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35257/" class="caption">[XiuRen]
2021.01.25 No.3037 奶油妹妹</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35256/"><img
alt="[YOUMI] 2020.12.29 VOL.580 果儿Victoria"
data-original="https://t1.onvshen.com:85/gallery/19551/35256/cover/0.jpg"
title="[YOUMI] 2020.12.29 VOL.580 果儿Victoria"
src="https://t1.onvshen.com:85/gallery/19551/35256/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35256/" class="caption">[YOUMI]
2020.12.29 VOL.580 果儿Victoria</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35255/"><img
alt="[HuaYang] 2020.12.29 VOL.343 王雨纯"
data-original="https://t1.onvshen.com:85/gallery/19702/35255/cover/0.jpg"
title="[HuaYang] 2020.12.29 VOL.343 王雨纯"
src="https://t1.onvshen.com:85/gallery/19702/35255/cover/0.jpg"
style="display: inline;"></a></div>
<div class="galleryli_title"><a href="/g/35255/" class="caption">[HuaYang]
2020.12.29 VOL.343 王雨纯</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35254/"><img
alt="芝芝Booty妩媚非凡 你的性感令人尖叫"
data-original="https://t1.onvshen.com:85/gallery/22899/35254/cover/0.jpg"
title="芝芝Booty妩媚非凡 你的性感令人尖叫"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"></a>
</div>
<div class="galleryli_title"><a href="/g/35254/" class="caption">芝芝Booty妩媚非凡
你的性感令人尖叫</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35253/"><img
alt="[XiuRen] 2021.02.04 No.3081 模特合集"
data-original="https://t1.onvshen.com:85/gallery/21017/35253/cover/0.jpg"
title="[XiuRen] 2021.02.04 No.3081 模特合集"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"></a>
</div>
<div class="galleryli_title"><a href="/g/35253/" class="caption">[XiuRen]
2021.02.04 No.3081 模特合集</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35252/"><img
alt="[XiuRen] 2021.01.28 No.3054 蜜桃cc"
data-original="https://t1.onvshen.com:85/gallery/27534/35252/cover/0.jpg"
title="[XiuRen] 2021.01.28 No.3054 蜜桃cc"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"></a>
</div>
<div class="galleryli_title"><a href="/g/35252/" class="caption">[XiuRen]
2021.01.28 No.3054 蜜桃cc</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35251/"><img
alt="[XiuRen] 2021.01.27 No.3049 艾静香"
data-original="https://t1.onvshen.com:85/gallery/27556/35251/cover/0.jpg"
title="[XiuRen] 2021.01.27 No.3049 艾静香"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"></a>
</div>
<div class="galleryli_title"><a href="/g/35251/" class="caption">[XiuRen]
2021.01.27 No.3049 艾静香</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35250/"><img
alt="[XiuRen] 2021.01.26 No.3043 玉兔miki"
data-original="https://t1.onvshen.com:85/gallery/22186/35250/cover/0.jpg"
title="[XiuRen] 2021.01.26 No.3043 玉兔miki"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"></a>
</div>
<div class="galleryli_title"><a href="/g/35250/" class="caption">[XiuRen]
2021.01.26 No.3043 玉兔miki</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35249/"><img
alt="[HuaYang] 2020.12.28 VOL.342 允爾"
data-original="https://t1.onvshen.com:85/gallery/28081/35249/cover/0.jpg"
title="[HuaYang] 2020.12.28 VOL.342 允爾"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"></a>
</div>
<div class="galleryli_title"><a href="/g/35249/" class="caption">[HuaYang]
2020.12.28 VOL.342 允爾</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35248/"><img
alt="[XiuRen] 2021.03.02 No.3155 杨晨晨sugar"
data-original="https://t1.onvshen.com:85/gallery/22162/35248/cover/0.jpg"
title="[XiuRen] 2021.03.02 No.3155 杨晨晨sugar"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"></a>
</div>
<div class="galleryli_title"><a href="/g/35248/" class="caption">[XiuRen]
2021.03.02 No.3155 杨晨晨sugar</a></div>
</li>
<li class="galleryli">
<div class="galleryli_div"><a class="galleryli_link"
href="/g/35247/"><img
alt="[XiuRen] 2021.02.02 No.3070 小果冻儿"
data-original="https://t1.onvshen.com:85/gallery/28069/35247/cover/0.jpg"
title="[XiuRen] 2021.02.02 No.3070 小果冻儿"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB/AAffA0nNPuCLAAAAAElFTkSuQmCC"></a>
</div>
<div class="galleryli_title"><a href="/g/35247/" class="caption">[XiuRen]
2021.02.02 No.3070 小果冻儿</a></div>
</li>
</ul>
<div class="clear"></div>
<div class="pagesYY">
<div><a class="cur" href="/gallery/"><span></span>1</a><a
href="/gallery/2.html"><span></span>2</a><a
href="/gallery/3.html"><span></span>3</a><a
href="/gallery/4.html"><span></span>4</a><a
href="/gallery/5.html"><span></span>5</a><a
href="/gallery/2.html"><span></span>下一页</a></div>
</div>
</div>
</div>
</div>
<i class="lt"></i><i class="rt"></i></div>
<div class="entry_box_b_arena"><i class="lb"></i><i class="rb"></i></div>
<div class="clear12"></div>
</div>
<script src="//pc.weizhenwx.com/pc/beitou-tf.js" id="beitouid" data="s=3501"></script>
<div class="clear"></div>
<div class="footer_top">
<div id="menu">
<div class="menu-second-navi-container">
<ul id="menu-second-navi" class="menu">
<li class="menu-item"><a href="/gallery/">高清美女图片</a></li>
<li class="menu-item"><a href="/gallery/xinggan/">性感美女图片</a></li>
<li class="menu-item"><a href="/gallery/meitun/">翘臀美女图片</a></li>
<li class="menu-item"><a href="/gallery/lengyan/">冷艳美女图片</a></li>
<li class="menu-item"><a href="/tag/hunxue/">混血女神</a></li>
<li class="menu-item"><a href="/tag/yazhou/">韩国女神</a></li>
</ul>
</div>
</div>
<h2 class="blogtitle"><a href="#" title="宅男女神">返回首页</a></h2></div>
<div class="footer_bottom">
<div class="footer"><p>
本站所有资源来源于网友上传与分享,如有关内容侵犯了你的权益,请联系告之,我们会第一时间删除!邮箱:zngirls520@gmail.com</p>
<p>© 2017-2019 nvshens.net, all rights reserved</p></div>
</div>
<div class="clear"></div>
</div>
<script src="//pc.weizhenwx.com/pc_w/m_beitou.js" id="beitoudata" data="s=3501"></script>
<script src="https://res.onvshen.com/script/common.js"></script>
<script src=" https://hm.baidu.com/h.js�49eefe9a0877491190a0c046ad94d1"
type="text/javascript"></script>
<div id="HMcoupletDivleft"
style="margin: 50px 0px 0px; padding: 0px; height: 0px; position: fixed; left: 0px; top: 0px; overflow: visible; width: 618px;">
<a href="http://jg.wensixuetang.com/stf/visitor.html?id=173&s=4103&c=176711"
class="jjjjasdasd" target="_blank"
style="display:block;z-index:999999;float:none;text-align:right;opacity:1;position:relative;top:0px;right:500px"><img
id="HMimageleft" style="border:0px;display:inline-block;width:auto;max-height:none;"
onclick="HMcountClick()"
src="//v.bjdgqx.com/syjpc/mjsg-txwjbgz-1080-420-3-19-l.gif"><img id="HMcoupletIconleft"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAQCAYAAAAFzx/vAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNpi1Oi7MZOBjoCJgc6AoIXXC9XTSDGQkHqCFmr235xFyBBSHMWIHofEagY5hFg9yGpZCCkgJgjRLcenn+JEQ4rjcPqQ0gSCTRzmMBZ6+o5iC4lNZAQTDTV9iu4gupc0VPEhKRmfBV+eokWQMg772gIgwADcMj5Lyf2sGwAAAABJRU5ErkJggg=="
style="border:0px;display:inline-block;position:absolute;top:1315px;right:0px;z-index:999999;width:auto;"></a>
</div>
<div id="HMcoupletDivright"
style="margin: 50px 0px 0px; padding: 0px; height: 0px; position: fixed; right: 0px; top: 0px; overflow: visible; width: 618px;">
<a href="http://jg.wensixuetang.com/stf/visitor.html?id=173&s=4103&c=176711"
class="jjjjasdasd" target="_blank"
style="display:block;z-index:999999;float:none;text-align:left;opacity:1;position:relative;top:0px;left:500px"><img
id="HMimageright" style="border:0px;display:inline-block;width:auto;max-height:none;"
onclick="HMcountClick()"
src="//v.bjdgqx.com/syjpc/mjsg-txwjbgz-1080-420-3-19-r.gif"><img id="HMcoupletIconright"
src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAQCAYAAAAFzx/vAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNpi1Oi7MZOBjoCJgc6AoIXXC9XTSDGQkHqCFmr235xFyBBSHMWIHofEagY5hFg9yGpZCCkgJgjRLcenn+JEQ4rjcPqQ0gSCTRzmMBZ6+o5iC4lNZAQTDTV9iu4gupc0VPEhKRmfBV+eokWQMg772gIgwADcMj5Lyf2sGwAAAABJRU5ErkJggg=="
style="border:0px;display:inline-block;position:absolute;top:1315px;left:0px;z-index:999999;width:auto;"></a>
</div>
</body>
</html>
至此,这个简单的jsoup二次封装框架就完成了,如果各位大佬有更好的优化建议,还望大佬们不吝赐教。