抓取天猫店铺的关于页面一定次数后是需要登录,你可以考虑使用高匿代理IP不停切换的抓,我近段时间刚好也在做淘宝的爬虫,解决方式是selenium+高匿代理解决的。不过,效率一般般,2天就抓了20来W天猫店铺。
你抓店铺是根据什么来抓的?关键词还是什么?
@双子394: 将淘宝关键字搜索排行榜拿下来抓的。
@小码哥: 能私聊吗?请教下关于关键词库的建立。我是第一次做关于爬虫的技术。1024064279 这是我QQ
ATM机器里面有钱,我该怎么跳过登陆,直接拿到里面的钱呢?
砸了ATM
这个我前不久还真遇到过,准备取钱,结果里面有张卡,还能直接操作。吓的我把里面的卡给退出来送给地铁管理人员了。从此以后留下后遗症了,每次取完钱必须确认卡拿出来了没有。
买通开发的程序猿即可!!!
这也没用,开发的是没权限看正式的数据的
你先把登录这部分做了,然后再做你后面想做的事,想绕过去? 你能想到的方法 阿里的人都想到了的
怎么模拟登录获取登录后的cookie呢?有没有例子啊
@双子394:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); request.Accept = "*/*"; request.Method = "POST"; request.Headers.Add("Accept-Language", "zh-cn,zh;q=0.8,en-us;q=0.5,en;q=0.3"); request.ContentType = "application/x-www-form-urlencoded; charset=UTF-8"; //表单提交 //request.Host = "www.cnblogs.com"; request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"; byte[] bytes = Encoding.UTF8.GetBytes(body); request.ContentLength = bytes.Length; request.GetRequestStream().Write(bytes, 0, bytes.Length); HttpWebResponse response = (HttpWebResponse)request.GetResponse(); Stream responseStream = response.GetResponseStream(); StreamReader reader = new StreamReader(responseStream, Encoding.UTF8); string html = reader.ReadToEnd(); //取出cookie Cookie cookie = response.Cookies["UserName"]; string userName = cookie.Value;
@Zery: HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); 这个url是商品页的Url吗?
byte[] bytes = Encoding.UTF8.GetBytes(body); body这个参数是什么格式?
Cookie cookie = response.Cookies["UserName"]; 可以这么获取cookie?
@双子394:
body 那个是因为我是用post方式去请求的,只是我自己用的段代码也就给你个参考而以,
另外 Cookie的 取法你看看MSDN的写法 https://msdn.microsoft.com/zh-cn/library/dd920298(v=vs.95).aspx
如果可以绕过登录了,那就直接去读数据库了,还用得到爬虫??
模拟一个http登录请求,获取response后的cookies,下次访问带上cookie即可。
帮忙看看这个方法呗?第一次做模拟登录
byte[] loginByteArray = Encoding.UTF8.GetBytes(postData); // 转化
byte[] byteArray = Encoding.UTF8.GetBytes(postData); // 转化
postData这个参数是什么格式啊?
public String Post(string url, string postData) { try { #region 登录 string loginurl = "http://10.16.230.26:8080/login.aspx?ReturnUrl=%2flogout.aspx"; byte[] loginByteArray = Encoding.UTF8.GetBytes(postData); // 转化 CookieContainer myCookieContainer = new CookieContainer(); //新建一个CookieContainer来存放Cookie集合 HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(loginurl); //新建一个HttpWebRequest myHttpWebRequest.ContentType = "application/x-www-form-urlencoded"; myHttpWebRequest.ContentLength = loginByteArray.Length; myHttpWebRequest.Method = "POST"; myHttpWebRequest.CookieContainer = myCookieContainer; //设置HttpWebRequest的CookieContainer为刚才建立的那个myCookieContainer Stream myRequestStream = myHttpWebRequest.GetRequestStream(); // Send the data. myRequestStream.Write(loginByteArray, 0, loginByteArray.Length); //写入参数 myRequestStream.Close(); //把数据写入HttpWebRequest的Request流 myRequestStream.Close(); //关闭打开对象 HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); //新建一个HttpWebResponse myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri); //获取一个包含url的Cookie集合的CookieCollection Stream myResponseStream = myHttpWebResponse.GetResponseStream(); StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); //把数据从HttpWebResponse的Response流中读出 myStreamReader.Close(); myResponseStream.Close(); #endregion byte[] byteArray = Encoding.UTF8.GetBytes(postData); // 转化 //拿到了Cookie,再进行请求就能直接读取到登录后的内容了 myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url); myHttpWebRequest.Headers.Add("Accept-Language: zh-cn"); myHttpWebRequest.Headers.Add("UA-CPU: x86"); myHttpWebRequest.Headers.Add("Accept-Encoding: gzip, deflate"); myHttpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Embedded Web Browser from: http://bsalsa.com/; InfoPath.2; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"; myHttpWebRequest.ContentType = "application/x-www-form-urlencoded"; myHttpWebRequest.ContentLength = byteArray.Length; myHttpWebRequest.Method = "POST"; myHttpWebRequest.CookieContainer = myCookieContainer;//* //刚才那个CookieContainer已经存有了Cookie,把它附加到HttpWebRequest中则能直接通过验证 myRequestStream = myHttpWebRequest.GetRequestStream(); // Send the data. myRequestStream.Write(byteArray, 0, byteArray.Length); //写入参数 myRequestStream.Close(); myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse(); myHttpWebResponse.Cookies = myCookieContainer.GetCookies(myHttpWebRequest.RequestUri); myResponseStream = myHttpWebResponse.GetResponseStream(); myStreamReader = new StreamReader(myResponseStream, Encoding.UTF8); string outdata = myStreamReader.ReadToEnd(); myStreamReader.Close(); myResponseStream.Close(); return outdata; } catch (Exception ex) { return String.Empty; } }
你应该是要爬商品数据吧。直接爬网页上,不用登录
使用pyspider,模拟登陆,获取cookie
肯定必须是登陆后,才能搞得啊。
试试神箭手云爬虫平台,有现成的天猫商品及评价采集爬虫[按搜索关键字]支持云端自动采集,试试监控更新~
爬虫链接:http://www.shenjianshou.cn/index.php?r=market/configDetail&pid=182