php如何抓取网页数据(这期内容当中小编丰富且以专业的角度为大家分析和叙述)

优采云 发布时间: 2021-09-16 23:20

  php如何抓取网页数据(这期内容当中小编丰富且以专业的角度为大家分析和叙述)

  在本期中,编辑器将向您介绍如何使用curl在PHP文章中捕获数据,PHP内容丰富,从专业角度为您分析和描述。看完这个文章我希望你能有所收获

  1.首先,分析相应登录页面的HTML源代码,获取一些必要的信息:

  (1)登录页面地址)

  (2)验证码地址)

  (3)login form)要提交的每个字段的名称和提交方法

  (4)登录表单提交地址

  (5)此外,您需要知道要捕获的数据的地址

  2.使用cookie文件获取并存储cookie(适用于网站):

  $login_url = 'http://www.xxxxx';  //登录页面地址

$cookie_file = dirname(__FILE__)."/pic.cookie";  //cookie文件存放位置(自定义)

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $login_url);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file);

curl_exec($ch);

curl_close($ch);

  3.获取验证码并存储(对于网站使用验证码):

  $verify_url = "http://www.xxxx";   //验证码地址

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $verify_url);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$verify_img = curl_exec($ch);

curl_close($ch);

$fp = fopen("./verify/verifyCode.png",'w');  //把抓取到的图片文件写入本地图片文件保存

fwrite($fp, $verify_img);

fclose($fp);

  说明:

  由于无法识别验证码,我在这里的做法是捕获验证码图像并将其存储在本地文件中,然后将其显示在我的项目的HTML页面中,供用户填写。在用户填写帐户、密码和验证码,并单击提交按钮后,我可以转到t他需要下一步

  4.模拟提交登录表:

  $ post_url = 'http://www.xxxx';   //登录表单提交地址

$post = "username=$account&password=$password&seccodeverify=$verifyCode";//表单提交的数据(根据表单字段名和用户输入决定)

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $ post_url);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

curl_setopt($ch, CURLOPT_POSTFIELDS, $post);     //提交方式为post

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

curl_exec($ch);

curl_close($ch);

  5.grab数据:

  $data_url = "http://www.xxxx";   //数据所在地址

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $data_url);

curl_setopt($ch, CURLOPT_HEADER, false);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER,0);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file);

$data = curl_exec($ch);

curl_close($ch);

  到目前为止,数据所在的页面已被捕获并存储在字符串变量$data中

  需要注意的是,捕获的是网页的HTML源代码,也就是说,字符串不仅收录您想要的数据,还收录许多HTML标记和其他您不想要的内容。因此,如果要提取所需的数据,还需要分析存储数据的页面的HTML代码,然后将tring操作函数数、正则匹配等方法提取所需数据

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线