当前位置: 首页 > Web前端 > HTML5

如何使用PHP+HTML+JavaScript+css实现简单的爬虫开发说明

时间:2023-04-05 14:13:57 HTML5

要开发爬虫,首先你要知道你的爬虫是用来做什么的。我想去不同的网站查找具有特定关键字的文章并获取指向它们的链接,以便我可以快速阅读它们。按照我个人的习惯,首先需要写一个接口来理清思路。1.转到不同的网站。然后我们需要一个url输入框。2.查找具有特定关键字的文章。然后我们需要一个文章标题输入框。3.获取文章链接。然后我们需要一个搜索结果的显示容器。文章URL抓取

文章标题
网站URL
抓取
文章网址

直接上传代码,然后添加一些自己的样式调整,界面就完成了:接下来就是功能的实现了。我用PHP写的。第一步是获取网站的html代码。获取html代码的方法有很多,我就不一一介绍了,这里我使用curl获取,传入网站url即可获取html代码:私有函数get_html($url){$ch=curl_init();$超时=10;curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_ENCODING,'gzip');curl_setopt($ch,CURLOPT_USERAGENT,'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/34.0.1847.131Safari/537.36');curl_setopt($ch,CURLOPT_CONNECTTIMEOUT,$timeout);$html=curl_exec($ch);return$html;}虽然得到了html代码,但是很快就会遇到一个问题,就是编码的问题,可能会导致你的下一次匹配失败,成功后,我们统一将得到的html内容转为utf8编码:$编码=mb_detect_encoding($html);if($coding!="UTF-8"||!mb_check_encoding($html,"UTF-8"))$html=mb_convert_encoding($html,'utf-8','GBK,UTF-8,ASCII');获取到网站的html,获取到文章的url,接下来就是匹配页面下所有的a标签需要使用正则表达式。经过多次测试,终于得到了一个比较靠谱的正则表达式。不管a标签下的结构有多复杂,只要是标签就不会漏掉:(最关键的一步)$pattern='|]*>(.*)|isU';preg_match_all($pattern,$html,$matches);匹配结果在$matches中,大概是这样的一个多元素组:array(2){[0]=>数组(*){[0]=>字符串(*)“完成标签”。..}[1]=>array(*){[0]=>string(*)"上面下标对应的a标签中的内容"}}只要能拿到这个数据,其他的完全可以操作。你可以遍历这个元素组,找到你想要的a标签,然后获取a标签对应的属性。你想做什么,就可以做什么。下面推荐一个类,方便大家操作a标签:$dom=newDOMDocument();@$dom->loadHTML($a);//$a是上面获取到的一些a标签$url=newDOMXPath($dom);$hrefs=$url->evaluate('//a');for($i=0;$i<$hrefs->length;$i++){$href=$hrefs->item($i);$url=$href->getAttribute('href');//这里获取a标签的href属性}当然这只是一种方式,你也可以通过正则表达式匹配你想要的信息,对数据玩出新花样get并匹配得到自己想要的结果,接下来当然是传回前端显示,写接口,然后前端用js获取数据,用jquery动态添加内容显示:varwebsite_url='你的界面URL';$.getJSON(website_url,function(data){if(data){if(data.text==''){$('#article_url').html('

没有文章链接

');return;}varstring='';varlist=data.text;for(varjinlist){varcontent=list[j].url_content;for(variincontent){if(content[i].title!=''){string+=''+'['+list[j].website.web_name+']'+''+content[i].title+''+'';}}$('#article_url').html(字符串);});以上就是本文的全部内容,希望对大家的学习有所帮助。阅读原文:如何使用PHP+HTML+JavaScript+css实现简单的爬虫开发及讲解相关文章:如何将txt格式转换为json格式?undefined在javasscript中是什么意思?php修改参数不生效的问题