php如何抓取网页数据

php如何抓取网页数据

php如何抓取网页数据?作为一门后端语言(组图)

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-09-13 03:01 • 来自相关话题

  php如何抓取网页数据?作为一门后端语言(组图)
  
  php如何抓取网页数据?作为一门后端语言php可以抓取网页数据,但是这里面有个问题就是我要抓取一个网页的时候,php直接运行我自己的程序,那么对于网页数据不是像html程序会有个tag类型告诉我,那些内容需要在哪里进行处理,那么这个时候我们就需要把php发到网页的服务器处理,因为如果你是基于nginx或者动态服务器,那么你需要通过类似php.ini的配置文件将我们发给网页服务器的php配置信息传递给网页服务器。
  
  如果使用phpwind等工具去抓取网页信息,那么它只是在线下进行一些简单的数据抓取,那么就可以使用php之外的request发送一些http请求去传递数据进行接收,例如:forward://${url}wget://${url}以前需要我手动写一些httpuri或者cookie,但是现在我可以用get请求让我爬取到php页面内容。
  最后一种解决思路就是直接使用一个php接口去接收访问数据,这里主要是需要request就好了,其它的就不需要我操心。这里我们主要分析下request库的抓取网页数据的代码:varrequest=require('request');varresponse={"err":"","errmsg":"error:nan","accept":"*/*","accept-language":"zh-cn,zh;q=0.9,en-us;q=0.8,en;q=0.3,fr;g=0.1,jpg;gif;f=0.0,gif;s=0.4,png;authorization":"//"};varhttp=newhttp();request.open("/index.php",http);request.send("http/1.1");request.recv(48);//filenametoencodeerr=encode(response.data);body=encode("div+css");//getresponsewithbodyframebody=body.replace(/\s/g,"");body=body.replace(/\s/g,"");response.send(body);上面就是request库抓取网页的代码,它是把一个http协议请求发给网页服务器去请求数据,实际上它实现的数据是什么就在于php程序,可以request,也可以http直接request。关于request库它是什么样的一个东西不多说,大家就可以直接看它的源码了。 查看全部

  php如何抓取网页数据?作为一门后端语言(组图)
  
  php如何抓取网页数据?作为一门后端语言php可以抓取网页数据,但是这里面有个问题就是我要抓取一个网页的时候,php直接运行我自己的程序,那么对于网页数据不是像html程序会有个tag类型告诉我,那些内容需要在哪里进行处理,那么这个时候我们就需要把php发到网页的服务器处理,因为如果你是基于nginx或者动态服务器,那么你需要通过类似php.ini的配置文件将我们发给网页服务器的php配置信息传递给网页服务器。
  
  如果使用phpwind等工具去抓取网页信息,那么它只是在线下进行一些简单的数据抓取,那么就可以使用php之外的request发送一些http请求去传递数据进行接收,例如:forward://${url}wget://${url}以前需要我手动写一些httpuri或者cookie,但是现在我可以用get请求让我爬取到php页面内容。
  最后一种解决思路就是直接使用一个php接口去接收访问数据,这里主要是需要request就好了,其它的就不需要我操心。这里我们主要分析下request库的抓取网页数据的代码:varrequest=require('request');varresponse={"err":"","errmsg":"error:nan","accept":"*/*","accept-language":"zh-cn,zh;q=0.9,en-us;q=0.8,en;q=0.3,fr;g=0.1,jpg;gif;f=0.0,gif;s=0.4,png;authorization":"//"};varhttp=newhttp();request.open("/index.php",http);request.send("http/1.1");request.recv(48);//filenametoencodeerr=encode(response.data);body=encode("div+css");//getresponsewithbodyframebody=body.replace(/\s/g,"");body=body.replace(/\s/g,"");response.send(body);上面就是request库抓取网页的代码,它是把一个http协议请求发给网页服务器去请求数据,实际上它实现的数据是什么就在于php程序,可以request,也可以http直接request。关于request库它是什么样的一个东西不多说,大家就可以直接看它的源码了。

[精选]PHP是如何模拟用户登录并抓取数据的

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-09-11 10:46 • 来自相关话题

  [精选]PHP是如何模拟用户登录并抓取数据的
  点击加入:
  商务合作:请加微信(QQ):2230304070
  技术交流微信群
  我们在学习中单枪匹马,还不如一次短短的交流,你可以在别人吸取各种学习经验,学习方法以及学习技巧,所以,学习与交流少不了一个圈子,提升你的学习技能,请点击加技术群:IT技术交流微信群   
  <br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" /><p style="max-width: 100%;min-height: 1em;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  视频教程分享</p>
  1 2小时教你轻松搞定支付宝、微信扫码支付 <br />公众号里回复:20191108 <br /> <br />2 ThinkPHP6.0极速入门 <br />公众号里回复:20190923 <br /><br />3 Linux编程Shell从入门到精通视频教程(完整版) <br />公众号里回复:shell0915<br /> <br />4 亿级pv多级缓存并发架构案例分析<br />链接:http://www.mano100.cn/thread-1691-1-1.html<br /><br />5 PHP性能优化-协程在高并发场景下的应用<br />链接:http://www.mano100.cn/thread-1693-1-1.html<br /><br />6 PHP实现大型电商平台团购功能的开发<br />链接:http://www.mano100.cn/thread-1692-1-1.html
  <br />
  精选文章正文
  
  模拟登陆经常会遇到吧,但是你是如何模拟的呢?我们可以使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。
  具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  (1)登录页面的地址;
  (2)验证码的地址;
  (3)登录表单需要提交的各个字段的名称和提交方式;
  (4)登录表单提交的地址;
  (5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站):
  
  3. 获取验证码并存储(针对使用验证码的网站):
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选]PHP是如何模拟用户登录并抓取数据的
  点击加入:
  商务合作:请加微信(QQ):2230304070
  技术交流微信群
  我们在学习中单枪匹马,还不如一次短短的交流,你可以在别人吸取各种学习经验,学习方法以及学习技巧,所以,学习与交流少不了一个圈子,提升你的学习技能,请点击加技术群:IT技术交流微信群   
  <br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" /><p style="max-width: 100%;min-height: 1em;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  视频教程分享</p>
  1 2小时教你轻松搞定支付宝、微信扫码支付 <br />公众号里回复:20191108 <br /> <br />2 ThinkPHP6.0极速入门 <br />公众号里回复:20190923 <br /><br />3 Linux编程Shell从入门到精通视频教程(完整版) <br />公众号里回复:shell0915<br /> <br />4 亿级pv多级缓存并发架构案例分析<br />链接:http://www.mano100.cn/thread-1691-1-1.html<br /><br />5 PHP性能优化-协程在高并发场景下的应用<br />链接:http://www.mano100.cn/thread-1693-1-1.html<br /><br />6 PHP实现大型电商平台团购功能的开发<br />链接:http://www.mano100.cn/thread-1692-1-1.html
  <br />
  精选文章正文
  
  模拟登陆经常会遇到吧,但是你是如何模拟的呢?我们可以使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。
  具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  (1)登录页面的地址;
  (2)验证码的地址;
  (3)登录表单需要提交的各个字段的名称和提交方式;
  (4)登录表单提交的地址;
  (5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站):
  
  3. 获取验证码并存储(针对使用验证码的网站):
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

IE法提取网页数据

网站优化优采云 发表了文章 • 0 个评论 • 118 次浏览 • 2022-09-11 10:45 • 来自相关话题

  IE法提取网页数据
  【分享成果,随喜正能量】我们不良的行为、不善的念头、不好的言语,都属于我们内心的暴力,要想获得平和,我们需要自我修习,学会控制情绪,学会内观反省并接近善良。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:IE法提取网页数据
  第一节 利用IE法提取网页数据基础为了获取网页的数据,我们可以通过创建IE控件或webbrowser控件,结合htmlfile对象的方法和属性,模拟浏览器操作,获取浏览器页面的数据。这种方法可以模拟大部分的浏览器操作。浏览器能看到的数据就能用代码获取,但是有个致命的缺点:除去各种弹窗相当烦人外,兼容性也确实是个很伤脑筋的问题。在我自己的实践中感觉这种方法不是很稳定(仅仅是感觉)。1 IE模型的创建我们在实际工作中遇到网站和网页相关问题,例如:如何下载网页数据?网页之间的通讯是怎么实现的、它们能不能被控制等等。如果你是用VB/VBA/脚本或其它支持自动化对象(AUTOMATION)的语言编程,有一个值得了解的方法是掌握对象模型:将网页视为对象来控制,这个方法需要了解的是IE的自动化对象(InternetExplorer.Application)或IE控件(Microsoft Internet Controls),以及标准的文档对象模型(Document)。相关的知识我在前两个专题中做了大量的讲解,这里就不再详细的说明了。我给出下面的代码:Set ie = CreateObject("InternetExplorer.Application") ’创建对象ie.Visible = True ’使IE页面可见,做完这一步,在VBA之外可以看到一个新的IEie.navigate "about:blank" ’建立一个空白页上面这几行代码的作用是创建一个IE应用程序对象,并打开一个空白的网页。
  这个网页独立于VBA的应用程序(WORD或EXCEL)之外,事实上,你必须自已关掉它,或者用ie.Quit下令退出——注意一下,单纯的关闭VBA或SET ie=nothing是不会退出这个网页的。我们经常用的是将第3行的字符串替换成一个网站的名字,或者替换成一个你主机中的文档名,也可以是一个图片名,都是可以的。和你在IE地址栏输入名称浏览这些文档是一样效果。如果仅仅是创建了一个空的模型是没有任何利用的价值的,我们需要真正的网页,这时就需要我们在VBA的应用程序外打开一个完整的网页了,直到网页完全加载我们的操作才能向下进行。2 IE网页页面的加载我们修正一下上面的那段打开空网页的代码:Sub mynz()Set ie = CreateObject("InternetExplorer.Application") ’创建对象ie.Visible = True ’使IE页面可见,做完这一步,在VBA之外可以看到一个新的IEie.navigate " " ’建立一个空白页Do Until .ReadyState = 4 '检查网页是否加载完毕(4表示完全加载) DoEvents ‘循环中交回工作权限给系统,以免“软死机” LoopEnd sub在上面的代码中增加了几行:Do Until .ReadyState = 4 '检查网页是否加载完毕(4表示完全加载) DoEvents ‘循环中交回工作权限给系统,以免“软死机” Loop这几行代码可以保证网页的加载完成,这是根据ie.ReadyState的返回值来判断的。
  readyState一共有5中状态:状态 含义 说明0 未初始化 对象已建立,但是尚未初始化(尚未调用open方法)1 初始化 对象已建立,尚未调用send方法2 发送数据 send()方法已调用,但是当前的状态及http头未知3 数据传送中 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误4 数据接收完毕 此时可以通过通过responseBody和responseText获取完整的回应数据
  通过以上的分析,我们可以看出,只用当.ReadyState = 4时网页的数据才是有效的数据。3 IE页面数据的获得当网页加载完毕,剩下的工作就是从网页中抓取数据了,数据的抓取主要是利用控件对象的属性和方法。
  1)用Set doc = ie.Document 取得网页的文档对象从文档对象(Document)以下展开的对象模型,它代表网页的内容,和前面那个IE的应用程序不是同一个体系.Documnet(文档)是文档对象模型,相当于OFFICE对象中的APPLICATION,取得Document之后,不论修改网页还是读写网页,还是触发事件,一切都好说,每个URL都对应有一个Documnet(这是假如定成功导航Navigate到那个URL完成,因此之前要求确定IE对象READSTATE,以确定对应URL的Document打开了)
  
  2) 在Documnet之下可以取得documentElement和body两个节点。
  可以用下面的语句:set xbody=doc.Body ‘取得body对象set xDoc=doc. documentElement ‘取得根节点body前面已经说过,相当于标记的对象,根节点相当于网页中的标记元素的对象,MHTML的类型库定义里,它们都属于HTMLHtmlElement类型的对象,下面我把这种类型的对象称为一个“节点”,不过要注意的是文档对象不是节点对象,它是HTMLDocument类型。根节点和body节点不同的是根节点包括整个网页,在HTML的文档对象模型中,这类对象有几种属性可以取得其中的内容:对象.innerHtml ‘对象内部的HTML文本对象.OuterHtml ‘对象中的HTML文本,包括对象本身的HTML标记在内对象.innerText ‘对象内部的TEXT,不包括HTML标记对象.OuterText ‘同上,包括对象本身的文本所以,如果我们要抓取某个网站的所有HTML内容,代码可以这样写:set doc=ie.Documentset xDoc=doc. documentElement ‘取得根节点strX=xDoc.OuterHtml ‘取得所有的HTML内容
  3) 每一个标记节点对象之下都有一个名为ChildNodes的集合,它包含了“直属于本节点下的标记”,就象是文件目录,根目录下的子目录.我们可以看到:HTML标记是文档的根节点,是Document的Childnodes集合中的一个成员(Document不是节点,是另一种类型对象,上一级文档,但它可以有下级节点集合,正如磁盘可以有下级目录,但它本身不是目录),BODY是根节点的ChildNodes集合中的一个成员,而DIV和P两个节点则是BODY的ChildNodes集合中的两个成员,同样也有自己的Childnoes集合。我们要注意:文档对象模型中,集合与OFFICE的集合有所不同,集合是从0开始计数的,计数属性是Length而不是Count。
  4)除了ChildNodes集合,大家在网页文档对象中还常见到的就是很大气的一种集合:All集合,这是“最糊涂”的一种集合,文档和各级节点都带有这个集合,正如这个名字所示,它是不分层次的,但用起来也很方便:Set doc=ie.DocumentSet xCols=doc.All ’取得文档中的所有节点集合Set xbCols=doc.body.All ’取得body节点下所有的节点集合虽然任何标记节点都有ALL集合,但我们还是喜欢用DOCUMENT的ALL,原因无它,文档最大,一锅烩的ALL找起来也最合适。ALL查找是有条件的:如果这个标记没有ID,你无法查到它的名字。
  不过,ALL集合有一个很方便的特性:ID可以挂到ALL集合之下:strX=doc.All.mytag.innerhtml
  5)获得文档对象的getElementsByName集合,可以利用下面的方法:set mydivs=doc. getElementsByName(“div”) ‘取得所有DIV标记,注意还是集合
  6) 文档对象的FORMS集合,因为大部分网页的数据提交都是通过FORM标记提交的:Set myForms=doc.Forms ’取得所有的FORM标记Set frmX=myForms.item(0) ’第1个FORMFORM标记节点代表的对象是很多朋友关心的内容——在网页对象中,它可以发送数据到服务器,使服务器刷新网页(实际上是服务器按某个格式约定发回数据),我们可以把网页的FORM看成是一个远程的函数调用接口,FORM标记中的ACTION指向的URL地址就是函数入口,而FORM标记内的各个INPUT标记节点就是函数的参数,当发出FORM.Submit方法时,就是远程调用函数了,在服务器端,诸如ASP,PHP就是老老实实找FORM的参数,不管你是用GET还是POST:frmX.submit ’相当于用户在页面上按下FORM的发送按键
  
  上面我罗列了获取网页数据的一般的方法,并没有什么特别的使用要求,大家可以根据自己的习惯来利用,这个专题之后的内容就是灵活运用这些知识点来解决实际问题了。
  本节知识点回向:
  如何提交表单?如何下载图片的地址?如何获得表的数据?
  【分享成果,随喜正能量】得意之时淡然,失意之时坦然,顺风顺水的时候需要一种内敛和沉稳,遭遇逆境和挑战的时候,要有一份举重若轻、生命昂扬的生命展望,就算匍匐于岁月尘埃,也要仰望生命的星辰灿烂。 。
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序: 查看全部

  IE法提取网页数据
  【分享成果,随喜正能量】我们不良的行为、不善的念头、不好的言语,都属于我们内心的暴力,要想获得平和,我们需要自我修习,学会控制情绪,学会内观反省并接近善良。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:IE法提取网页数据
  第一节 利用IE法提取网页数据基础为了获取网页的数据,我们可以通过创建IE控件或webbrowser控件,结合htmlfile对象的方法和属性,模拟浏览器操作,获取浏览器页面的数据。这种方法可以模拟大部分的浏览器操作。浏览器能看到的数据就能用代码获取,但是有个致命的缺点:除去各种弹窗相当烦人外,兼容性也确实是个很伤脑筋的问题。在我自己的实践中感觉这种方法不是很稳定(仅仅是感觉)。1 IE模型的创建我们在实际工作中遇到网站和网页相关问题,例如:如何下载网页数据?网页之间的通讯是怎么实现的、它们能不能被控制等等。如果你是用VB/VBA/脚本或其它支持自动化对象(AUTOMATION)的语言编程,有一个值得了解的方法是掌握对象模型:将网页视为对象来控制,这个方法需要了解的是IE的自动化对象(InternetExplorer.Application)或IE控件(Microsoft Internet Controls),以及标准的文档对象模型(Document)。相关的知识我在前两个专题中做了大量的讲解,这里就不再详细的说明了。我给出下面的代码:Set ie = CreateObject("InternetExplorer.Application") ’创建对象ie.Visible = True ’使IE页面可见,做完这一步,在VBA之外可以看到一个新的IEie.navigate "about:blank" ’建立一个空白页上面这几行代码的作用是创建一个IE应用程序对象,并打开一个空白的网页。
  这个网页独立于VBA的应用程序(WORD或EXCEL)之外,事实上,你必须自已关掉它,或者用ie.Quit下令退出——注意一下,单纯的关闭VBA或SET ie=nothing是不会退出这个网页的。我们经常用的是将第3行的字符串替换成一个网站的名字,或者替换成一个你主机中的文档名,也可以是一个图片名,都是可以的。和你在IE地址栏输入名称浏览这些文档是一样效果。如果仅仅是创建了一个空的模型是没有任何利用的价值的,我们需要真正的网页,这时就需要我们在VBA的应用程序外打开一个完整的网页了,直到网页完全加载我们的操作才能向下进行。2 IE网页页面的加载我们修正一下上面的那段打开空网页的代码:Sub mynz()Set ie = CreateObject("InternetExplorer.Application") ’创建对象ie.Visible = True ’使IE页面可见,做完这一步,在VBA之外可以看到一个新的IEie.navigate " " ’建立一个空白页Do Until .ReadyState = 4 '检查网页是否加载完毕(4表示完全加载) DoEvents ‘循环中交回工作权限给系统,以免“软死机” LoopEnd sub在上面的代码中增加了几行:Do Until .ReadyState = 4 '检查网页是否加载完毕(4表示完全加载) DoEvents ‘循环中交回工作权限给系统,以免“软死机” Loop这几行代码可以保证网页的加载完成,这是根据ie.ReadyState的返回值来判断的。
  readyState一共有5中状态:状态 含义 说明0 未初始化 对象已建立,但是尚未初始化(尚未调用open方法)1 初始化 对象已建立,尚未调用send方法2 发送数据 send()方法已调用,但是当前的状态及http头未知3 数据传送中 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误4 数据接收完毕 此时可以通过通过responseBody和responseText获取完整的回应数据
  通过以上的分析,我们可以看出,只用当.ReadyState = 4时网页的数据才是有效的数据。3 IE页面数据的获得当网页加载完毕,剩下的工作就是从网页中抓取数据了,数据的抓取主要是利用控件对象的属性和方法。
  1)用Set doc = ie.Document 取得网页的文档对象从文档对象(Document)以下展开的对象模型,它代表网页的内容,和前面那个IE的应用程序不是同一个体系.Documnet(文档)是文档对象模型,相当于OFFICE对象中的APPLICATION,取得Document之后,不论修改网页还是读写网页,还是触发事件,一切都好说,每个URL都对应有一个Documnet(这是假如定成功导航Navigate到那个URL完成,因此之前要求确定IE对象READSTATE,以确定对应URL的Document打开了)
  
  2) 在Documnet之下可以取得documentElement和body两个节点。
  可以用下面的语句:set xbody=doc.Body ‘取得body对象set xDoc=doc. documentElement ‘取得根节点body前面已经说过,相当于标记的对象,根节点相当于网页中的标记元素的对象,MHTML的类型库定义里,它们都属于HTMLHtmlElement类型的对象,下面我把这种类型的对象称为一个“节点”,不过要注意的是文档对象不是节点对象,它是HTMLDocument类型。根节点和body节点不同的是根节点包括整个网页,在HTML的文档对象模型中,这类对象有几种属性可以取得其中的内容:对象.innerHtml ‘对象内部的HTML文本对象.OuterHtml ‘对象中的HTML文本,包括对象本身的HTML标记在内对象.innerText ‘对象内部的TEXT,不包括HTML标记对象.OuterText ‘同上,包括对象本身的文本所以,如果我们要抓取某个网站的所有HTML内容,代码可以这样写:set doc=ie.Documentset xDoc=doc. documentElement ‘取得根节点strX=xDoc.OuterHtml ‘取得所有的HTML内容
  3) 每一个标记节点对象之下都有一个名为ChildNodes的集合,它包含了“直属于本节点下的标记”,就象是文件目录,根目录下的子目录.我们可以看到:HTML标记是文档的根节点,是Document的Childnodes集合中的一个成员(Document不是节点,是另一种类型对象,上一级文档,但它可以有下级节点集合,正如磁盘可以有下级目录,但它本身不是目录),BODY是根节点的ChildNodes集合中的一个成员,而DIV和P两个节点则是BODY的ChildNodes集合中的两个成员,同样也有自己的Childnoes集合。我们要注意:文档对象模型中,集合与OFFICE的集合有所不同,集合是从0开始计数的,计数属性是Length而不是Count。
  4)除了ChildNodes集合,大家在网页文档对象中还常见到的就是很大气的一种集合:All集合,这是“最糊涂”的一种集合,文档和各级节点都带有这个集合,正如这个名字所示,它是不分层次的,但用起来也很方便:Set doc=ie.DocumentSet xCols=doc.All ’取得文档中的所有节点集合Set xbCols=doc.body.All ’取得body节点下所有的节点集合虽然任何标记节点都有ALL集合,但我们还是喜欢用DOCUMENT的ALL,原因无它,文档最大,一锅烩的ALL找起来也最合适。ALL查找是有条件的:如果这个标记没有ID,你无法查到它的名字。
  不过,ALL集合有一个很方便的特性:ID可以挂到ALL集合之下:strX=doc.All.mytag.innerhtml
  5)获得文档对象的getElementsByName集合,可以利用下面的方法:set mydivs=doc. getElementsByName(“div”) ‘取得所有DIV标记,注意还是集合
  6) 文档对象的FORMS集合,因为大部分网页的数据提交都是通过FORM标记提交的:Set myForms=doc.Forms ’取得所有的FORM标记Set frmX=myForms.item(0) ’第1个FORMFORM标记节点代表的对象是很多朋友关心的内容——在网页对象中,它可以发送数据到服务器,使服务器刷新网页(实际上是服务器按某个格式约定发回数据),我们可以把网页的FORM看成是一个远程的函数调用接口,FORM标记中的ACTION指向的URL地址就是函数入口,而FORM标记内的各个INPUT标记节点就是函数的参数,当发出FORM.Submit方法时,就是远程调用函数了,在服务器端,诸如ASP,PHP就是老老实实找FORM的参数,不管你是用GET还是POST:frmX.submit ’相当于用户在页面上按下FORM的发送按键
  
  上面我罗列了获取网页数据的一般的方法,并没有什么特别的使用要求,大家可以根据自己的习惯来利用,这个专题之后的内容就是灵活运用这些知识点来解决实际问题了。
  本节知识点回向:
  如何提交表单?如何下载图片的地址?如何获得表的数据?
  【分享成果,随喜正能量】得意之时淡然,失意之时坦然,顺风顺水的时候需要一种内敛和沉稳,遭遇逆境和挑战的时候,要有一份举重若轻、生命昂扬的生命展望,就算匍匐于岁月尘埃,也要仰望生命的星辰灿烂。 。
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

php如何抓取网页数据?php三种方法的详细介绍。

网站优化优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2022-09-05 20:02 • 来自相关话题

  php如何抓取网页数据?php三种方法的详细介绍。
  php如何抓取网页数据?php抓取网页的三种方法。php三种抓取方法的详细介绍。php抓取网页数据相关介绍。
  php中就有获取网页地址的方法,具体自己去查找吧,很多的。
  
  phpmyadmin爬虫,抓取任意网站数据-csdn博客
  phpmyadmin
  我一般用access
  
  当然是phpmyadmin啦
  先回答第一个问题,phpmyadmin等统计系统肯定可以做到,但抓取网页就不是一个很好的事情了。主要原因有三点:1,对于像phpmyadmin之类的syslog系统,因为是来自中国人的世界,所以各种数据库都用,所以包括中国的ajax,微信,淘宝,pingq这样的网站都需要定制数据库,你觉得你能抓取么,应该有很多的syslog控制软件可以抓取,例如百度应该就支持,而且对于这样的大型网站,基本是没有特定的抓取流程可言的,只有数据库维护,各种获取方式的转换和记录,在开发的时候,可能需要定制。
  2,php这种方式存在一个问题,就是并不是所有链接都能遍历,国内的xml解析系统,还是抓大站慢,抓小站速度快。而且xml就是已经占主导地位了,其它解析就是个鸡肋。3,说一个定义,php抓取网页是用于网页爬虫,header这类的抓取,很多时候你需要构造一个访问通道,然后将网页拆分到不同的包中,php可以采用各种设置来提升定位效率,但是iframe不太适合爬虫,iframe是专门用来构造成js和其它的数据跳转连接的,js是专门用来请求数据的,爬虫无法像iframe一样直接从js直接访问网页。 查看全部

  php如何抓取网页数据?php三种方法的详细介绍。
  php如何抓取网页数据?php抓取网页的三种方法。php三种抓取方法的详细介绍。php抓取网页数据相关介绍。
  php中就有获取网页地址的方法,具体自己去查找吧,很多的。
  
  phpmyadmin爬虫,抓取任意网站数据-csdn博客
  phpmyadmin
  我一般用access
  
  当然是phpmyadmin啦
  先回答第一个问题,phpmyadmin等统计系统肯定可以做到,但抓取网页就不是一个很好的事情了。主要原因有三点:1,对于像phpmyadmin之类的syslog系统,因为是来自中国人的世界,所以各种数据库都用,所以包括中国的ajax,微信,淘宝,pingq这样的网站都需要定制数据库,你觉得你能抓取么,应该有很多的syslog控制软件可以抓取,例如百度应该就支持,而且对于这样的大型网站,基本是没有特定的抓取流程可言的,只有数据库维护,各种获取方式的转换和记录,在开发的时候,可能需要定制。
  2,php这种方式存在一个问题,就是并不是所有链接都能遍历,国内的xml解析系统,还是抓大站慢,抓小站速度快。而且xml就是已经占主导地位了,其它解析就是个鸡肋。3,说一个定义,php抓取网页是用于网页爬虫,header这类的抓取,很多时候你需要构造一个访问通道,然后将网页拆分到不同的包中,php可以采用各种设置来提升定位效率,但是iframe不太适合爬虫,iframe是专门用来构造成js和其它的数据跳转连接的,js是专门用来请求数据的,爬虫无法像iframe一样直接从js直接访问网页。

qq邮箱如何抓取网页数据php中抓取信息。(图)

网站优化优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2022-08-24 12:30 • 来自相关话题

  qq邮箱如何抓取网页数据php中抓取信息。(图)
  php如何抓取网页数据
  php中抓取网页信息。qq邮箱好像采用spam模式抓取。qq如何使用工具抓取其使用云主机或vps挂代理。打开ua,默认浏览器。使用工具。复制,粘贴这个指令就能抓取到了。
  可以看看这个案例。
  复制粘贴
  百度搜索有
  
  以前我用adblock开发过一个过滤广告的插件。对于我来说很方便。
  qq邮箱网页要自己设置正则表达式
  spamua
  不一定靠浏览器工具,可以使用专门的工具来做,比如dedecms,dedecms管理站点服务器,
  adminautopager
  内联
  
  百度统计站长可以自己注册百度自己的数据源,也可以外接到一个全国性互联网数据源,不管是从教育网,还是全国性的网站,百度对这个网站的数据都是保存的。就像一个公司一样,只要你有数据源,可以在上面爬。
  360
  wechatisopen!itfollowseverythingwhateveryouseeaboutus!
  用自己的wifi信息,
  搜狐首页上有一个带标签的检索栏,那就是我在用的,它可以检索我附近的所有网站。
  powershell可以写php代码爬取站点
  qq邮箱,有自己的邮箱id,然后输入id,再通过代理或者搜索引擎, 查看全部

  qq邮箱如何抓取网页数据php中抓取信息。(图)
  php如何抓取网页数据
  php中抓取网页信息。qq邮箱好像采用spam模式抓取。qq如何使用工具抓取其使用云主机或vps挂代理。打开ua,默认浏览器。使用工具。复制,粘贴这个指令就能抓取到了。
  可以看看这个案例。
  复制粘贴
  百度搜索有
  
  以前我用adblock开发过一个过滤广告的插件。对于我来说很方便。
  qq邮箱网页要自己设置正则表达式
  spamua
  不一定靠浏览器工具,可以使用专门的工具来做,比如dedecms,dedecms管理站点服务器,
  adminautopager
  内联
  
  百度统计站长可以自己注册百度自己的数据源,也可以外接到一个全国性互联网数据源,不管是从教育网,还是全国性的网站,百度对这个网站的数据都是保存的。就像一个公司一样,只要你有数据源,可以在上面爬。
  360
  wechatisopen!itfollowseverythingwhateveryouseeaboutus!
  用自己的wifi信息,
  搜狐首页上有一个带标签的检索栏,那就是我在用的,它可以检索我附近的所有网站。
  powershell可以写php代码爬取站点
  qq邮箱,有自己的邮箱id,然后输入id,再通过代理或者搜索引擎,

简单爬虫php如何抓取网页数据?可以使用requests吗?

