php抓取网页数据插入数据库(mysql查询的关键字是什么?情况怎么处理??)
优采云 发布时间: 2021-10-26 09:24php抓取网页数据插入数据库(mysql查询的关键字是什么?情况怎么处理??)
应用场景:
1:使用mysql数据库存储数据时,有时一个字段需要存储多个逗号分隔的数据。查询时传入一个关键字,需要在逗号分隔的字段中查询。如何处理这种情况?
例如:
爬取时,指定关键字查询,关键字可以多个,用逗号隔开。数据库中对应的字段为:key_word,存储的数据,如:Kaige Java,Kaigejava。所以现在我要查询的关键字是:Kai Ge java。如何检查?
2:第二种情况,我们更新的是首先判断指定字段是否收录指定字符串。如果未收录,则将指定字段添加到原创字段。
例如:
爬取网站时,没有添加这个。判断,如果没有添加,则更新并添加。如何更新这个?
前期准备:
创建数据库:
创建表`config_sentiment`(
`config_sentiment_id` varchar(64) NOT NULL COMMENT'舆情配置表-主键id',
`config_sentiment_web_name` varchar(60) NOT NULL COMMENT'Grab 网站name',
`config_sentiment_web_url` varchar(500) NOT NULL COMMENT'Grab 网站 URL',
`config_sentiment_item_name` varchar(64) NOT NULL COMMENT'item id',
`config_sentiment_rate` varchar(5) NOT NULL DEFAULT '1' COMMENT'默认抓取频率为1(1小时)',
`config_sentiment_keyword` varchar(500) NOT NULL COMMENT'获取关键字。多次使用,分开',
`config_sentiment_newtime` varchar(20) DEFAULT NULL COMMENT'最新捕获时间',
`config_sentiment_number` int(20) DEFAULT NULL COMMENT'最新捕获的项目数',
`config_sentiment_adduser` varchar(64) NOT NULL COMMENT'creator',
`config_sentiment_addtime` varchar(20) NOT NULL COMMENT'创建时间',
`config_sentiment_updateuser` varchar(64) DEFAULT NULL COMMENT'Updater',
`config_sentiment_updatetime` varchar(20) DEFAULT NULL COMMENT'更新时间',
主键(`config_sentiment_id`)
) 引擎=InnoDB 默认字符集=utf8;
插入数据:
插入`config_sentiment`(`config_sentiment_id`,`config_sentiment_web_name`,`config_sentiment_web_url`,`config_sentiment_item_name`,`config_sentiment_rate`,`config_sentiment_keyword`,`config`add`_sentiment_newtime`,`config_sentiment_newtime`,update`config`config`addtime_s ) values('1','Kay Java','','0','1','投资理财','22100',10,'88888888','20021','88888888', '20021'),('2','凯爪哇','','0','1','百度,天猫','20',10,'88888888','20','88888888', '20'),('3','36','','0','1','理财产品,百度理财,百度理财产品','20021',10,'88888888','20021','88888888','20021');
查看数据:
我们可以看到url中没有添加。关键字中有多个产品。
在第一种情况下,有两种解决方案:
1:使用最常用的,模糊查询。sql语句:
经过like,我们发现有两条数据。虽然模糊查询的模糊性可以是前后。但是这样的歧义,会查询到太多的数据。很多都不是我想要的。
我只想要关键词【财务管理】的数据。如此海量的数据如何解决精准查询?请看一下:
解决方案二:
使用 MySQL 字符串函数 find_in_set();
具体的sql语句:
SELECT t.config_sentiment_web_url url,t.config_sentiment_keyword 关键字 FROM config_sentiment t WHERE FIND_IN_SET('Finance', t.config_sentiment_keyword);
查询后结果:
这解决了问题。
争议问题 2:更新声明:
更新 config_sentiment SET config_sentiment_web_url =CONCAT('',config_sentiment_web_url) WHERE LOCATE('http://',config_sentiment_web_url)=0;
结果:
再次检查它是否已添加到数据库中。
已添加。这个问题已经解决。
需要注意的是mysql中的字符串连接不是用[+]而是用[concat函数]
凯歌java(微信ID:kaigejava)
在本文中,凯哥个人网站: