我编写了一个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"。这会阻止自动登录正常工作吗?如果没有,我需要对我的代码进行哪些更改才能正常运行?
我搜索了与此主题相关的几个主题并尝试了许多建议的解决方案,以使脚本自动登录而不会成功。
答案 0 :(得分:-1)
只需使用Python -selenium登录,使用lxml抓取数据