网站优化优采云 发表了文章 • 0 个评论 • 149 次浏览 • 2022-08-15 02:04 • 来自相关话题

  简单爬虫php如何抓取网页数据?可以使用requests吗?
  php如何抓取网页数据?可以使用requests。对于简单爬虫,php里面自带的exec函数就可以做到。如何抓取github上的项目?对于简单爬虫,php里面自带的exec函数就可以做到。如何抓取搜索引擎上的结果?对于简单爬虫,php里面自带的exec函数就可以做到。很多php框架提供了http请求和get请求的函数库,如websphere。
  
  http请求由浏览器提供。对于一个完整的爬虫,爬虫的编写就是架构清晰,逻辑明确,交互简单的过程。爬虫流程分为以下几个阶段:1.获取数据2.解析数据3.传输数据4.获取结果这一张图简单说明了一个完整的爬虫的四个阶段。网站接收到请求,返回响应给服务器,服务器再解析数据,返回给浏览器。例如,获取京东的商品购买记录,就是一个完整的爬虫的流程。
  在php当中实现同样的一个流程,就是通过scrapy框架来完成。所以,抓取网页数据是很简单的,只要掌握scrapy框架来实现就可以了。对于搜索引擎上的数据,我们可以通过selenium这个东西来操作,再添加数据测试就可以实现。selenium的安装很简单,我在这里就不多做描述了。参考下面的selenium的教程。
  
  注意selenium也只是一个工具,想要将selenium应用到爬虫中,还需要其他的方法,后面我们会详细讲解。创建对象在python中,只要对象就可以进行操作,selenium也一样。所以,我们可以创建一个对象scrapy_crawler来表示我们所操作的爬虫对象。1.获取数据创建对象scrapy_crawler,来表示scrapy框架中爬虫对象。
  2.解析数据获取完数据后,需要解析,解析爬虫对象的输出结果,并将结果返回给浏览器。解析代码如下:scrapy_crawler=scrapy.crawler()3.传输数据解析完数据后,可以通过将数据通过scrapy框架的url模块进行传输。传输代码如下:fromscrapy.urlimportpathfromscrapy.httpimportrequestdefrequest_url(url):try:return"请求地址:"+pathexceptexceptionase:print("请求失败:",e)exceptexceptionasex:print("请求无效:",e)http_path="//"+pathexceptselectorasself:returnpath.replace("/","/")try:url_file=request_url.format("/")url=""excepturllib.urlerrorasu:url=url_file.request(url)print("请求失败:",url)defrequest_response(url):"请求地址:"""return"""print("请求成功:",url)defrequest_response(url,p。 查看全部

  简单爬虫php如何抓取网页数据?可以使用requests吗?
  php如何抓取网页数据?可以使用requests。对于简单爬虫,php里面自带的exec函数就可以做到。如何抓取github上的项目?对于简单爬虫,php里面自带的exec函数就可以做到。如何抓取搜索引擎上的结果?对于简单爬虫,php里面自带的exec函数就可以做到。很多php框架提供了http请求和get请求的函数库,如websphere。
  
  http请求由浏览器提供。对于一个完整的爬虫,爬虫的编写就是架构清晰,逻辑明确,交互简单的过程。爬虫流程分为以下几个阶段:1.获取数据2.解析数据3.传输数据4.获取结果这一张图简单说明了一个完整的爬虫的四个阶段。网站接收到请求,返回响应给服务器,服务器再解析数据,返回给浏览器。例如,获取京东的商品购买记录,就是一个完整的爬虫的流程。
  在php当中实现同样的一个流程,就是通过scrapy框架来完成。所以,抓取网页数据是很简单的,只要掌握scrapy框架来实现就可以了。对于搜索引擎上的数据,我们可以通过selenium这个东西来操作,再添加数据测试就可以实现。selenium的安装很简单,我在这里就不多做描述了。参考下面的selenium的教程。
  
  注意selenium也只是一个工具,想要将selenium应用到爬虫中,还需要其他的方法,后面我们会详细讲解。创建对象在python中,只要对象就可以进行操作,selenium也一样。所以,我们可以创建一个对象scrapy_crawler来表示我们所操作的爬虫对象。1.获取数据创建对象scrapy_crawler,来表示scrapy框架中爬虫对象。
  2.解析数据获取完数据后,需要解析,解析爬虫对象的输出结果,并将结果返回给浏览器。解析代码如下:scrapy_crawler=scrapy.crawler()3.传输数据解析完数据后,可以通过将数据通过scrapy框架的url模块进行传输。传输代码如下:fromscrapy.urlimportpathfromscrapy.httpimportrequestdefrequest_url(url):try:return"请求地址:"+pathexceptexceptionase:print("请求失败:",e)exceptexceptionasex:print("请求无效:",e)http_path="//"+pathexceptselectorasself:returnpath.replace("/","/")try:url_file=request_url.format("/")url=""excepturllib.urlerrorasu:url=url_file.request(url)print("请求失败:",url)defrequest_response(url):"请求地址:"""return"""print("请求成功:",url)defrequest_response(url,p。

php如何抓取网页数据php自身提供了非常丰富的功能

网站优化优采云 发表了文章 • 0 个评论 • 109 次浏览 • 2022-08-13 14:06 • 来自相关话题

  php如何抓取网页数据php自身提供了非常丰富的功能
  php如何抓取网页数据php自身提供了非常丰富的功能,我们可以使用php处理网页数据,也可以使用其他程序,一般网页抓取中,用的比较多的是xml数据,python也能处理,那我们就抓取一下you_palored。php,作为php的一个模块,我们可以调用,可以让这个文件处理数据,下面是抓取的结果github-h_ranger/you_palored:一个php封装的you_palored。php文件处理网页数据的工具。
  python可以模拟curl,提交请求时用到requests库下的urlencode,将字符串转换为urlencoded_bytes,提交给ts封装好的httppost方法即可。
  
  建议上传数据库读取..或者mysql
  python调用封装好的httppost方法
  
  php抓取html网页数据,那是必须的,本人有很多php+mysql+php语言嵌入式的项目。
  如果你有封装好的浏览器或者浏览器内置的函数,php是可以直接调用的,你上传php文件的那个http。config,里面有一个baseurl方法,你直接用它设置一个数据连接就行,不需要加上baseurl,调用http。get就可以,而且多个网站的话,这样的话,会按照先读取对应网站得数据,然后用http。getpost方法输出,两端只需要用一个标准模式就好。
  php的也可以用chrome-store, 查看全部

  php如何抓取网页数据php自身提供了非常丰富的功能
  php如何抓取网页数据php自身提供了非常丰富的功能,我们可以使用php处理网页数据,也可以使用其他程序,一般网页抓取中,用的比较多的是xml数据,python也能处理,那我们就抓取一下you_palored。php,作为php的一个模块,我们可以调用,可以让这个文件处理数据,下面是抓取的结果github-h_ranger/you_palored:一个php封装的you_palored。php文件处理网页数据的工具。
  python可以模拟curl,提交请求时用到requests库下的urlencode,将字符串转换为urlencoded_bytes,提交给ts封装好的httppost方法即可。
  
  建议上传数据库读取..或者mysql
  python调用封装好的httppost方法
  
  php抓取html网页数据,那是必须的,本人有很多php+mysql+php语言嵌入式的项目。
  如果你有封装好的浏览器或者浏览器内置的函数,php是可以直接调用的,你上传php文件的那个http。config,里面有一个baseurl方法,你直接用它设置一个数据连接就行,不需要加上baseurl,调用http。get就可以,而且多个网站的话,这样的话,会按照先读取对应网站得数据,然后用http。getpost方法输出,两端只需要用一个标准模式就好。
  php的也可以用chrome-store,

php如何抓取网页数据?,后端抓取常用是html代码解析的方法

网站优化优采云 发表了文章 • 0 个评论 • 198 次浏览 • 2022-07-30 00:01 • 来自相关话题

  php如何抓取网页数据?,后端抓取常用是html代码解析的方法
  php如何抓取网页数据?,,后端抓取常用是html代码解析的方法。但是实际上,并不是用html代码就能抓取的,比如它就有些限制,想要抓取你想要的网页图片需要:浏览器及电脑配置要高,比如有些网站的png是不能直接下载,它需要通过http协议来下载png或gif等。网站蜘蛛要能识别png与pdf。通过http代理或路由抓取你想要的网页,比如http//这样的。还有像php就是用这些方法实现抓取的。你应该有更多的抓取网页的方法。
  html5tablayout///distribution/j2ee-tablayout-turbo2这里有完整的说明
  我们公司的shelljs用的是feed流抓取,可以抓取新浪、百度、腾讯的网页。
  
  推荐bootstraptablayout
  自己写网页抓取,然后还要推荐一款bootstrap生成的网页抓取,
  原生php抓取
  
  首先还是安装一下抓包工具,netease_web_spider之类的,然后看官方文档。一般都是可以抓取图片的。
  网站优化要做好,
  服务器优化(百度、谷歌竞价,seo优化等),官方搭建抓取代理池,用浏览器自带代理,没有就用国内自带代理(前提),用好referral,测试用户体验。
  最简单的就是利用百度抓包工具,然后获取关键词用baiduspider-allproxy-baiduspider实现抓取,最便宜的也就几十块钱。 查看全部

  php如何抓取网页数据?,后端抓取常用是html代码解析的方法
  php如何抓取网页数据?,,后端抓取常用是html代码解析的方法。但是实际上,并不是用html代码就能抓取的,比如它就有些限制,想要抓取你想要的网页图片需要:浏览器及电脑配置要高,比如有些网站的png是不能直接下载,它需要通过http协议来下载png或gif等。网站蜘蛛要能识别png与pdf。通过http代理或路由抓取你想要的网页,比如http//这样的。还有像php就是用这些方法实现抓取的。你应该有更多的抓取网页的方法。
  html5tablayout///distribution/j2ee-tablayout-turbo2这里有完整的说明
  我们公司的shelljs用的是feed流抓取,可以抓取新浪、百度、腾讯的网页。
  
  推荐bootstraptablayout
  自己写网页抓取,然后还要推荐一款bootstrap生成的网页抓取,
  原生php抓取
  
  首先还是安装一下抓包工具,netease_web_spider之类的,然后看官方文档。一般都是可以抓取图片的。
  网站优化要做好,
  服务器优化(百度、谷歌竞价,seo优化等),官方搭建抓取代理池,用浏览器自带代理,没有就用国内自带代理(前提),用好referral,测试用户体验。
  最简单的就是利用百度抓包工具,然后获取关键词用baiduspider-allproxy-baiduspider实现抓取,最便宜的也就几十块钱。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 39 次浏览 • 2022-06-24 18:49 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2022-06-23 07:04 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 34 次浏览 • 2022-06-19 15:54 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 73 次浏览 • 2022-06-15 10:52 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2022-06-05 08:20 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 81 次浏览 • 2022-06-05 02:44 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

php如何抓取网页数据爬虫分析的基本流程【八】

网站优化优采云 发表了文章 • 0 个评论 • 225 次浏览 • 2022-05-28 14:06 • 来自相关话题

  php如何抓取网页数据爬虫分析的基本流程【八】
  php如何抓取网页数据爬虫分析的基本流程1.首先获取网页:接下来,使用浏览器打开,看下能不能看到网页,如果能看到网页,说明已经获取到了网页数据,不要浪费了2.获取网页内容,并解析3.清洗数据,上传工具内的数据是经过过滤,过滤掉没有用的信息,这些数据都要保存在本地,如果在工具内发现没有用的数据,要先用网页截图工具,截图,并存到工具内的数据目录下。
  4.保存数据到mysql数据库下5.写数据库优化:选择对称id的记录接着是选择记录库:默认为admin,从爬虫的角度我比较喜欢用admin记录记录库名字和用户名及其keyword最好使用对称,当然如果没有太复杂,就不一定非要用对称id了admin记录库中的记录记录的id是2,接着说说对称的作用:代表对同一个人id的不同的记录只爬取一条,防止在爬取其他人的记录时,出现重复的记录如果不用对称编号,也可以编一个大的编号,进行分类爬取最后说说keyword:这个只能手工添加,爬虫是解析标记的,但也需要对网页内容进行处理,可以使用正则表达式。
  只要是包含这个词的网页都要爬取完毕以上操作基本操作大家都掌握,就能爬取网页数据,小毛再说下如何爬取下载数据,首先是爬虫要先安装抓取数据库,如果还没有就先不用理他,安装后还有一个xxdownloader.exe来安装抓取数据库。点击安装后,就要进行一些代码的编写,首先是进行网页的抓取,获取网页上面可能会有网址的href,然后把这个网址接下来拼接到一起,放到data文件中。
  写完以后,在客户端运行,就能够看到网页爬虫给出的网址和内容了,我是用这个抓取的网页,可以看到前面的网址,因为刚刚安装了数据库,data文件的路径还是test.php?2月26日查看网页源码mysql选择url我们可以看到,可以看到有个前缀admin,最后url回到首页,使用data文件的地址,前缀admin+:8888就是爬虫爬取前页的url了,相当于爬虫的地址是admin,那我们就把地址改成admin.php首页的url,可以看到前面都是回车分析url字段data,data字段对应的数据库有个database_url字段,这个字段的意思为数据库名称admin里面有很多个数据库可以选择性爬取一个网页,分析完后再去爬其他网页也是非常简单的。
  为了方便分析,我们先下载源码如果觉得有帮助,点个赞呗,点个赞有动力!最后对php爬虫感兴趣的朋友,可以关注我!php推荐一份编程入门教程——php从入门到高级。 查看全部

  php如何抓取网页数据爬虫分析的基本流程【八】
  php如何抓取网页数据爬虫分析的基本流程1.首先获取网页:接下来,使用浏览器打开,看下能不能看到网页,如果能看到网页,说明已经获取到了网页数据,不要浪费了2.获取网页内容,并解析3.清洗数据,上传工具内的数据是经过过滤,过滤掉没有用的信息,这些数据都要保存在本地,如果在工具内发现没有用的数据,要先用网页截图工具,截图,并存到工具内的数据目录下。
  4.保存数据到mysql数据库下5.写数据库优化:选择对称id的记录接着是选择记录库:默认为admin,从爬虫的角度我比较喜欢用admin记录记录库名字和用户名及其keyword最好使用对称,当然如果没有太复杂,就不一定非要用对称id了admin记录库中的记录记录的id是2,接着说说对称的作用:代表对同一个人id的不同的记录只爬取一条,防止在爬取其他人的记录时,出现重复的记录如果不用对称编号,也可以编一个大的编号,进行分类爬取最后说说keyword:这个只能手工添加,爬虫是解析标记的,但也需要对网页内容进行处理,可以使用正则表达式。
  只要是包含这个词的网页都要爬取完毕以上操作基本操作大家都掌握,就能爬取网页数据,小毛再说下如何爬取下载数据,首先是爬虫要先安装抓取数据库,如果还没有就先不用理他,安装后还有一个xxdownloader.exe来安装抓取数据库。点击安装后,就要进行一些代码的编写,首先是进行网页的抓取,获取网页上面可能会有网址的href,然后把这个网址接下来拼接到一起,放到data文件中。
  写完以后,在客户端运行,就能够看到网页爬虫给出的网址和内容了,我是用这个抓取的网页,可以看到前面的网址,因为刚刚安装了数据库,data文件的路径还是test.php?2月26日查看网页源码mysql选择url我们可以看到,可以看到有个前缀admin,最后url回到首页,使用data文件的地址,前缀admin+:8888就是爬虫爬取前页的url了,相当于爬虫的地址是admin,那我们就把地址改成admin.php首页的url,可以看到前面都是回车分析url字段data,data字段对应的数据库有个database_url字段,这个字段的意思为数据库名称admin里面有很多个数据库可以选择性爬取一个网页,分析完后再去爬其他网页也是非常简单的。
  为了方便分析,我们先下载源码如果觉得有帮助,点个赞呗,点个赞有动力!最后对php爬虫感兴趣的朋友,可以关注我!php推荐一份编程入门教程——php从入门到高级。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2022-05-26 01:04 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

php如何抓取网页数据 PHP之伪静态与真静态

网站优化优采云 发表了文章 • 0 个评论 • 39 次浏览 • 2022-05-20 22:42 • 来自相关话题

  php如何抓取网页数据 PHP之伪静态与真静态
  
  首先,什么是伪静态:
  伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。
  另外在补充两个名词解析
  静态网址:纯静态HTML文档,能使用filetype:htm 查询到的网页
  动态网址:内容存于数据库中,根据要求显示内容,URL中以 ? # & 显示不同的参数,如:news.php?lang=cn&class=1&id=2
  动态、静态、伪静态之间的利与弊(新)
  动态网址
  首先,动态网址目前对于Google来说,“不能被抓取”的说法是错误的,Google能够很好的处理动态网址并顺利抓取;其次“参数不能超过3个”的说法也不正确,Google能够抓取参数超过3个的动态网址,不过,为了避免URL太长应尽量减少参数。
  其次,动态网址有其一定的优势,以上面所说的 news.php?lang=cn&class=1&id=2 为例,网址中的参数准确的告诉Google,此URL内容语言为cn、隶属于分类1、内容ID为2,更便于Google对内容的识别处理。
  最后,动态网址应尽量精简,特别是会话标识(sid)和查询(query)参数,容易造成大量相同页面。
  静态网址
  首先,静态网址具有的绝对优势是其明晰,/product/nokia/n95.html和/about.html可以很容易被理解,从而在搜索结果中可能点击量相对较高。
  其次,静态网址未必就是最好的网址形式,上述动态网址中说到,动态网址能够告诉Google一些可以识别的参数,而静态网址如果文档布置不够恰当(如:过于扁平化,将HTML文档全放在根目录下)及其他因素,反而不如静态网址为Google提供的参考信息丰富。
  最后,樂思蜀觉得Google此文中是否有其隐藏含义?“更新此种类型网址的页面会比较耗费时间,尤其是当信息量增长很快时,因为每一个单独的页面都必须更改编译代码。”虽然所说的是网站,但在Google系统中是否同样存在这样的问题呢?
  伪静态网址
  首先,伪静态网址不能让动态网址“静态化”,伪静态仅仅是对动态网址的一个重写,Google不会认为伪静态就是HTML文档。
  其次,伪静态可取,但应把重心放在去除冗余参数、规范URL、尽可能的避免重复页上。
  最后,伪静态有很大潜大危险,最好在对网站系统、网站结构、内容分布、参数意义熟悉的情况下使用。
  在写伪静态规则时,应保留有价值的参数,不要将有价值的参数全部精简掉,如前面例子中的 news.php?lang=cn&class=1&id=2 最好重写为 news-cn-class1-id2.html,而不是过份精简重写为 news-2.html。
  再就是伪静态中一定不能包含会话标识(sid)和查询(query)参数,/product.asp?sid=98971298178906&id=1234 这样的动态网址,其中的sid本来Google能够识别并屏蔽,但如果重写为 /product/98971298178906/1234,Google不但无法识别,还在整站中造成无限重复页面(每个会话都会产生一个新的会话ID)。
  我们应该选择伪静态还是真静态
  1、使用真静态和假静态对SEO来说没有什么区别
  2、使用真静态可能将导致硬盘损坏并将影响论坛性能
  3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷
  4、最重要的一点,我们要静态是为了SEO
  所以:
  1、使用真静态的方法可以直接排除了,因为无论怎么生成,对硬盘来说都是很伤的。
  2、既然真伪静态的效果一样,我们就可以选择伪静态了。
  3、但是伪静态大量使用会造成CPU超负荷。
  4、所以我们只要不大量使用就可以了。
  5、既然静态只是给SEO看的,我们只需要伪静态给SEO就行了,不需要给用户使用。
  6、所以我们只要在专门提供给SEO爬的Archiver中使用伪静态就可以了。
  7、谢谢大家耐心看我写的文章。
  8、有何不解的地方或是有不同的看法欢迎提出 查看全部

  php如何抓取网页数据 PHP之伪静态与真静态
  
  首先,什么是伪静态:
  伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。
  另外在补充两个名词解析
  静态网址:纯静态HTML文档,能使用filetype:htm 查询到的网页
  动态网址:内容存于数据库中,根据要求显示内容,URL中以 ? # & 显示不同的参数,如:news.php?lang=cn&class=1&id=2
  动态、静态、伪静态之间的利与弊(新)
  动态网址
  首先,动态网址目前对于Google来说,“不能被抓取”的说法是错误的,Google能够很好的处理动态网址并顺利抓取;其次“参数不能超过3个”的说法也不正确,Google能够抓取参数超过3个的动态网址,不过,为了避免URL太长应尽量减少参数。
  其次,动态网址有其一定的优势,以上面所说的 news.php?lang=cn&class=1&id=2 为例,网址中的参数准确的告诉Google,此URL内容语言为cn、隶属于分类1、内容ID为2,更便于Google对内容的识别处理。
  最后,动态网址应尽量精简,特别是会话标识(sid)和查询(query)参数,容易造成大量相同页面。
  静态网址
  首先,静态网址具有的绝对优势是其明晰,/product/nokia/n95.html和/about.html可以很容易被理解,从而在搜索结果中可能点击量相对较高。
  其次,静态网址未必就是最好的网址形式,上述动态网址中说到,动态网址能够告诉Google一些可以识别的参数,而静态网址如果文档布置不够恰当(如:过于扁平化,将HTML文档全放在根目录下)及其他因素,反而不如静态网址为Google提供的参考信息丰富。
  最后,樂思蜀觉得Google此文中是否有其隐藏含义?“更新此种类型网址的页面会比较耗费时间,尤其是当信息量增长很快时,因为每一个单独的页面都必须更改编译代码。”虽然所说的是网站,但在Google系统中是否同样存在这样的问题呢?
  伪静态网址
  首先,伪静态网址不能让动态网址“静态化”,伪静态仅仅是对动态网址的一个重写,Google不会认为伪静态就是HTML文档。
  其次,伪静态可取,但应把重心放在去除冗余参数、规范URL、尽可能的避免重复页上。
  最后,伪静态有很大潜大危险,最好在对网站系统、网站结构、内容分布、参数意义熟悉的情况下使用。
  在写伪静态规则时,应保留有价值的参数,不要将有价值的参数全部精简掉,如前面例子中的 news.php?lang=cn&class=1&id=2 最好重写为 news-cn-class1-id2.html,而不是过份精简重写为 news-2.html。
  再就是伪静态中一定不能包含会话标识(sid)和查询(query)参数,/product.asp?sid=98971298178906&id=1234 这样的动态网址,其中的sid本来Google能够识别并屏蔽,但如果重写为 /product/98971298178906/1234,Google不但无法识别,还在整站中造成无限重复页面(每个会话都会产生一个新的会话ID)。
  我们应该选择伪静态还是真静态
  1、使用真静态和假静态对SEO来说没有什么区别
  2、使用真静态可能将导致硬盘损坏并将影响论坛性能
  3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷
  4、最重要的一点,我们要静态是为了SEO
  所以:
  1、使用真静态的方法可以直接排除了,因为无论怎么生成,对硬盘来说都是很伤的。
  2、既然真伪静态的效果一样,我们就可以选择伪静态了。
  3、但是伪静态大量使用会造成CPU超负荷。
  4、所以我们只要不大量使用就可以了。
  5、既然静态只是给SEO看的,我们只需要伪静态给SEO就行了,不需要给用户使用。
  6、所以我们只要在专门提供给SEO爬的Archiver中使用伪静态就可以了。
  7、谢谢大家耐心看我写的文章。
  8、有何不解的地方或是有不同的看法欢迎提出

php如何抓取网页数据?(一)_数据库_

网站优化优采云 发表了文章 • 0 个评论 • 126 次浏览 • 2022-05-17 18:07 • 来自相关话题

  php如何抓取网页数据?(一)_数据库_
  php如何抓取网页数据?这是一个我们老常问的问题,毕竟业内也不会很少接触php抓取,或者听说过php抓取这种看上去高深得不得了的名词,那么我们今天就来说说php是如何抓取一个网页的。正式开始之前,我们先说说网页是如何保存在浏览器页面中的,我们普遍采用的方式是js方式,也就是浏览器被加载之后,js代码在加载下来的时候会被php解析。
  那么问题来了,php想要抓取网页,为什么要用js呢?在第一次加载网页时抓取网页数据,再在解析的时候解析js代码,这种事情听上去蛮cool的,每个人的实际场景不一样,但是如果使用的是,在php解析js代码之后将数据从浏览器中post到数据库中,而后再解析js代码获取数据应该会更加方便一些。数据库中的数据是php解析js代码写入的,php解析是建立在js基础上的,所以不像解析js直接获取数据,当php解析器遇到不认识的js代码时解析不出数据,甚至还要再进行js的hook,而js是基于javascript的,所以就算是很简单的js程序,都会认识javascript。
  比如下面这个典型的网页中html代码可以看到title被解析为title,time被解析为time,name被解析为name,ad被解析为ad,index被解析为index,在php代码解析post请求的时候会先对http请求进行解析,然后根据规范对数据的格式进行解析,然后根据数据库表中的记录进行相应的解析。
  代码我们今天不太展示了,有兴趣的朋友可以参考我们的文章:一个关于简单爬虫的设计与实现。数据库我们直接来看一个单纯post请求的例子,代码如下:constrequest=require('localhost').request();functionpost(url,username,password){if(url.split('/').length===。
  1){constbody=request。urlopen(url)。readystate;constjson=json。parse(body);if(json。stringify(body)){returnconsole。log('posts:'+json。tostring());}else{//获取头部信息returnusername=body['cookie']。slice(1,。
  1)[1];json。stringify(body['headers'])。length===2;returnnull;}}}functionpostdata(url,params){constmykey=request。urlopen(url)。key。split('/')。length===1&&mykey。
  split('')。length===1?mykey:'';returnbody['headers']。slice(1,。
  1)[1];}functionclean(postrepo=''){constdeletedelay=date.satellite().minday.millisecon 查看全部

  php如何抓取网页数据?(一)_数据库_
  php如何抓取网页数据?这是一个我们老常问的问题,毕竟业内也不会很少接触php抓取,或者听说过php抓取这种看上去高深得不得了的名词,那么我们今天就来说说php是如何抓取一个网页的。正式开始之前,我们先说说网页是如何保存在浏览器页面中的,我们普遍采用的方式是js方式,也就是浏览器被加载之后,js代码在加载下来的时候会被php解析。
  那么问题来了,php想要抓取网页,为什么要用js呢?在第一次加载网页时抓取网页数据,再在解析的时候解析js代码,这种事情听上去蛮cool的,每个人的实际场景不一样,但是如果使用的是,在php解析js代码之后将数据从浏览器中post到数据库中,而后再解析js代码获取数据应该会更加方便一些。数据库中的数据是php解析js代码写入的,php解析是建立在js基础上的,所以不像解析js直接获取数据,当php解析器遇到不认识的js代码时解析不出数据,甚至还要再进行js的hook,而js是基于javascript的,所以就算是很简单的js程序,都会认识javascript。
  比如下面这个典型的网页中html代码可以看到title被解析为title,time被解析为time,name被解析为name,ad被解析为ad,index被解析为index,在php代码解析post请求的时候会先对http请求进行解析,然后根据规范对数据的格式进行解析,然后根据数据库表中的记录进行相应的解析。
  代码我们今天不太展示了,有兴趣的朋友可以参考我们的文章:一个关于简单爬虫的设计与实现。数据库我们直接来看一个单纯post请求的例子,代码如下:constrequest=require('localhost').request();functionpost(url,username,password){if(url.split('/').length===。
  1){constbody=request。urlopen(url)。readystate;constjson=json。parse(body);if(json。stringify(body)){returnconsole。log('posts:'+json。tostring());}else{//获取头部信息returnusername=body['cookie']。slice(1,。
  1)[1];json。stringify(body['headers'])。length===2;returnnull;}}}functionpostdata(url,params){constmykey=request。urlopen(url)。key。split('/')。length===1&&mykey。
  split('')。length===1?mykey:'';returnbody['headers']。slice(1,。
  1)[1];}functionclean(postrepo=''){constdeletedelay=date.satellite().minday.millisecon

php如何抓取网页数据(php如何抓取网页数据?接下来就说说php实现抓取数据的3种方法)

网站优化优采云 发表了文章 • 0 个评论 • 73 次浏览 • 2022-04-13 20:02 • 来自相关话题

  php如何抓取网页数据(php如何抓取网页数据?接下来就说说php实现抓取数据的3种方法)
  php如何抓取网页数据?接下来就说说php实现抓取网页数据的3种方法:1.第一种方法:使用php后台来抓取网页数据在web开发中,为了达到抓取网页数据的目的,一般会使用php或者jsp来实现。目前先要说的是php抓取网页的时候,经常会采用header的方式来加载网页,很多朋友也是这样做的,但是对于web服务器来说,这并不是php对象的真正加载过程,假如抓取一个网页,先判断这个网页是否支持header访问加载,若不支持的话,则会增加jsp进程,再用jsp进程去加载数据,使网页加载完整。
  php抓取一个网页数据时,会分为加载页面、网页正常工作、网页错误、网页关闭、保存结果。php抓取网页速度的快慢,与网站的设计、配置是分不开的,好的设计可以设计加载页面快速响应,避免在正常工作的情况下阻塞工作。php抓取网页错误信息,一般是没有抓取到数据,调用不到数据,或者被拦截了。tiobe数据库编程语言排行榜2017年1月中国最佳的php和jsp网站这是当时的排行榜,tiobe采用r=all(global)的数据库编程语言的对象数量。
  国内linuxlinode服务器性能排行榜要注意的是,这些排行榜都不是完全准确的,因为某些网站上这些排行榜可能并不一致,他们的数据主要是针对类似百度、谷歌之类的搜索引擎类型的,这种榜单一般来说只能靠运气。php还是要牢记的一点是,要注意自己的安全。抓包工具推荐使用抓包中心提供的。找到网页中的某个字段点击上面的mozilla后面的数字。
  然后,切换到自己设备上的浏览器,在打开页面的同时,会在浏览器显示抓包地址。但是记住,只有在浏览器中打开你要的网页页面,才能抓包(在php本地可以执行,也可以在服务器端运行抓包,这个请各位切记)如下图所示。接下来就可以看到其他显示数据内容,比如时间,数据库的所有权等等。想要抓取其他位置的数据,只需要换浏览器打开网页就可以了,查看别的位置,需要换浏览器打开页面。
  2.第二种方法:使用微信服务号或者公众号。微信服务号、公众号经常是php抓取网页数据的第二选择,因为无论是php自己抓取还是使用第三方工具抓取,都有限制,有些地方甚至无法使用。对于微信服务号、公众号,其网页数据抓取方法有两种,但是我会推荐使用使用下面第二种方法。请参考php抓取网页数据方法3.第三种方法:使用swoole进程服务器。
  这种方法会比php抓取网页的总花费要低,但是并不会比前面提到的方法慢,原因如下:swoole可以与php直接交互,所以在抓取网页数据的时候php脚本,会快速直接挂起。不过对于抓取小网站,总体花。 查看全部

  php如何抓取网页数据(php如何抓取网页数据?接下来就说说php实现抓取数据的3种方法)
  php如何抓取网页数据?接下来就说说php实现抓取网页数据的3种方法:1.第一种方法:使用php后台来抓取网页数据在web开发中,为了达到抓取网页数据的目的,一般会使用php或者jsp来实现。目前先要说的是php抓取网页的时候,经常会采用header的方式来加载网页,很多朋友也是这样做的,但是对于web服务器来说,这并不是php对象的真正加载过程,假如抓取一个网页,先判断这个网页是否支持header访问加载,若不支持的话,则会增加jsp进程,再用jsp进程去加载数据,使网页加载完整。
  php抓取一个网页数据时,会分为加载页面、网页正常工作、网页错误、网页关闭、保存结果。php抓取网页速度的快慢,与网站的设计、配置是分不开的,好的设计可以设计加载页面快速响应,避免在正常工作的情况下阻塞工作。php抓取网页错误信息,一般是没有抓取到数据,调用不到数据,或者被拦截了。tiobe数据库编程语言排行榜2017年1月中国最佳的php和jsp网站这是当时的排行榜,tiobe采用r=all(global)的数据库编程语言的对象数量。
  国内linuxlinode服务器性能排行榜要注意的是,这些排行榜都不是完全准确的,因为某些网站上这些排行榜可能并不一致,他们的数据主要是针对类似百度、谷歌之类的搜索引擎类型的,这种榜单一般来说只能靠运气。php还是要牢记的一点是,要注意自己的安全。抓包工具推荐使用抓包中心提供的。找到网页中的某个字段点击上面的mozilla后面的数字。
  然后,切换到自己设备上的浏览器,在打开页面的同时,会在浏览器显示抓包地址。但是记住,只有在浏览器中打开你要的网页页面,才能抓包(在php本地可以执行,也可以在服务器端运行抓包,这个请各位切记)如下图所示。接下来就可以看到其他显示数据内容,比如时间,数据库的所有权等等。想要抓取其他位置的数据,只需要换浏览器打开网页就可以了,查看别的位置,需要换浏览器打开页面。
  2.第二种方法:使用微信服务号或者公众号。微信服务号、公众号经常是php抓取网页数据的第二选择,因为无论是php自己抓取还是使用第三方工具抓取,都有限制,有些地方甚至无法使用。对于微信服务号、公众号,其网页数据抓取方法有两种,但是我会推荐使用使用下面第二种方法。请参考php抓取网页数据方法3.第三种方法:使用swoole进程服务器。
  这种方法会比php抓取网页的总花费要低,但是并不会比前面提到的方法慢,原因如下:swoole可以与php直接交互,所以在抓取网页数据的时候php脚本,会快速直接挂起。不过对于抓取小网站,总体花。

php如何抓取网页数据( 使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)

网站优化优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2022-04-12 23:02 • 来自相关话题

  php如何抓取网页数据(
使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)
  php curl模拟登录并获取数据实例详情
  更新时间:2016年12月22日08:36:05投稿:lqh
  cURL 是一个强大的 PHP 库。使用PHP的cURL库可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例。有需要的朋友可以参考以下
  PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
  代码实战
  我们先看登录部分的代码:
  
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
  login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
  接下来,如果登录成功,我们需要获取登录成功后的页面信息。
  
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
  函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
  我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
  
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
  使用总结
  1、初始化卷曲;
  2、使用 curl_setopt 设置目标 url 等选项;
  3、curl_exec,执行curl;
  4、 执行后关闭curl;
  5、输出数据。
  感谢您的阅读,希望对您有所帮助,感谢您对本站的支持! 查看全部

  php如何抓取网页数据(
使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)
  php curl模拟登录并获取数据实例详情
  更新时间:2016年12月22日08:36:05投稿:lqh
  cURL 是一个强大的 PHP 库。使用PHP的cURL库可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例。有需要的朋友可以参考以下
  PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
  代码实战
  我们先看登录部分的代码:
  
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
  login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
  接下来,如果登录成功,我们需要获取登录成功后的页面信息。
  
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
  函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
  我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
  
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
  使用总结
  1、初始化卷曲;
  2、使用 curl_setopt 设置目标 url 等选项;
  3、curl_exec,执行curl;
  4、 执行后关闭curl;
  5、输出数据。
  感谢您的阅读,希望对您有所帮助,感谢您对本站的支持!

php如何抓取网页数据?作为一门后端语言(组图)

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-09-13 03:01 • 来自相关话题

  php如何抓取网页数据?作为一门后端语言(组图)
  
  php如何抓取网页数据?作为一门后端语言php可以抓取网页数据,但是这里面有个问题就是我要抓取一个网页的时候,php直接运行我自己的程序,那么对于网页数据不是像html程序会有个tag类型告诉我,那些内容需要在哪里进行处理,那么这个时候我们就需要把php发到网页的服务器处理,因为如果你是基于nginx或者动态服务器,那么你需要通过类似php.ini的配置文件将我们发给网页服务器的php配置信息传递给网页服务器。
  
  如果使用phpwind等工具去抓取网页信息,那么它只是在线下进行一些简单的数据抓取,那么就可以使用php之外的request发送一些http请求去传递数据进行接收,例如:forward://${url}wget://${url}以前需要我手动写一些httpuri或者cookie,但是现在我可以用get请求让我爬取到php页面内容。
  最后一种解决思路就是直接使用一个php接口去接收访问数据,这里主要是需要request就好了,其它的就不需要我操心。这里我们主要分析下request库的抓取网页数据的代码:varrequest=require('request');varresponse={"err":"","errmsg":"error:nan","accept":"*/*","accept-language":"zh-cn,zh;q=0.9,en-us;q=0.8,en;q=0.3,fr;g=0.1,jpg;gif;f=0.0,gif;s=0.4,png;authorization":"//"};varhttp=newhttp();request.open("/index.php",http);request.send("http/1.1");request.recv(48);//filenametoencodeerr=encode(response.data);body=encode("div+css");//getresponsewithbodyframebody=body.replace(/\s/g,"");body=body.replace(/\s/g,"");response.send(body);上面就是request库抓取网页的代码,它是把一个http协议请求发给网页服务器去请求数据,实际上它实现的数据是什么就在于php程序,可以request,也可以http直接request。关于request库它是什么样的一个东西不多说,大家就可以直接看它的源码了。 查看全部

  php如何抓取网页数据?作为一门后端语言(组图)
  
  php如何抓取网页数据?作为一门后端语言php可以抓取网页数据,但是这里面有个问题就是我要抓取一个网页的时候,php直接运行我自己的程序,那么对于网页数据不是像html程序会有个tag类型告诉我,那些内容需要在哪里进行处理,那么这个时候我们就需要把php发到网页的服务器处理,因为如果你是基于nginx或者动态服务器,那么你需要通过类似php.ini的配置文件将我们发给网页服务器的php配置信息传递给网页服务器。
  
  如果使用phpwind等工具去抓取网页信息,那么它只是在线下进行一些简单的数据抓取,那么就可以使用php之外的request发送一些http请求去传递数据进行接收,例如:forward://${url}wget://${url}以前需要我手动写一些httpuri或者cookie,但是现在我可以用get请求让我爬取到php页面内容。
  最后一种解决思路就是直接使用一个php接口去接收访问数据,这里主要是需要request就好了,其它的就不需要我操心。这里我们主要分析下request库的抓取网页数据的代码:varrequest=require('request');varresponse={"err":"","errmsg":"error:nan","accept":"*/*","accept-language":"zh-cn,zh;q=0.9,en-us;q=0.8,en;q=0.3,fr;g=0.1,jpg;gif;f=0.0,gif;s=0.4,png;authorization":"//"};varhttp=newhttp();request.open("/index.php",http);request.send("http/1.1");request.recv(48);//filenametoencodeerr=encode(response.data);body=encode("div+css");//getresponsewithbodyframebody=body.replace(/\s/g,"");body=body.replace(/\s/g,"");response.send(body);上面就是request库抓取网页的代码,它是把一个http协议请求发给网页服务器去请求数据,实际上它实现的数据是什么就在于php程序,可以request,也可以http直接request。关于request库它是什么样的一个东西不多说,大家就可以直接看它的源码了。

[精选]PHP是如何模拟用户登录并抓取数据的

网站优化优采云 发表了文章 • 0 个评论 • 62 次浏览 • 2022-09-11 10:46 • 来自相关话题

  [精选]PHP是如何模拟用户登录并抓取数据的
  点击加入:
  商务合作:请加微信(QQ):2230304070
  技术交流微信群
  我们在学习中单枪匹马,还不如一次短短的交流,你可以在别人吸取各种学习经验,学习方法以及学习技巧,所以,学习与交流少不了一个圈子,提升你的学习技能,请点击加技术群:IT技术交流微信群   
  <br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" /><p style="max-width: 100%;min-height: 1em;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  视频教程分享</p>
  1 2小时教你轻松搞定支付宝、微信扫码支付 <br />公众号里回复:20191108 <br /> <br />2 ThinkPHP6.0极速入门 <br />公众号里回复:20190923 <br /><br />3 Linux编程Shell从入门到精通视频教程(完整版) <br />公众号里回复:shell0915<br /> <br />4 亿级pv多级缓存并发架构案例分析<br />链接:http://www.mano100.cn/thread-1691-1-1.html<br /><br />5 PHP性能优化-协程在高并发场景下的应用<br />链接:http://www.mano100.cn/thread-1693-1-1.html<br /><br />6 PHP实现大型电商平台团购功能的开发<br />链接:http://www.mano100.cn/thread-1692-1-1.html
  <br />
  精选文章正文
  
  模拟登陆经常会遇到吧,但是你是如何模拟的呢?我们可以使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。
  具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  (1)登录页面的地址;
  (2)验证码的地址;
  (3)登录表单需要提交的各个字段的名称和提交方式;
  (4)登录表单提交的地址;
  (5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站):
  
  3. 获取验证码并存储(针对使用验证码的网站):
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选]PHP是如何模拟用户登录并抓取数据的
  点击加入:
  商务合作:请加微信(QQ):2230304070
  技术交流微信群
  我们在学习中单枪匹马,还不如一次短短的交流,你可以在别人吸取各种学习经验,学习方法以及学习技巧,所以,学习与交流少不了一个圈子,提升你的学习技能,请点击加技术群:IT技术交流微信群   
  <br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" /><p style="max-width: 100%;min-height: 1em;text-align: center;box-sizing: border-box !important;overflow-wrap: break-word !important;"><br style="max-width: 100%;box-sizing: border-box !important;overflow-wrap: break-word !important;" />
  视频教程分享</p>
  1 2小时教你轻松搞定支付宝、微信扫码支付 <br />公众号里回复:20191108 <br /> <br />2 ThinkPHP6.0极速入门 <br />公众号里回复:20190923 <br /><br />3 Linux编程Shell从入门到精通视频教程(完整版) <br />公众号里回复:shell0915<br /> <br />4 亿级pv多级缓存并发架构案例分析<br />链接:http://www.mano100.cn/thread-1691-1-1.html<br /><br />5 PHP性能优化-协程在高并发场景下的应用<br />链接:http://www.mano100.cn/thread-1693-1-1.html<br /><br />6 PHP实现大型电商平台团购功能的开发<br />链接:http://www.mano100.cn/thread-1692-1-1.html
  <br />
  精选文章正文
  
  模拟登陆经常会遇到吧,但是你是如何模拟的呢?我们可以使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。
  具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  (1)登录页面的地址;
  (2)验证码的地址;
  (3)登录表单需要提交的各个字段的名称和提交方式;
  (4)登录表单提交的地址;
  (5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站):
  
  3. 获取验证码并存储(针对使用验证码的网站):
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

IE法提取网页数据

网站优化优采云 发表了文章 • 0 个评论 • 118 次浏览 • 2022-09-11 10:45 • 来自相关话题

  IE法提取网页数据
  【分享成果,随喜正能量】我们不良的行为、不善的念头、不好的言语,都属于我们内心的暴力,要想获得平和,我们需要自我修习,学会控制情绪,学会内观反省并接近善良。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:IE法提取网页数据
  第一节 利用IE法提取网页数据基础为了获取网页的数据,我们可以通过创建IE控件或webbrowser控件,结合htmlfile对象的方法和属性,模拟浏览器操作,获取浏览器页面的数据。这种方法可以模拟大部分的浏览器操作。浏览器能看到的数据就能用代码获取,但是有个致命的缺点:除去各种弹窗相当烦人外,兼容性也确实是个很伤脑筋的问题。在我自己的实践中感觉这种方法不是很稳定(仅仅是感觉)。1 IE模型的创建我们在实际工作中遇到网站和网页相关问题,例如:如何下载网页数据?网页之间的通讯是怎么实现的、它们能不能被控制等等。如果你是用VB/VBA/脚本或其它支持自动化对象(AUTOMATION)的语言编程,有一个值得了解的方法是掌握对象模型:将网页视为对象来控制,这个方法需要了解的是IE的自动化对象(InternetExplorer.Application)或IE控件(Microsoft Internet Controls),以及标准的文档对象模型(Document)。相关的知识我在前两个专题中做了大量的讲解,这里就不再详细的说明了。我给出下面的代码:Set ie = CreateObject("InternetExplorer.Application") ’创建对象ie.Visible = True ’使IE页面可见,做完这一步,在VBA之外可以看到一个新的IEie.navigate "about:blank" ’建立一个空白页上面这几行代码的作用是创建一个IE应用程序对象,并打开一个空白的网页。
  这个网页独立于VBA的应用程序(WORD或EXCEL)之外,事实上,你必须自已关掉它,或者用ie.Quit下令退出——注意一下,单纯的关闭VBA或SET ie=nothing是不会退出这个网页的。我们经常用的是将第3行的字符串替换成一个网站的名字,或者替换成一个你主机中的文档名,也可以是一个图片名,都是可以的。和你在IE地址栏输入名称浏览这些文档是一样效果。如果仅仅是创建了一个空的模型是没有任何利用的价值的,我们需要真正的网页,这时就需要我们在VBA的应用程序外打开一个完整的网页了,直到网页完全加载我们的操作才能向下进行。2 IE网页页面的加载我们修正一下上面的那段打开空网页的代码:Sub mynz()Set ie = CreateObject("InternetExplorer.Application") ’创建对象ie.Visible = True ’使IE页面可见,做完这一步,在VBA之外可以看到一个新的IEie.navigate " " ’建立一个空白页Do Until .ReadyState = 4 '检查网页是否加载完毕(4表示完全加载) DoEvents ‘循环中交回工作权限给系统,以免“软死机” LoopEnd sub在上面的代码中增加了几行:Do Until .ReadyState = 4 '检查网页是否加载完毕(4表示完全加载) DoEvents ‘循环中交回工作权限给系统,以免“软死机” Loop这几行代码可以保证网页的加载完成,这是根据ie.ReadyState的返回值来判断的。
  readyState一共有5中状态:状态 含义 说明0 未初始化 对象已建立,但是尚未初始化(尚未调用open方法)1 初始化 对象已建立,尚未调用send方法2 发送数据 send()方法已调用,但是当前的状态及http头未知3 数据传送中 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误4 数据接收完毕 此时可以通过通过responseBody和responseText获取完整的回应数据
  通过以上的分析,我们可以看出,只用当.ReadyState = 4时网页的数据才是有效的数据。3 IE页面数据的获得当网页加载完毕,剩下的工作就是从网页中抓取数据了,数据的抓取主要是利用控件对象的属性和方法。
  1)用Set doc = ie.Document 取得网页的文档对象从文档对象(Document)以下展开的对象模型,它代表网页的内容,和前面那个IE的应用程序不是同一个体系.Documnet(文档)是文档对象模型,相当于OFFICE对象中的APPLICATION,取得Document之后,不论修改网页还是读写网页,还是触发事件,一切都好说,每个URL都对应有一个Documnet(这是假如定成功导航Navigate到那个URL完成,因此之前要求确定IE对象READSTATE,以确定对应URL的Document打开了)
  
  2) 在Documnet之下可以取得documentElement和body两个节点。
  可以用下面的语句:set xbody=doc.Body ‘取得body对象set xDoc=doc. documentElement ‘取得根节点body前面已经说过,相当于标记的对象,根节点相当于网页中的标记元素的对象,MHTML的类型库定义里,它们都属于HTMLHtmlElement类型的对象,下面我把这种类型的对象称为一个“节点”,不过要注意的是文档对象不是节点对象,它是HTMLDocument类型。根节点和body节点不同的是根节点包括整个网页,在HTML的文档对象模型中,这类对象有几种属性可以取得其中的内容:对象.innerHtml ‘对象内部的HTML文本对象.OuterHtml ‘对象中的HTML文本,包括对象本身的HTML标记在内对象.innerText ‘对象内部的TEXT,不包括HTML标记对象.OuterText ‘同上,包括对象本身的文本所以,如果我们要抓取某个网站的所有HTML内容,代码可以这样写:set doc=ie.Documentset xDoc=doc. documentElement ‘取得根节点strX=xDoc.OuterHtml ‘取得所有的HTML内容
  3) 每一个标记节点对象之下都有一个名为ChildNodes的集合,它包含了“直属于本节点下的标记”,就象是文件目录,根目录下的子目录.我们可以看到:HTML标记是文档的根节点,是Document的Childnodes集合中的一个成员(Document不是节点,是另一种类型对象,上一级文档,但它可以有下级节点集合,正如磁盘可以有下级目录,但它本身不是目录),BODY是根节点的ChildNodes集合中的一个成员,而DIV和P两个节点则是BODY的ChildNodes集合中的两个成员,同样也有自己的Childnoes集合。我们要注意:文档对象模型中,集合与OFFICE的集合有所不同,集合是从0开始计数的,计数属性是Length而不是Count。
  4)除了ChildNodes集合,大家在网页文档对象中还常见到的就是很大气的一种集合:All集合,这是“最糊涂”的一种集合,文档和各级节点都带有这个集合,正如这个名字所示,它是不分层次的,但用起来也很方便:Set doc=ie.DocumentSet xCols=doc.All ’取得文档中的所有节点集合Set xbCols=doc.body.All ’取得body节点下所有的节点集合虽然任何标记节点都有ALL集合,但我们还是喜欢用DOCUMENT的ALL,原因无它,文档最大,一锅烩的ALL找起来也最合适。ALL查找是有条件的:如果这个标记没有ID,你无法查到它的名字。
  不过,ALL集合有一个很方便的特性:ID可以挂到ALL集合之下:strX=doc.All.mytag.innerhtml
  5)获得文档对象的getElementsByName集合,可以利用下面的方法:set mydivs=doc. getElementsByName(“div”) ‘取得所有DIV标记,注意还是集合
  6) 文档对象的FORMS集合,因为大部分网页的数据提交都是通过FORM标记提交的:Set myForms=doc.Forms ’取得所有的FORM标记Set frmX=myForms.item(0) ’第1个FORMFORM标记节点代表的对象是很多朋友关心的内容——在网页对象中,它可以发送数据到服务器,使服务器刷新网页(实际上是服务器按某个格式约定发回数据),我们可以把网页的FORM看成是一个远程的函数调用接口,FORM标记中的ACTION指向的URL地址就是函数入口,而FORM标记内的各个INPUT标记节点就是函数的参数,当发出FORM.Submit方法时,就是远程调用函数了,在服务器端,诸如ASP,PHP就是老老实实找FORM的参数,不管你是用GET还是POST:frmX.submit ’相当于用户在页面上按下FORM的发送按键
  
  上面我罗列了获取网页数据的一般的方法,并没有什么特别的使用要求,大家可以根据自己的习惯来利用,这个专题之后的内容就是灵活运用这些知识点来解决实际问题了。
  本节知识点回向:
  如何提交表单?如何下载图片的地址?如何获得表的数据?
  【分享成果,随喜正能量】得意之时淡然,失意之时坦然,顺风顺水的时候需要一种内敛和沉稳,遭遇逆境和挑战的时候,要有一份举重若轻、生命昂扬的生命展望,就算匍匐于岁月尘埃,也要仰望生命的星辰灿烂。 。
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序: 查看全部

  IE法提取网页数据
  【分享成果,随喜正能量】我们不良的行为、不善的念头、不好的言语,都属于我们内心的暴力,要想获得平和,我们需要自我修习,学会控制情绪,学会内观反省并接近善良。。《VBA信息获取与处理》教程是我推出第六套教程,目前已经是第一版修订了。这套教程定位于最高级,是学完初级,中级后的教程。这部教程给大家讲解的内容有:跨应用程序信息获得、随机信息的利用、电子邮件的发送、VBA互联网数据抓取、VBA延时操作,剪贴板应用、Split函数扩展、工作表信息与其他应用交互,FSO对象的利用、工作表及文件夹信息的获取、图形信息的获取以及定制工作表信息函数等等内容。程序文件通过32位和64位两种OFFICE系统测试。是非常抽象的,更具研究的价值。教程共两册,八十四讲。今日的内容是专题九“利用IE抓取网络数据”:IE法提取网页数据
  第一节 利用IE法提取网页数据基础为了获取网页的数据,我们可以通过创建IE控件或webbrowser控件,结合htmlfile对象的方法和属性,模拟浏览器操作,获取浏览器页面的数据。这种方法可以模拟大部分的浏览器操作。浏览器能看到的数据就能用代码获取,但是有个致命的缺点:除去各种弹窗相当烦人外,兼容性也确实是个很伤脑筋的问题。在我自己的实践中感觉这种方法不是很稳定(仅仅是感觉)。1 IE模型的创建我们在实际工作中遇到网站和网页相关问题,例如:如何下载网页数据?网页之间的通讯是怎么实现的、它们能不能被控制等等。如果你是用VB/VBA/脚本或其它支持自动化对象(AUTOMATION)的语言编程,有一个值得了解的方法是掌握对象模型:将网页视为对象来控制,这个方法需要了解的是IE的自动化对象(InternetExplorer.Application)或IE控件(Microsoft Internet Controls),以及标准的文档对象模型(Document)。相关的知识我在前两个专题中做了大量的讲解,这里就不再详细的说明了。我给出下面的代码:Set ie = CreateObject("InternetExplorer.Application") ’创建对象ie.Visible = True ’使IE页面可见,做完这一步,在VBA之外可以看到一个新的IEie.navigate "about:blank" ’建立一个空白页上面这几行代码的作用是创建一个IE应用程序对象,并打开一个空白的网页。
  这个网页独立于VBA的应用程序(WORD或EXCEL)之外,事实上,你必须自已关掉它,或者用ie.Quit下令退出——注意一下,单纯的关闭VBA或SET ie=nothing是不会退出这个网页的。我们经常用的是将第3行的字符串替换成一个网站的名字,或者替换成一个你主机中的文档名,也可以是一个图片名,都是可以的。和你在IE地址栏输入名称浏览这些文档是一样效果。如果仅仅是创建了一个空的模型是没有任何利用的价值的,我们需要真正的网页,这时就需要我们在VBA的应用程序外打开一个完整的网页了,直到网页完全加载我们的操作才能向下进行。2 IE网页页面的加载我们修正一下上面的那段打开空网页的代码:Sub mynz()Set ie = CreateObject("InternetExplorer.Application") ’创建对象ie.Visible = True ’使IE页面可见,做完这一步,在VBA之外可以看到一个新的IEie.navigate " " ’建立一个空白页Do Until .ReadyState = 4 '检查网页是否加载完毕(4表示完全加载) DoEvents ‘循环中交回工作权限给系统,以免“软死机” LoopEnd sub在上面的代码中增加了几行:Do Until .ReadyState = 4 '检查网页是否加载完毕(4表示完全加载) DoEvents ‘循环中交回工作权限给系统,以免“软死机” Loop这几行代码可以保证网页的加载完成,这是根据ie.ReadyState的返回值来判断的。
  readyState一共有5中状态:状态 含义 说明0 未初始化 对象已建立,但是尚未初始化(尚未调用open方法)1 初始化 对象已建立,尚未调用send方法2 发送数据 send()方法已调用,但是当前的状态及http头未知3 数据传送中 已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误4 数据接收完毕 此时可以通过通过responseBody和responseText获取完整的回应数据
  通过以上的分析,我们可以看出,只用当.ReadyState = 4时网页的数据才是有效的数据。3 IE页面数据的获得当网页加载完毕,剩下的工作就是从网页中抓取数据了,数据的抓取主要是利用控件对象的属性和方法。
  1)用Set doc = ie.Document 取得网页的文档对象从文档对象(Document)以下展开的对象模型,它代表网页的内容,和前面那个IE的应用程序不是同一个体系.Documnet(文档)是文档对象模型,相当于OFFICE对象中的APPLICATION,取得Document之后,不论修改网页还是读写网页,还是触发事件,一切都好说,每个URL都对应有一个Documnet(这是假如定成功导航Navigate到那个URL完成,因此之前要求确定IE对象READSTATE,以确定对应URL的Document打开了)
  
  2) 在Documnet之下可以取得documentElement和body两个节点。
  可以用下面的语句:set xbody=doc.Body ‘取得body对象set xDoc=doc. documentElement ‘取得根节点body前面已经说过,相当于标记的对象,根节点相当于网页中的标记元素的对象,MHTML的类型库定义里,它们都属于HTMLHtmlElement类型的对象,下面我把这种类型的对象称为一个“节点”,不过要注意的是文档对象不是节点对象,它是HTMLDocument类型。根节点和body节点不同的是根节点包括整个网页,在HTML的文档对象模型中,这类对象有几种属性可以取得其中的内容:对象.innerHtml ‘对象内部的HTML文本对象.OuterHtml ‘对象中的HTML文本,包括对象本身的HTML标记在内对象.innerText ‘对象内部的TEXT,不包括HTML标记对象.OuterText ‘同上,包括对象本身的文本所以,如果我们要抓取某个网站的所有HTML内容,代码可以这样写:set doc=ie.Documentset xDoc=doc. documentElement ‘取得根节点strX=xDoc.OuterHtml ‘取得所有的HTML内容
  3) 每一个标记节点对象之下都有一个名为ChildNodes的集合,它包含了“直属于本节点下的标记”,就象是文件目录,根目录下的子目录.我们可以看到:HTML标记是文档的根节点,是Document的Childnodes集合中的一个成员(Document不是节点,是另一种类型对象,上一级文档,但它可以有下级节点集合,正如磁盘可以有下级目录,但它本身不是目录),BODY是根节点的ChildNodes集合中的一个成员,而DIV和P两个节点则是BODY的ChildNodes集合中的两个成员,同样也有自己的Childnoes集合。我们要注意:文档对象模型中,集合与OFFICE的集合有所不同,集合是从0开始计数的,计数属性是Length而不是Count。
  4)除了ChildNodes集合,大家在网页文档对象中还常见到的就是很大气的一种集合:All集合,这是“最糊涂”的一种集合,文档和各级节点都带有这个集合,正如这个名字所示,它是不分层次的,但用起来也很方便:Set doc=ie.DocumentSet xCols=doc.All ’取得文档中的所有节点集合Set xbCols=doc.body.All ’取得body节点下所有的节点集合虽然任何标记节点都有ALL集合,但我们还是喜欢用DOCUMENT的ALL,原因无它,文档最大,一锅烩的ALL找起来也最合适。ALL查找是有条件的:如果这个标记没有ID,你无法查到它的名字。
  不过,ALL集合有一个很方便的特性:ID可以挂到ALL集合之下:strX=doc.All.mytag.innerhtml
  5)获得文档对象的getElementsByName集合,可以利用下面的方法:set mydivs=doc. getElementsByName(“div”) ‘取得所有DIV标记,注意还是集合
  6) 文档对象的FORMS集合,因为大部分网页的数据提交都是通过FORM标记提交的:Set myForms=doc.Forms ’取得所有的FORM标记Set frmX=myForms.item(0) ’第1个FORMFORM标记节点代表的对象是很多朋友关心的内容——在网页对象中,它可以发送数据到服务器,使服务器刷新网页(实际上是服务器按某个格式约定发回数据),我们可以把网页的FORM看成是一个远程的函数调用接口,FORM标记中的ACTION指向的URL地址就是函数入口,而FORM标记内的各个INPUT标记节点就是函数的参数,当发出FORM.Submit方法时,就是远程调用函数了,在服务器端,诸如ASP,PHP就是老老实实找FORM的参数,不管你是用GET还是POST:frmX.submit ’相当于用户在页面上按下FORM的发送按键
  
  上面我罗列了获取网页数据的一般的方法,并没有什么特别的使用要求,大家可以根据自己的习惯来利用,这个专题之后的内容就是灵活运用这些知识点来解决实际问题了。
  本节知识点回向:
  如何提交表单?如何下载图片的地址?如何获得表的数据?
  【分享成果,随喜正能量】得意之时淡然,失意之时坦然,顺风顺水的时候需要一种内敛和沉稳,遭遇逆境和挑战的时候,要有一份举重若轻、生命昂扬的生命展望,就算匍匐于岁月尘埃,也要仰望生命的星辰灿烂。 。
  我20多年的VBA实践经验,全部浓缩在下面的各个教程中,教程学习顺序:

php如何抓取网页数据?php三种方法的详细介绍。

网站优化优采云 发表了文章 • 0 个评论 • 84 次浏览 • 2022-09-05 20:02 • 来自相关话题

  php如何抓取网页数据?php三种方法的详细介绍。
  php如何抓取网页数据?php抓取网页的三种方法。php三种抓取方法的详细介绍。php抓取网页数据相关介绍。
  php中就有获取网页地址的方法,具体自己去查找吧,很多的。
  
  phpmyadmin爬虫,抓取任意网站数据-csdn博客
  phpmyadmin
  我一般用access
  
  当然是phpmyadmin啦
  先回答第一个问题,phpmyadmin等统计系统肯定可以做到,但抓取网页就不是一个很好的事情了。主要原因有三点:1,对于像phpmyadmin之类的syslog系统,因为是来自中国人的世界,所以各种数据库都用,所以包括中国的ajax,微信,淘宝,pingq这样的网站都需要定制数据库,你觉得你能抓取么,应该有很多的syslog控制软件可以抓取,例如百度应该就支持,而且对于这样的大型网站,基本是没有特定的抓取流程可言的,只有数据库维护,各种获取方式的转换和记录,在开发的时候,可能需要定制。
  2,php这种方式存在一个问题,就是并不是所有链接都能遍历,国内的xml解析系统,还是抓大站慢,抓小站速度快。而且xml就是已经占主导地位了,其它解析就是个鸡肋。3,说一个定义,php抓取网页是用于网页爬虫,header这类的抓取,很多时候你需要构造一个访问通道,然后将网页拆分到不同的包中,php可以采用各种设置来提升定位效率,但是iframe不太适合爬虫,iframe是专门用来构造成js和其它的数据跳转连接的,js是专门用来请求数据的,爬虫无法像iframe一样直接从js直接访问网页。 查看全部

  php如何抓取网页数据?php三种方法的详细介绍。
  php如何抓取网页数据?php抓取网页的三种方法。php三种抓取方法的详细介绍。php抓取网页数据相关介绍。
  php中就有获取网页地址的方法,具体自己去查找吧,很多的。
  
  phpmyadmin爬虫,抓取任意网站数据-csdn博客
  phpmyadmin
  我一般用access
  
  当然是phpmyadmin啦
  先回答第一个问题,phpmyadmin等统计系统肯定可以做到,但抓取网页就不是一个很好的事情了。主要原因有三点:1,对于像phpmyadmin之类的syslog系统,因为是来自中国人的世界,所以各种数据库都用,所以包括中国的ajax,微信,淘宝,pingq这样的网站都需要定制数据库,你觉得你能抓取么,应该有很多的syslog控制软件可以抓取,例如百度应该就支持,而且对于这样的大型网站,基本是没有特定的抓取流程可言的,只有数据库维护,各种获取方式的转换和记录,在开发的时候,可能需要定制。
  2,php这种方式存在一个问题,就是并不是所有链接都能遍历,国内的xml解析系统,还是抓大站慢,抓小站速度快。而且xml就是已经占主导地位了,其它解析就是个鸡肋。3,说一个定义,php抓取网页是用于网页爬虫,header这类的抓取,很多时候你需要构造一个访问通道,然后将网页拆分到不同的包中,php可以采用各种设置来提升定位效率,但是iframe不太适合爬虫,iframe是专门用来构造成js和其它的数据跳转连接的,js是专门用来请求数据的,爬虫无法像iframe一样直接从js直接访问网页。

qq邮箱如何抓取网页数据php中抓取信息。(图)

网站优化优采云 发表了文章 • 0 个评论 • 66 次浏览 • 2022-08-24 12:30 • 来自相关话题

  qq邮箱如何抓取网页数据php中抓取信息。(图)
  php如何抓取网页数据
  php中抓取网页信息。qq邮箱好像采用spam模式抓取。qq如何使用工具抓取其使用云主机或vps挂代理。打开ua,默认浏览器。使用工具。复制,粘贴这个指令就能抓取到了。
  可以看看这个案例。
  复制粘贴
  百度搜索有
  
  以前我用adblock开发过一个过滤广告的插件。对于我来说很方便。
  qq邮箱网页要自己设置正则表达式
  spamua
  不一定靠浏览器工具,可以使用专门的工具来做,比如dedecms,dedecms管理站点服务器,
  adminautopager
  内联
  
  百度统计站长可以自己注册百度自己的数据源,也可以外接到一个全国性互联网数据源,不管是从教育网,还是全国性的网站,百度对这个网站的数据都是保存的。就像一个公司一样,只要你有数据源,可以在上面爬。
  360
  wechatisopen!itfollowseverythingwhateveryouseeaboutus!
  用自己的wifi信息,
  搜狐首页上有一个带标签的检索栏,那就是我在用的,它可以检索我附近的所有网站。
  powershell可以写php代码爬取站点
  qq邮箱,有自己的邮箱id,然后输入id,再通过代理或者搜索引擎, 查看全部

  qq邮箱如何抓取网页数据php中抓取信息。(图)
  php如何抓取网页数据
  php中抓取网页信息。qq邮箱好像采用spam模式抓取。qq如何使用工具抓取其使用云主机或vps挂代理。打开ua,默认浏览器。使用工具。复制,粘贴这个指令就能抓取到了。
  可以看看这个案例。
  复制粘贴
  百度搜索有
  
  以前我用adblock开发过一个过滤广告的插件。对于我来说很方便。
  qq邮箱网页要自己设置正则表达式
  spamua
  不一定靠浏览器工具,可以使用专门的工具来做,比如dedecms,dedecms管理站点服务器,
  adminautopager
  内联
  
  百度统计站长可以自己注册百度自己的数据源,也可以外接到一个全国性互联网数据源,不管是从教育网,还是全国性的网站,百度对这个网站的数据都是保存的。就像一个公司一样,只要你有数据源,可以在上面爬。
  360
  wechatisopen!itfollowseverythingwhateveryouseeaboutus!
  用自己的wifi信息,
  搜狐首页上有一个带标签的检索栏,那就是我在用的,它可以检索我附近的所有网站。
  powershell可以写php代码爬取站点
  qq邮箱,有自己的邮箱id,然后输入id,再通过代理或者搜索引擎,

简单爬虫php如何抓取网页数据?可以使用requests吗?

网站优化优采云 发表了文章 • 0 个评论 • 149 次浏览 • 2022-08-15 02:04 • 来自相关话题

  简单爬虫php如何抓取网页数据?可以使用requests吗?
  php如何抓取网页数据?可以使用requests。对于简单爬虫,php里面自带的exec函数就可以做到。如何抓取github上的项目?对于简单爬虫,php里面自带的exec函数就可以做到。如何抓取搜索引擎上的结果?对于简单爬虫,php里面自带的exec函数就可以做到。很多php框架提供了http请求和get请求的函数库,如websphere。
  
  http请求由浏览器提供。对于一个完整的爬虫,爬虫的编写就是架构清晰,逻辑明确,交互简单的过程。爬虫流程分为以下几个阶段:1.获取数据2.解析数据3.传输数据4.获取结果这一张图简单说明了一个完整的爬虫的四个阶段。网站接收到请求,返回响应给服务器,服务器再解析数据,返回给浏览器。例如,获取京东的商品购买记录,就是一个完整的爬虫的流程。
  在php当中实现同样的一个流程,就是通过scrapy框架来完成。所以,抓取网页数据是很简单的,只要掌握scrapy框架来实现就可以了。对于搜索引擎上的数据,我们可以通过selenium这个东西来操作,再添加数据测试就可以实现。selenium的安装很简单,我在这里就不多做描述了。参考下面的selenium的教程。
  
  注意selenium也只是一个工具,想要将selenium应用到爬虫中,还需要其他的方法,后面我们会详细讲解。创建对象在python中,只要对象就可以进行操作,selenium也一样。所以,我们可以创建一个对象scrapy_crawler来表示我们所操作的爬虫对象。1.获取数据创建对象scrapy_crawler,来表示scrapy框架中爬虫对象。
  2.解析数据获取完数据后,需要解析,解析爬虫对象的输出结果,并将结果返回给浏览器。解析代码如下:scrapy_crawler=scrapy.crawler()3.传输数据解析完数据后,可以通过将数据通过scrapy框架的url模块进行传输。传输代码如下:fromscrapy.urlimportpathfromscrapy.httpimportrequestdefrequest_url(url):try:return"请求地址:"+pathexceptexceptionase:print("请求失败:",e)exceptexceptionasex:print("请求无效:",e)http_path="//"+pathexceptselectorasself:returnpath.replace("/","/")try:url_file=request_url.format("/")url=""excepturllib.urlerrorasu:url=url_file.request(url)print("请求失败:",url)defrequest_response(url):"请求地址:"""return"""print("请求成功:",url)defrequest_response(url,p。 查看全部

  简单爬虫php如何抓取网页数据?可以使用requests吗?
  php如何抓取网页数据?可以使用requests。对于简单爬虫,php里面自带的exec函数就可以做到。如何抓取github上的项目?对于简单爬虫,php里面自带的exec函数就可以做到。如何抓取搜索引擎上的结果?对于简单爬虫,php里面自带的exec函数就可以做到。很多php框架提供了http请求和get请求的函数库,如websphere。
  
  http请求由浏览器提供。对于一个完整的爬虫,爬虫的编写就是架构清晰,逻辑明确,交互简单的过程。爬虫流程分为以下几个阶段:1.获取数据2.解析数据3.传输数据4.获取结果这一张图简单说明了一个完整的爬虫的四个阶段。网站接收到请求,返回响应给服务器,服务器再解析数据,返回给浏览器。例如,获取京东的商品购买记录,就是一个完整的爬虫的流程。
  在php当中实现同样的一个流程,就是通过scrapy框架来完成。所以,抓取网页数据是很简单的,只要掌握scrapy框架来实现就可以了。对于搜索引擎上的数据,我们可以通过selenium这个东西来操作,再添加数据测试就可以实现。selenium的安装很简单,我在这里就不多做描述了。参考下面的selenium的教程。
  
  注意selenium也只是一个工具,想要将selenium应用到爬虫中,还需要其他的方法,后面我们会详细讲解。创建对象在python中,只要对象就可以进行操作,selenium也一样。所以,我们可以创建一个对象scrapy_crawler来表示我们所操作的爬虫对象。1.获取数据创建对象scrapy_crawler,来表示scrapy框架中爬虫对象。
  2.解析数据获取完数据后,需要解析,解析爬虫对象的输出结果,并将结果返回给浏览器。解析代码如下:scrapy_crawler=scrapy.crawler()3.传输数据解析完数据后,可以通过将数据通过scrapy框架的url模块进行传输。传输代码如下:fromscrapy.urlimportpathfromscrapy.httpimportrequestdefrequest_url(url):try:return"请求地址:"+pathexceptexceptionase:print("请求失败:",e)exceptexceptionasex:print("请求无效:",e)http_path="//"+pathexceptselectorasself:returnpath.replace("/","/")try:url_file=request_url.format("/")url=""excepturllib.urlerrorasu:url=url_file.request(url)print("请求失败:",url)defrequest_response(url):"请求地址:"""return"""print("请求成功:",url)defrequest_response(url,p。

php如何抓取网页数据php自身提供了非常丰富的功能

网站优化优采云 发表了文章 • 0 个评论 • 109 次浏览 • 2022-08-13 14:06 • 来自相关话题

  php如何抓取网页数据php自身提供了非常丰富的功能
  php如何抓取网页数据php自身提供了非常丰富的功能,我们可以使用php处理网页数据,也可以使用其他程序,一般网页抓取中,用的比较多的是xml数据,python也能处理,那我们就抓取一下you_palored。php,作为php的一个模块,我们可以调用,可以让这个文件处理数据,下面是抓取的结果github-h_ranger/you_palored:一个php封装的you_palored。php文件处理网页数据的工具。
  python可以模拟curl,提交请求时用到requests库下的urlencode,将字符串转换为urlencoded_bytes,提交给ts封装好的httppost方法即可。
  
  建议上传数据库读取..或者mysql
  python调用封装好的httppost方法
  
  php抓取html网页数据,那是必须的,本人有很多php+mysql+php语言嵌入式的项目。
  如果你有封装好的浏览器或者浏览器内置的函数,php是可以直接调用的,你上传php文件的那个http。config,里面有一个baseurl方法,你直接用它设置一个数据连接就行,不需要加上baseurl,调用http。get就可以,而且多个网站的话,这样的话,会按照先读取对应网站得数据,然后用http。getpost方法输出,两端只需要用一个标准模式就好。
  php的也可以用chrome-store, 查看全部

  php如何抓取网页数据php自身提供了非常丰富的功能
  php如何抓取网页数据php自身提供了非常丰富的功能,我们可以使用php处理网页数据,也可以使用其他程序,一般网页抓取中,用的比较多的是xml数据,python也能处理,那我们就抓取一下you_palored。php,作为php的一个模块,我们可以调用,可以让这个文件处理数据,下面是抓取的结果github-h_ranger/you_palored:一个php封装的you_palored。php文件处理网页数据的工具。
  python可以模拟curl,提交请求时用到requests库下的urlencode,将字符串转换为urlencoded_bytes,提交给ts封装好的httppost方法即可。
  
  建议上传数据库读取..或者mysql
  python调用封装好的httppost方法
  
  php抓取html网页数据,那是必须的,本人有很多php+mysql+php语言嵌入式的项目。
  如果你有封装好的浏览器或者浏览器内置的函数,php是可以直接调用的,你上传php文件的那个http。config,里面有一个baseurl方法,你直接用它设置一个数据连接就行,不需要加上baseurl,调用http。get就可以,而且多个网站的话,这样的话,会按照先读取对应网站得数据,然后用http。getpost方法输出,两端只需要用一个标准模式就好。
  php的也可以用chrome-store,

php如何抓取网页数据?,后端抓取常用是html代码解析的方法

网站优化优采云 发表了文章 • 0 个评论 • 198 次浏览 • 2022-07-30 00:01 • 来自相关话题

  php如何抓取网页数据?,后端抓取常用是html代码解析的方法
  php如何抓取网页数据?,,后端抓取常用是html代码解析的方法。但是实际上,并不是用html代码就能抓取的,比如它就有些限制,想要抓取你想要的网页图片需要:浏览器及电脑配置要高,比如有些网站的png是不能直接下载,它需要通过http协议来下载png或gif等。网站蜘蛛要能识别png与pdf。通过http代理或路由抓取你想要的网页,比如http//这样的。还有像php就是用这些方法实现抓取的。你应该有更多的抓取网页的方法。
  html5tablayout///distribution/j2ee-tablayout-turbo2这里有完整的说明
  我们公司的shelljs用的是feed流抓取,可以抓取新浪、百度、腾讯的网页。
  
  推荐bootstraptablayout
  自己写网页抓取,然后还要推荐一款bootstrap生成的网页抓取,
  原生php抓取
  
  首先还是安装一下抓包工具,netease_web_spider之类的,然后看官方文档。一般都是可以抓取图片的。
  网站优化要做好,
  服务器优化(百度、谷歌竞价,seo优化等),官方搭建抓取代理池,用浏览器自带代理,没有就用国内自带代理(前提),用好referral,测试用户体验。
  最简单的就是利用百度抓包工具,然后获取关键词用baiduspider-allproxy-baiduspider实现抓取,最便宜的也就几十块钱。 查看全部

  php如何抓取网页数据?,后端抓取常用是html代码解析的方法
  php如何抓取网页数据?,,后端抓取常用是html代码解析的方法。但是实际上,并不是用html代码就能抓取的,比如它就有些限制,想要抓取你想要的网页图片需要:浏览器及电脑配置要高,比如有些网站的png是不能直接下载,它需要通过http协议来下载png或gif等。网站蜘蛛要能识别png与pdf。通过http代理或路由抓取你想要的网页,比如http//这样的。还有像php就是用这些方法实现抓取的。你应该有更多的抓取网页的方法。
  html5tablayout///distribution/j2ee-tablayout-turbo2这里有完整的说明
  我们公司的shelljs用的是feed流抓取,可以抓取新浪、百度、腾讯的网页。
  
  推荐bootstraptablayout
  自己写网页抓取,然后还要推荐一款bootstrap生成的网页抓取,
  原生php抓取
  
  首先还是安装一下抓包工具,netease_web_spider之类的,然后看官方文档。一般都是可以抓取图片的。
  网站优化要做好,
  服务器优化(百度、谷歌竞价,seo优化等),官方搭建抓取代理池,用浏览器自带代理,没有就用国内自带代理(前提),用好referral,测试用户体验。
  最简单的就是利用百度抓包工具,然后获取关键词用baiduspider-allproxy-baiduspider实现抓取,最便宜的也就几十块钱。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 39 次浏览 • 2022-06-24 18:49 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 57 次浏览 • 2022-06-23 07:04 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 34 次浏览 • 2022-06-19 15:54 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 73 次浏览 • 2022-06-15 10:52 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 69 次浏览 • 2022-06-05 08:20 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 81 次浏览 • 2022-06-05 02:44 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

php如何抓取网页数据爬虫分析的基本流程【八】

网站优化优采云 发表了文章 • 0 个评论 • 225 次浏览 • 2022-05-28 14:06 • 来自相关话题

  php如何抓取网页数据爬虫分析的基本流程【八】
  php如何抓取网页数据爬虫分析的基本流程1.首先获取网页:接下来,使用浏览器打开,看下能不能看到网页,如果能看到网页,说明已经获取到了网页数据,不要浪费了2.获取网页内容,并解析3.清洗数据,上传工具内的数据是经过过滤,过滤掉没有用的信息,这些数据都要保存在本地,如果在工具内发现没有用的数据,要先用网页截图工具,截图,并存到工具内的数据目录下。
  4.保存数据到mysql数据库下5.写数据库优化:选择对称id的记录接着是选择记录库:默认为admin,从爬虫的角度我比较喜欢用admin记录记录库名字和用户名及其keyword最好使用对称,当然如果没有太复杂,就不一定非要用对称id了admin记录库中的记录记录的id是2,接着说说对称的作用:代表对同一个人id的不同的记录只爬取一条,防止在爬取其他人的记录时,出现重复的记录如果不用对称编号,也可以编一个大的编号,进行分类爬取最后说说keyword:这个只能手工添加,爬虫是解析标记的,但也需要对网页内容进行处理,可以使用正则表达式。
  只要是包含这个词的网页都要爬取完毕以上操作基本操作大家都掌握,就能爬取网页数据,小毛再说下如何爬取下载数据,首先是爬虫要先安装抓取数据库,如果还没有就先不用理他,安装后还有一个xxdownloader.exe来安装抓取数据库。点击安装后,就要进行一些代码的编写,首先是进行网页的抓取,获取网页上面可能会有网址的href,然后把这个网址接下来拼接到一起,放到data文件中。
  写完以后,在客户端运行,就能够看到网页爬虫给出的网址和内容了,我是用这个抓取的网页,可以看到前面的网址,因为刚刚安装了数据库,data文件的路径还是test.php?2月26日查看网页源码mysql选择url我们可以看到,可以看到有个前缀admin,最后url回到首页,使用data文件的地址,前缀admin+:8888就是爬虫爬取前页的url了,相当于爬虫的地址是admin,那我们就把地址改成admin.php首页的url,可以看到前面都是回车分析url字段data,data字段对应的数据库有个database_url字段,这个字段的意思为数据库名称admin里面有很多个数据库可以选择性爬取一个网页,分析完后再去爬其他网页也是非常简单的。
  为了方便分析,我们先下载源码如果觉得有帮助,点个赞呗,点个赞有动力!最后对php爬虫感兴趣的朋友,可以关注我!php推荐一份编程入门教程——php从入门到高级。 查看全部

  php如何抓取网页数据爬虫分析的基本流程【八】
  php如何抓取网页数据爬虫分析的基本流程1.首先获取网页:接下来,使用浏览器打开,看下能不能看到网页,如果能看到网页,说明已经获取到了网页数据,不要浪费了2.获取网页内容,并解析3.清洗数据,上传工具内的数据是经过过滤,过滤掉没有用的信息,这些数据都要保存在本地,如果在工具内发现没有用的数据,要先用网页截图工具,截图,并存到工具内的数据目录下。
  4.保存数据到mysql数据库下5.写数据库优化:选择对称id的记录接着是选择记录库:默认为admin,从爬虫的角度我比较喜欢用admin记录记录库名字和用户名及其keyword最好使用对称,当然如果没有太复杂,就不一定非要用对称id了admin记录库中的记录记录的id是2,接着说说对称的作用:代表对同一个人id的不同的记录只爬取一条,防止在爬取其他人的记录时,出现重复的记录如果不用对称编号,也可以编一个大的编号,进行分类爬取最后说说keyword:这个只能手工添加,爬虫是解析标记的,但也需要对网页内容进行处理,可以使用正则表达式。
  只要是包含这个词的网页都要爬取完毕以上操作基本操作大家都掌握,就能爬取网页数据,小毛再说下如何爬取下载数据,首先是爬虫要先安装抓取数据库,如果还没有就先不用理他,安装后还有一个xxdownloader.exe来安装抓取数据库。点击安装后,就要进行一些代码的编写,首先是进行网页的抓取,获取网页上面可能会有网址的href,然后把这个网址接下来拼接到一起,放到data文件中。
  写完以后,在客户端运行,就能够看到网页爬虫给出的网址和内容了,我是用这个抓取的网页,可以看到前面的网址,因为刚刚安装了数据库,data文件的路径还是test.php?2月26日查看网页源码mysql选择url我们可以看到,可以看到有个前缀admin,最后url回到首页,使用data文件的地址,前缀admin+:8888就是爬虫爬取前页的url了,相当于爬虫的地址是admin,那我们就把地址改成admin.php首页的url,可以看到前面都是回车分析url字段data,data字段对应的数据库有个database_url字段,这个字段的意思为数据库名称admin里面有很多个数据库可以选择性爬取一个网页,分析完后再去爬其他网页也是非常简单的。
  为了方便分析,我们先下载源码如果觉得有帮助,点个赞呗,点个赞有动力!最后对php爬虫感兴趣的朋友,可以关注我!php推荐一份编程入门教程——php从入门到高级。

[精选] 模拟登陆并抓取数据,用php也是可以做到的

网站优化优采云 发表了文章 • 0 个评论 • 45 次浏览 • 2022-05-26 01:04 • 来自相关话题

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。 查看全部

  [精选] 模拟登陆并抓取数据,用php也是可以做到的
  点击加入:
  商务合作请加微信(QQ):2230304070
  精选文章正文
  服务器活动推荐:【腾讯云12月份服务器限时秒杀活动,最低99元】活动地址:
  使用PHP的Curl扩展库可以模拟实现登录,并抓取一些需要用户账号登录以后才能查看的数据。具体实现的流程如下
  1. 首先需要对相应的登录页面的html源代码进行分析,获得一些必要的信息:
  1)登录页面的地址;
  2)验证码的地址;
  3)登录表单需要提交的各个字段的名称和提交方式;
  4)登录表单提交的地址;
  5)另外要需要知道要抓取的数据所在的地址。
  2. 获取cookie并存储(针对使用cookie文件的网站)
  $login_url = 'http://www.xxxxx';  //登录页面地址<br />$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $login_url);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  3. 获取验证码并存储(针对使用验证码的网站)
  $verify_url = "http://www.xxxx";   //验证码地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $verify_url);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);<br />$verify_img = curl_exec($ch);<br />curl_close($ch);<br />$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存<br />fwrite($fp, $verify_img);<br />fclose($fp);<br />
  说明:
  由于不能实现验证码的识别,所以我这里的做法是,把验证码图片抓取下来存放到本地文件中,然后在自己项目中的html页面中显示,让用户去填写,等用户填写完账号、密码和验证码,并点击提交按钮之后再去进行下一步的操作。
  4. 模拟提交登录表单:
  $ post_url = 'http://www.xxxx';   //登录表单提交地址<br />$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $ post_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);<br />curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />curl_exec($ch);<br />curl_close($ch);<br />
  5. 抓取数据:
  $data_url = "http://www.xxxx";   //数据所在地址<br />$ch = curl_init();<br />curl_setopt($ch, CURLOPT_URL, $data_url);<br />curl_setopt($ch, CURLOPT_HEADER, false);<br />curl_setopt($ch, CURLOPT_HEADER, 0);<br />curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);<br />curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);<br />$data = curl_exec($ch);<br />curl_close($ch);<br />
  到目前为止,已经把数据所在地址的这个页面都抓取下来存储在字符串变量$data中了。
  需要注意的是抓取下来的是一个网页的html源代码,也就是说这个字符串中不仅包含了你想要的数据,还包含了许多的html标签等你不想要的东西。所以如果你想要从中提取出你需要的数据的话,你还要对存放数据的页面的html代码进行分析,然后结合字符串操作函数、正则匹配等方法从中提取出你想要的数据。

php如何抓取网页数据 PHP之伪静态与真静态

网站优化优采云 发表了文章 • 0 个评论 • 39 次浏览 • 2022-05-20 22:42 • 来自相关话题

  php如何抓取网页数据 PHP之伪静态与真静态
  
  首先,什么是伪静态:
  伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。
  另外在补充两个名词解析
  静态网址:纯静态HTML文档,能使用filetype:htm 查询到的网页
  动态网址:内容存于数据库中,根据要求显示内容,URL中以 ? # & 显示不同的参数,如:news.php?lang=cn&class=1&id=2
  动态、静态、伪静态之间的利与弊(新)
  动态网址
  首先,动态网址目前对于Google来说,“不能被抓取”的说法是错误的,Google能够很好的处理动态网址并顺利抓取;其次“参数不能超过3个”的说法也不正确,Google能够抓取参数超过3个的动态网址,不过,为了避免URL太长应尽量减少参数。
  其次,动态网址有其一定的优势,以上面所说的 news.php?lang=cn&class=1&id=2 为例,网址中的参数准确的告诉Google,此URL内容语言为cn、隶属于分类1、内容ID为2,更便于Google对内容的识别处理。
  最后,动态网址应尽量精简,特别是会话标识(sid)和查询(query)参数,容易造成大量相同页面。
  静态网址
  首先,静态网址具有的绝对优势是其明晰,/product/nokia/n95.html和/about.html可以很容易被理解,从而在搜索结果中可能点击量相对较高。
  其次,静态网址未必就是最好的网址形式,上述动态网址中说到,动态网址能够告诉Google一些可以识别的参数,而静态网址如果文档布置不够恰当(如:过于扁平化,将HTML文档全放在根目录下)及其他因素,反而不如静态网址为Google提供的参考信息丰富。
  最后,樂思蜀觉得Google此文中是否有其隐藏含义?“更新此种类型网址的页面会比较耗费时间,尤其是当信息量增长很快时,因为每一个单独的页面都必须更改编译代码。”虽然所说的是网站,但在Google系统中是否同样存在这样的问题呢?
  伪静态网址
  首先,伪静态网址不能让动态网址“静态化”,伪静态仅仅是对动态网址的一个重写,Google不会认为伪静态就是HTML文档。
  其次,伪静态可取,但应把重心放在去除冗余参数、规范URL、尽可能的避免重复页上。
  最后,伪静态有很大潜大危险,最好在对网站系统、网站结构、内容分布、参数意义熟悉的情况下使用。
  在写伪静态规则时,应保留有价值的参数,不要将有价值的参数全部精简掉,如前面例子中的 news.php?lang=cn&class=1&id=2 最好重写为 news-cn-class1-id2.html,而不是过份精简重写为 news-2.html。
  再就是伪静态中一定不能包含会话标识(sid)和查询(query)参数,/product.asp?sid=98971298178906&id=1234 这样的动态网址,其中的sid本来Google能够识别并屏蔽,但如果重写为 /product/98971298178906/1234,Google不但无法识别,还在整站中造成无限重复页面(每个会话都会产生一个新的会话ID)。
  我们应该选择伪静态还是真静态
  1、使用真静态和假静态对SEO来说没有什么区别
  2、使用真静态可能将导致硬盘损坏并将影响论坛性能
  3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷
  4、最重要的一点,我们要静态是为了SEO
  所以:
  1、使用真静态的方法可以直接排除了,因为无论怎么生成,对硬盘来说都是很伤的。
  2、既然真伪静态的效果一样,我们就可以选择伪静态了。
  3、但是伪静态大量使用会造成CPU超负荷。
  4、所以我们只要不大量使用就可以了。
  5、既然静态只是给SEO看的,我们只需要伪静态给SEO就行了,不需要给用户使用。
  6、所以我们只要在专门提供给SEO爬的Archiver中使用伪静态就可以了。
  7、谢谢大家耐心看我写的文章。
  8、有何不解的地方或是有不同的看法欢迎提出 查看全部

  php如何抓取网页数据 PHP之伪静态与真静态
  
  首先,什么是伪静态:
  伪静态又名URL重写,是动态的网址看起来像静态的网址。换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面。
  另外在补充两个名词解析
  静态网址:纯静态HTML文档,能使用filetype:htm 查询到的网页
  动态网址:内容存于数据库中,根据要求显示内容,URL中以 ? # & 显示不同的参数,如:news.php?lang=cn&class=1&id=2
  动态、静态、伪静态之间的利与弊(新)
  动态网址
  首先,动态网址目前对于Google来说,“不能被抓取”的说法是错误的,Google能够很好的处理动态网址并顺利抓取;其次“参数不能超过3个”的说法也不正确,Google能够抓取参数超过3个的动态网址,不过,为了避免URL太长应尽量减少参数。
  其次,动态网址有其一定的优势,以上面所说的 news.php?lang=cn&class=1&id=2 为例,网址中的参数准确的告诉Google,此URL内容语言为cn、隶属于分类1、内容ID为2,更便于Google对内容的识别处理。
  最后,动态网址应尽量精简,特别是会话标识(sid)和查询(query)参数,容易造成大量相同页面。
  静态网址
  首先,静态网址具有的绝对优势是其明晰,/product/nokia/n95.html和/about.html可以很容易被理解,从而在搜索结果中可能点击量相对较高。
  其次,静态网址未必就是最好的网址形式,上述动态网址中说到,动态网址能够告诉Google一些可以识别的参数,而静态网址如果文档布置不够恰当(如:过于扁平化,将HTML文档全放在根目录下)及其他因素,反而不如静态网址为Google提供的参考信息丰富。
  最后,樂思蜀觉得Google此文中是否有其隐藏含义?“更新此种类型网址的页面会比较耗费时间,尤其是当信息量增长很快时,因为每一个单独的页面都必须更改编译代码。”虽然所说的是网站,但在Google系统中是否同样存在这样的问题呢?
  伪静态网址
  首先,伪静态网址不能让动态网址“静态化”,伪静态仅仅是对动态网址的一个重写,Google不会认为伪静态就是HTML文档。
  其次,伪静态可取,但应把重心放在去除冗余参数、规范URL、尽可能的避免重复页上。
  最后,伪静态有很大潜大危险,最好在对网站系统、网站结构、内容分布、参数意义熟悉的情况下使用。
  在写伪静态规则时,应保留有价值的参数,不要将有价值的参数全部精简掉,如前面例子中的 news.php?lang=cn&class=1&id=2 最好重写为 news-cn-class1-id2.html,而不是过份精简重写为 news-2.html。
  再就是伪静态中一定不能包含会话标识(sid)和查询(query)参数,/product.asp?sid=98971298178906&id=1234 这样的动态网址,其中的sid本来Google能够识别并屏蔽,但如果重写为 /product/98971298178906/1234,Google不但无法识别,还在整站中造成无限重复页面(每个会话都会产生一个新的会话ID)。
  我们应该选择伪静态还是真静态
  1、使用真静态和假静态对SEO来说没有什么区别
  2、使用真静态可能将导致硬盘损坏并将影响论坛性能
  3、使用伪静态将占用一定量的CPU占有率,大量使用将导致CPU超负荷
  4、最重要的一点,我们要静态是为了SEO
  所以:
  1、使用真静态的方法可以直接排除了,因为无论怎么生成,对硬盘来说都是很伤的。
  2、既然真伪静态的效果一样,我们就可以选择伪静态了。
  3、但是伪静态大量使用会造成CPU超负荷。
  4、所以我们只要不大量使用就可以了。
  5、既然静态只是给SEO看的,我们只需要伪静态给SEO就行了,不需要给用户使用。
  6、所以我们只要在专门提供给SEO爬的Archiver中使用伪静态就可以了。
  7、谢谢大家耐心看我写的文章。
  8、有何不解的地方或是有不同的看法欢迎提出

php如何抓取网页数据?(一)_数据库_

网站优化优采云 发表了文章 • 0 个评论 • 126 次浏览 • 2022-05-17 18:07 • 来自相关话题

  php如何抓取网页数据?(一)_数据库_
  php如何抓取网页数据?这是一个我们老常问的问题,毕竟业内也不会很少接触php抓取,或者听说过php抓取这种看上去高深得不得了的名词,那么我们今天就来说说php是如何抓取一个网页的。正式开始之前,我们先说说网页是如何保存在浏览器页面中的,我们普遍采用的方式是js方式,也就是浏览器被加载之后,js代码在加载下来的时候会被php解析。
  那么问题来了,php想要抓取网页,为什么要用js呢?在第一次加载网页时抓取网页数据,再在解析的时候解析js代码,这种事情听上去蛮cool的,每个人的实际场景不一样,但是如果使用的是,在php解析js代码之后将数据从浏览器中post到数据库中,而后再解析js代码获取数据应该会更加方便一些。数据库中的数据是php解析js代码写入的,php解析是建立在js基础上的,所以不像解析js直接获取数据,当php解析器遇到不认识的js代码时解析不出数据,甚至还要再进行js的hook,而js是基于javascript的,所以就算是很简单的js程序,都会认识javascript。
  比如下面这个典型的网页中html代码可以看到title被解析为title,time被解析为time,name被解析为name,ad被解析为ad,index被解析为index,在php代码解析post请求的时候会先对http请求进行解析,然后根据规范对数据的格式进行解析,然后根据数据库表中的记录进行相应的解析。
  代码我们今天不太展示了,有兴趣的朋友可以参考我们的文章:一个关于简单爬虫的设计与实现。数据库我们直接来看一个单纯post请求的例子,代码如下:constrequest=require('localhost').request();functionpost(url,username,password){if(url.split('/').length===。
  1){constbody=request。urlopen(url)。readystate;constjson=json。parse(body);if(json。stringify(body)){returnconsole。log('posts:'+json。tostring());}else{//获取头部信息returnusername=body['cookie']。slice(1,。
  1)[1];json。stringify(body['headers'])。length===2;returnnull;}}}functionpostdata(url,params){constmykey=request。urlopen(url)。key。split('/')。length===1&&mykey。
  split('')。length===1?mykey:'';returnbody['headers']。slice(1,。
  1)[1];}functionclean(postrepo=''){constdeletedelay=date.satellite().minday.millisecon 查看全部

  php如何抓取网页数据?(一)_数据库_
  php如何抓取网页数据?这是一个我们老常问的问题,毕竟业内也不会很少接触php抓取,或者听说过php抓取这种看上去高深得不得了的名词,那么我们今天就来说说php是如何抓取一个网页的。正式开始之前,我们先说说网页是如何保存在浏览器页面中的,我们普遍采用的方式是js方式,也就是浏览器被加载之后,js代码在加载下来的时候会被php解析。
  那么问题来了,php想要抓取网页,为什么要用js呢?在第一次加载网页时抓取网页数据,再在解析的时候解析js代码,这种事情听上去蛮cool的,每个人的实际场景不一样,但是如果使用的是,在php解析js代码之后将数据从浏览器中post到数据库中,而后再解析js代码获取数据应该会更加方便一些。数据库中的数据是php解析js代码写入的,php解析是建立在js基础上的,所以不像解析js直接获取数据,当php解析器遇到不认识的js代码时解析不出数据,甚至还要再进行js的hook,而js是基于javascript的,所以就算是很简单的js程序,都会认识javascript。
  比如下面这个典型的网页中html代码可以看到title被解析为title,time被解析为time,name被解析为name,ad被解析为ad,index被解析为index,在php代码解析post请求的时候会先对http请求进行解析,然后根据规范对数据的格式进行解析,然后根据数据库表中的记录进行相应的解析。
  代码我们今天不太展示了,有兴趣的朋友可以参考我们的文章:一个关于简单爬虫的设计与实现。数据库我们直接来看一个单纯post请求的例子,代码如下:constrequest=require('localhost').request();functionpost(url,username,password){if(url.split('/').length===。
  1){constbody=request。urlopen(url)。readystate;constjson=json。parse(body);if(json。stringify(body)){returnconsole。log('posts:'+json。tostring());}else{//获取头部信息returnusername=body['cookie']。slice(1,。
  1)[1];json。stringify(body['headers'])。length===2;returnnull;}}}functionpostdata(url,params){constmykey=request。urlopen(url)。key。split('/')。length===1&&mykey。
  split('')。length===1?mykey:'';returnbody['headers']。slice(1,。
  1)[1];}functionclean(postrepo=''){constdeletedelay=date.satellite().minday.millisecon

php如何抓取网页数据(php如何抓取网页数据?接下来就说说php实现抓取数据的3种方法)

网站优化优采云 发表了文章 • 0 个评论 • 73 次浏览 • 2022-04-13 20:02 • 来自相关话题

  php如何抓取网页数据(php如何抓取网页数据?接下来就说说php实现抓取数据的3种方法)
  php如何抓取网页数据?接下来就说说php实现抓取网页数据的3种方法:1.第一种方法:使用php后台来抓取网页数据在web开发中,为了达到抓取网页数据的目的,一般会使用php或者jsp来实现。目前先要说的是php抓取网页的时候,经常会采用header的方式来加载网页,很多朋友也是这样做的,但是对于web服务器来说,这并不是php对象的真正加载过程,假如抓取一个网页,先判断这个网页是否支持header访问加载,若不支持的话,则会增加jsp进程,再用jsp进程去加载数据,使网页加载完整。
  php抓取一个网页数据时,会分为加载页面、网页正常工作、网页错误、网页关闭、保存结果。php抓取网页速度的快慢,与网站的设计、配置是分不开的,好的设计可以设计加载页面快速响应,避免在正常工作的情况下阻塞工作。php抓取网页错误信息,一般是没有抓取到数据,调用不到数据,或者被拦截了。tiobe数据库编程语言排行榜2017年1月中国最佳的php和jsp网站这是当时的排行榜,tiobe采用r=all(global)的数据库编程语言的对象数量。
  国内linuxlinode服务器性能排行榜要注意的是,这些排行榜都不是完全准确的,因为某些网站上这些排行榜可能并不一致,他们的数据主要是针对类似百度、谷歌之类的搜索引擎类型的,这种榜单一般来说只能靠运气。php还是要牢记的一点是,要注意自己的安全。抓包工具推荐使用抓包中心提供的。找到网页中的某个字段点击上面的mozilla后面的数字。
  然后,切换到自己设备上的浏览器,在打开页面的同时,会在浏览器显示抓包地址。但是记住,只有在浏览器中打开你要的网页页面,才能抓包(在php本地可以执行,也可以在服务器端运行抓包,这个请各位切记)如下图所示。接下来就可以看到其他显示数据内容,比如时间,数据库的所有权等等。想要抓取其他位置的数据,只需要换浏览器打开网页就可以了,查看别的位置,需要换浏览器打开页面。
  2.第二种方法:使用微信服务号或者公众号。微信服务号、公众号经常是php抓取网页数据的第二选择,因为无论是php自己抓取还是使用第三方工具抓取,都有限制,有些地方甚至无法使用。对于微信服务号、公众号,其网页数据抓取方法有两种,但是我会推荐使用使用下面第二种方法。请参考php抓取网页数据方法3.第三种方法:使用swoole进程服务器。
  这种方法会比php抓取网页的总花费要低,但是并不会比前面提到的方法慢,原因如下:swoole可以与php直接交互,所以在抓取网页数据的时候php脚本,会快速直接挂起。不过对于抓取小网站,总体花。 查看全部

  php如何抓取网页数据(php如何抓取网页数据?接下来就说说php实现抓取数据的3种方法)
  php如何抓取网页数据?接下来就说说php实现抓取网页数据的3种方法:1.第一种方法:使用php后台来抓取网页数据在web开发中,为了达到抓取网页数据的目的,一般会使用php或者jsp来实现。目前先要说的是php抓取网页的时候,经常会采用header的方式来加载网页,很多朋友也是这样做的,但是对于web服务器来说,这并不是php对象的真正加载过程,假如抓取一个网页,先判断这个网页是否支持header访问加载,若不支持的话,则会增加jsp进程,再用jsp进程去加载数据,使网页加载完整。
  php抓取一个网页数据时,会分为加载页面、网页正常工作、网页错误、网页关闭、保存结果。php抓取网页速度的快慢,与网站的设计、配置是分不开的,好的设计可以设计加载页面快速响应,避免在正常工作的情况下阻塞工作。php抓取网页错误信息,一般是没有抓取到数据,调用不到数据,或者被拦截了。tiobe数据库编程语言排行榜2017年1月中国最佳的php和jsp网站这是当时的排行榜,tiobe采用r=all(global)的数据库编程语言的对象数量。
  国内linuxlinode服务器性能排行榜要注意的是,这些排行榜都不是完全准确的,因为某些网站上这些排行榜可能并不一致,他们的数据主要是针对类似百度、谷歌之类的搜索引擎类型的,这种榜单一般来说只能靠运气。php还是要牢记的一点是,要注意自己的安全。抓包工具推荐使用抓包中心提供的。找到网页中的某个字段点击上面的mozilla后面的数字。
  然后,切换到自己设备上的浏览器,在打开页面的同时,会在浏览器显示抓包地址。但是记住,只有在浏览器中打开你要的网页页面,才能抓包(在php本地可以执行,也可以在服务器端运行抓包,这个请各位切记)如下图所示。接下来就可以看到其他显示数据内容,比如时间,数据库的所有权等等。想要抓取其他位置的数据,只需要换浏览器打开网页就可以了,查看别的位置,需要换浏览器打开页面。
  2.第二种方法:使用微信服务号或者公众号。微信服务号、公众号经常是php抓取网页数据的第二选择,因为无论是php自己抓取还是使用第三方工具抓取,都有限制,有些地方甚至无法使用。对于微信服务号、公众号,其网页数据抓取方法有两种,但是我会推荐使用使用下面第二种方法。请参考php抓取网页数据方法3.第三种方法:使用swoole进程服务器。
  这种方法会比php抓取网页的总花费要低,但是并不会比前面提到的方法慢,原因如下:swoole可以与php直接交互,所以在抓取网页数据的时候php脚本,会快速直接挂起。不过对于抓取小网站,总体花。

php如何抓取网页数据( 使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)

网站优化优采云 发表了文章 • 0 个评论 • 80 次浏览 • 2022-04-12 23:02 • 来自相关话题

  php如何抓取网页数据(
使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)
  php curl模拟登录并获取数据实例详情
  更新时间:2016年12月22日08:36:05投稿:lqh
  cURL 是一个强大的 PHP 库。使用PHP的cURL库可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例。有需要的朋友可以参考以下
  PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
  代码实战
  我们先看登录部分的代码:
  
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
  login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
  接下来,如果登录成功,我们需要获取登录成功后的页面信息。
  
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
  函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
  我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
  
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
  使用总结
  1、初始化卷曲;
  2、使用 curl_setopt 设置目标 url 等选项;
  3、curl_exec,执行curl;
  4、 执行后关闭curl;
  5、输出数据。
  感谢您的阅读,希望对您有所帮助,感谢您对本站的支持! 查看全部

  php如何抓取网页数据(
使用PHP的cURL库设置cookie完成模拟登录网页的使用总结)
  php curl模拟登录并获取数据实例详情
  更新时间:2016年12月22日08:36:05投稿:lqh
  cURL 是一个强大的 PHP 库。使用PHP的cURL库可以简单有效的抓取网页和采集内容,设置cookie完成模拟登录网页,curl提供了丰富的功能,开发者可以参考PHP手册了解cURL的更多信息。本文以开源中国(oschina)的模拟登录为例。有需要的朋友可以参考以下
  PHP 的 curl() 爬取网页的效率相对较高,并且支持多线程,而 file_get_contents() 的效率略低。当然,使用 curl 时需要启用 curl 扩展。
  代码实战
  我们先看登录部分的代码:
  
//模拟登录
function login_post($url, $cookie, $post) {
$curl = curl_init();//初始化curl模块
curl_setopt($curl, CURLOPT_URL, $url);//登录提交的地址
curl_setopt($curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($post));//要提交的信息
curl_exec($curl);//执行cURL
curl_close($curl);//关闭cURL资源,并且释放系统资源
}
  login_post()函数首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址、保存的cookie文件、post数据(用户名和密码等)、是否提交返回信息等,然后curl_exec执行curl,最后curl_close()释放资源。请注意,PHP 自己的 http_build_query() 可以将数组转换为连接字符串。
  接下来,如果登录成功,我们需要获取登录成功后的页面信息。
  
//登录成功后获取数据
function get_content($url, $cookie) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); //读取cookie
$rs = curl_exec($ch); //执行cURL抓取页面内容
curl_close($ch);
return $rs;
}
  函数get_content()也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中,我们将CURLOPT_RETURNTRANSFER设置为1自动返回信息,CURLOPT_COOKIEFILE可以读取登录时保存的cookie信息,最终返回页面内容。
  我们的最终目标是获取模拟登录后的信息,即只有正常登录成功后才能获取的有用信息。下面我们以登录开源中国手机版为例,看看登录成功后如何获取信息。
  
//设置post的数据
$post = array (
'email' => 'oschina账户',
'pwd' => 'oschina密码',
'goto_page' => '/my',
'error_page' => '/login',
'save_login' => '1',
'submit' => '现在登录'
);
//登录地址 $url = "http://m.oschina.net/action/user/login"; //设置cookie保存路径 $cookie = dirname(__FILE__) . '/cookie_oschina.txt'; //登录后要获取信息的地址 $url2 = "http://m.oschina.net/my"; //模拟登录
login_post($url, $cookie, $post); //获取登录页的信息 $content = get_content($url2, $cookie); //删除cookie文件
@ unlink($cookie); //匹配页面信息 $preg = "/(.*)/i";
preg_match_all($preg, $content, $arr); $str = $arr[1][0]; //输出内容 echo $str;
  使用总结
  1、初始化卷曲;
  2、使用 curl_setopt 设置目标 url 等选项;
  3、curl_exec,执行curl;
  4、 执行后关闭curl;
  5、输出数据。
  感谢您的阅读,希望对您有所帮助,感谢您对本站的支持!

官方客服QQ群

微信人工客服

QQ人工客服


线