需要在抓取之前登录网站

时间:2014-07-16 18:03:29

标签: php curl web-scraping autologin

我编写了一个PHP脚本,用于在网站(zillow.com)上搜索搜索结果。但是,在用户登录其站点之前,该站点会隐藏部分结果。当我的刮刀运行时,它不会收集任何需要登录的信息。它只会抓取未登录用户可用的信息。

我尝试过使用cURL但没有成功。这是我到目前为止所得到的:

                $username = trim($values["myemail@gmail.com"]);
                $password = trim($values["mypass123"]);                    

                //login form action url
                $url="http://www.zillow.com/user/account/services/Login.htm"; 
                $postinfo = "email=".$username."&password=".$password;

                $cookie_file_path = "cookie.txt";

                $ch = curl_init();
                curl_setopt($ch, CURLOPT_HEADER, false);
                curl_setopt($ch, CURLOPT_NOBODY, false);
                curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

                curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path);
                curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7");
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                curl_setopt($ch, CURLOPT_REFERER, $_SERVER['REQUEST_URI']);
                curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
                curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0);
                curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
                curl_setopt($ch, CURLOPT_POST, 1);
                curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo);
                curl_exec($ch);

                //page with the content I want to grab
                curl_setopt($ch, CURLOPT_URL, "http://www.zillow.com/homes/for_sale/Alamance-County-NC/list/fore_lt/pmf,pf_pt/2117_rid/0-125000_price/0-478_mp/1970-_built/priced_sort/36.249851,-79.236667,35.843385,-79.542489_rect/1_p/");

                //do stuff with the info with DomDocument() etc
                $html = curl_exec($ch);

                // Insert scraping code here

                curl_close($ch);

抓取脚本正在收集页面上的信息,而不是所有登录用户可用的信息。

在源代码中,在登录表单标记下,有一个输入标记,其类型为" hidden"。这会阻止自动登录正常工作吗?如果没有,我需要对我的代码进行哪些更改才能正常运行?

我搜索了与此主题相关的几个主题并尝试了许多建议的解决方案,以使脚本自动登录而不会成功。

1 个答案:

答案 0 :(得分:-1)

只需使用Python -selenium登录,使用lxml抓取数据