php模拟登陆抓取数据,无法用正则表达式匹配中文header()函数是输出到HTTP头,和你这个问题是没有关系php模拟登录抓取数据的 。
真正相关的,是你的源代码的编码方式 。
php模拟登录抓取数据我举个例子,若源代码文件是采用UTF8编码 , 那么你在抓取到页面后,先要进行编码转换到UTF8php模拟登录抓取数据!
如,使用iconvphp模拟登录抓取数据:
若抓取到的页面存放在$contents中php模拟登录抓取数据:那么运行$contents=iconv('gb2312','utf-8//IGNORE',$contents);//参数中的IGNORE是忽略错误
这样再进行正则匹配才行 。
当然匹配出来的结果也需要用UTF8来正常显示,所以header()那部分就不用去掉了 。
phpstudy怎么抓取网页数据什么网页数据?
是打开 本地网页还是打开网上网页
如果是本地网页的话在浏览器上输入127.0.0.1或者localhost进行访问
如果是外网我理解的是你要获取外网的一个网页,可以用代码或者程序来实现
(一般称为采集程序 , 或者小偷程序)
//个人认为curl好一点 , 因为curl可以模拟浏览器,有的网站会过滤机器人
//1.php代码
//把网页读入一个字符串
$contone = file_get_contents('url');
print_r($contone);
//curl采集
#初始化curl(true/false)
$ch=curl_init();
#请求url地址
$params[CURLOPT_URL]='网址';
#是否返回响应头信息
$params[CURLOPT_HEADER] = true;
#是否将结果返回
$params[CURLOPT_RETURNTRANSFER] = true;
#是否重定向
$params[CURLOPT_FOLLOWLOCATION] = true;
#伪造浏览器
$params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';
curl_setopt_array($ch, $params);
$content=curl_exec($ch);
//输出网页内容
print_r($content);
//下面是整个curl采集类
class Curl{
#采集的地址
public $url;
#匹配的正则
public $preg;
#模拟登录需要的用户名
public $username;
#模拟登录需要的密码;
public $pwd;
#cookie存储的路径
private $cookie_path;
#采集数据的字符集
public $charset;
/**
* 构造方法,初始化采集基本信息
* @param $url采集的url
* @param $preg 匹配的正则
* @param string $username用户名
* @param string $pwd密码
* @param string $charset 字符集
*/
public function __construct($info){
extract($info);
$this-url=$url;
$this-preg=$preg;
if(isset($charset)){
header("content-type:text/html;charset=".$this-charset);
}else{
header("content-type:text/html;charset=utf-8");
}
if(isset($username)){
$this-username=$username;
}
if(isset($pwd)){
$this-pwd=$pwd;
}
}
/*
* 采集数据,非表单提交方式,直接采集的
*/
public function get_info(){
#初始化curl
$ch=curl_init();
#请求url地址
$params[CURLOPT_URL]=$this-url;
#是否返回响应头信息
$params[CURLOPT_HEADER] = true;
#是否将结果返回
$params[CURLOPT_RETURNTRANSFER] = true;
#是否重定向
$params[CURLOPT_FOLLOWLOCATION] = true;
#伪造浏览器
$params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';
//判断是否有cookie,有的话直接使用
//if (isset($_COOKIE['cookie_jar']) ($_COOKIE['cookie_jar'] || is_file($_COOKIE['cookie_jar']))){
//$params[CURLOPT_COOKIEFILE] = $_COOKIE['cookie_jar']; //这里判断cookie
//} else {
//$cookie_jar = tempnam($this-cookie_path, 'cookie');//产生一个cookie文件
//$params[CURLOPT_COOKIEJAR] = $cookie_jar;//写入cookie信息
推荐阅读
- oracle数据库表索引大小,oracle索引种类及选择
- 拍摄画图用什么架子,拍画用什么镜头
- ppt内如何设置模板,ppt内如何设置模板效果
- oracleerp价格,oracle rac 价格
- python算符函数 python算术运算符
- 为什么手机拍摄不稳,为什么手机拍照拍不清楚
- 好看视频号怎么赚钱,好看视频怎么赚钱怎么提现多想抱抱你
- 关注粉阅读公众号,关注公众号继续免费阅读
- go语言写入日志 go语言日志框架