又是我~~~一个关于进行爬虫的时候 做搜索 的时候的问题
发布于 2 个月前 作者 guirenpei 324 次浏览 来自 问答

照例 先贴上代码 下面是爬虫的代码 exports.search = function(req,res){ var keyname = req.params.keyname var host = ‘so.37zw.com/cse/search’ // var url = Analyse.formatUrl(keyname,host) request .get(host) .query(‘q=’ + querystring.stringify(keyname)) .query(‘click=1’) .query(‘s=2041213923836881982’) .query(‘nsid=’) .charset(‘utf-8’) .end(function(err,rep){ // console.log(‘正在爬取’+url) console.log(rep.header) var books = Analyse.analyseSearch(rep.text) var timeStamp = Date.now() var newPath = path.join(__dirname,’…/…/’,’/public/logs/’ + timeStamp +’.txt’) console.log(rep.req) fs.writeFile(newPath,JSON.stringify(rep),function(err){ res.render(‘story/search’,{ title : ‘搜索结果’+ ‘–星门’, books : books }) }) }) .on(‘error’,function(err){ console.log(err) }) } 下面是分析网页的代码,我觉得这段是没有问题的,是上面AnalyseSearch()方法 exports.analyseSearch = function(html){ var $ = cheerio.load(html) console.log() var lists = $(’.result-list .result-item’) var books = [] var storynumber = [‘玄幻小说’,‘修真小说’,‘都市小说’,‘穿越小说’,‘网游小说’,‘科幻小说’] lists.map(function(i,el){ var item = $(this) var image = item.find(’.result-game-item-pic a img’).attr(‘src’).trim() var storyname = item.find(’.result-game-item-pic a img’).attr(‘alt’).trim() var author = item.find(’.result-game-item-detail .result-game-item-info p:first-child span:last-child’).text().trim() var link = item.find(’.result-game-item-detail h3 a’).attr(‘href’).trim() var summary = item.find(’.result-game-item-detail .result-game-item-desc’).text().trim() var number = parseInt(link.substring(20,21)) var lastchapter = item.find(’.result-game-item-detail .result-game-item-info p:last-child a’).text().trim() var categoryname = storynumber[number] var monthrecommend = Math.floor(Math.random()*100000+ 1) var monthclick = Math.floor(Math.random()*100000+ 1) var allrecommend = Math.floor(Math.random()*100000+ 1) var allclick = Math.floor(Math.random()*100000+ 1) var allcollection = Math.floor(Math.random()*100000+ 1) var commentsnumber = Math.floor(Math.random()*100000+ 1) var storyData = { number : number, categoryname : categoryname, storyname : storyname, author : author, image : image, link : link, summary : summary, monthrecommend : monthrecommend, monthclick : monthclick, allrecommend : (allrecommend + 12 * monthrecommend), allclick : (allclick + 12 * monthclick), allcollection : Math.floor(((allcollection - allclick) > 0 ? allcollection : (allclick * 0.1))), commentsnumber : Math.floor(((commentsnumber - allclick) > 0 ? allcollection : (allclick * 0.2))), lastchapter : lastchapter }; books.push(storyData) }) return books } 下面简述问题。 简单的来说就是,能够成功返回一切东西。 但是,有个但是,我要查询到关键词并不是我要找的关键词,下面贴两张图来说明。 我想要的结果是 3.png 结果出来的是 2.png 我想问的是,我在爬虫的时候所用的url和搜索时的url是一致的,为什么获得的结果不一致呢? 会不会是我用querystring的时候转码转的有问题?我觉得不应该是。。。。。 希望明天能得到好结果!~~

3 回复

你可以把你转码之后的结果打印出来看看, 应该是转码的问题

@liujavamail 你指的转码后的结果是什么,是url地址码。

是的,一般这种搜索,有汉字的话很容易被转义了的, 你可看看

回到顶部