php如何抓取网页数据(这期内容当中小编丰富且以专业的角度为大家分析和叙述)
优采云 发布时间: 2021-09-16 23:20php如何抓取网页数据(这期内容当中小编丰富且以专业的角度为大家分析和叙述)
在本期中,编辑器将向您介绍如何使用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操作函数数、正则匹配等方法提取所需数据