{
"db":{
"username":"root",
"password":"123456",
"localhost":"localhost",
"database":"testaa"
},
"headers":"",
"plugin":[
],
"rules":[
"书"
],
"书":{
"type":"html",
"url":"http://www.fanqiexs.cc/sort1/1.html",
"tablename":"my_book",
"where":"",
"page":{
"regexp":"",
"index":1
},
"fields_list":[
{
"tablename":"classification",
"where":"name",
"xpath":"/html/body/nav/ul/li[position()>1 and position()<12]",
"fields":[
{
"field":"name",
"xpath":"./a/text()",
"filter":[
{
"type":"1",
"old":"",
"new":"",
"regexp":""
}
]
}
],
"children":[
]
}
],
"fields":[
{
"field":"name",
"xpath":"./a/text()",
"filter":[
{
"type":"1",
"old":"",
"new":"",
"regexp":""
}
]
},
{
"field":"url",
"xpath":"./a/@href",
"filter":[
{
"type":"1",
"old":"",
"new":"",
"regexp":""
}
]
}
],
"children":[
]
}
}
db
通过连接mysql数据库,获取数据库的表名字,以及表字段类型为插入数据做准备
headers
自定义请求头,可以添加cookie等信息
rules
规则
-
type html 或者json
-
url 每次请求的url url配置可以使用上层配置的字段比如上层配置{'name':1},可以在url中用&name& 代替1
-
tablename 要出入的数据表名字
-
where 插入之前的去重字段 多个用“|”隔开
-
xpath 如果想要获取的信心一个xpath不能够完全获取,可以写入多个,
- xpath 通过xpath 获取要得到的数据,可以通过google快速获取xpath 通过$x('//*')验证
- page 如果配置regexp将通过正则去替换url,如果不填写regexp index 请默认为1,代码会拼接url+index
-
fields 数据库要存入的字段,或者自己想要记录的变量
- field 数据库字段名字 或者自己定义名字
- xpath ./
- filter 字符串过滤规则
- type 1 代表替换old为new 2代表正则替换
- regexp 正则表达式
-
children 子规则
plugin
插件里面是个数组可以配置多个插件,如果多个插件里面方法一样,以第一个插件为准比如:a插件有个方法geturl b插件也有个方法geturl,那么会以第一个插件为准
插件支持的方法如下
1. cheackdbvalue
获取到的数据和数据库比较是否能够入库
参数
- fileddic 获取到的数据 字典类型
- tablename 数据库表名字 字符串类型
返回数据
- 字典类型 数据库要储存的信息{'id':1,'name':"张三"}
2. db_repeat
判断数据库是否有重复数据
参数
- item 配置文件里面表的配置where同级 字典类型
- fileddic 数据库表明(cheackdbvalue返回的数据) 字典类型
返回数据
- true(有重复数据) 或者false
3. geturl
每次请求前调用此方法
参数
- url 配置文件里的url
- currut_page 当前请求页数,第一页currut_page=1
- page 配置文件里的page
- tablename 数据库表名字 字符串类型
- oldfiledata 上层获取到的字段数据
返回数据
- url 字符串
4. myrequest
请求url方法
参数
- url geturl后的url
- headers 请求头
返回数据
- html 字符串
5. filter_field
从xpath 里面提取每个字段的数据
参数
- item 每个字段的配置信息
- html 当前xpath
- encoding 编码
- tablename 数据库表名字 字符串类型
返回数据
- html 字符串
网友评论