爬虫请教,请问如何爬 "http://www.kuaidaili.com/" 的数据

2016-04-07 18:30:21 +08:00
 odirus
经过测试

( 1 )模拟浏览器 header 不行;
( 2 )使用 phantomjs 也不行;

"http://www.yundun.com/" 这网站提供的防爬虫设计。

求一个简单易行的思路,我也不知道怎么才能突破反爬虫规则
6372 次点击
所在节点    问与答
23 条回复
LinJunzhu
2016-05-24 13:41:41 +08:00
@UnisandK

你好,能麻烦请教下么?

我在获得 response 的 JS 代码后
```javascript
window.onload=setTimeout("by(242)", 200);
function by(OG) {var qo, mo="", no="", oo = [0x0a,0x9a,0x4a,0x01,0x7c,0x13,0xb5,0x4f,0xfd,0x78,0x0f,0x27,0xd6,0xae,0x28,0xfe,0x95,0x50,0x98,0xe8,0x15,0xa7,0x9d,0xd7,0x88,0x1f,0x18,0xf0,0x67,0x3e,0x19,0x33,0xac,0x3b,0x09,0x99,0x87,0x60,0xb5,0x70,0xe7,0x3d,0x85,0x40,0x90,0x08,0xf8,0x66,0x07,0x35,0xb0,0xde,0x17,0x2f,0x27,0xfe,0xd6,0x88,0xf5,0xe7,0xdc,0xea,0x62,0x34,0x01,0xd1,0x7f,0xd0,0x19,0x22];qo = "qo=68; do{oo[qo]=(-oo[qo])&0xff; oo[qo]=(((oo[qo]>>2)|((oo[qo]<<6)&0xff))-99)&0xff;}while(--qo>=2);"; eval(qo);qo = 67; do { oo[qo] = (oo[qo] - oo[qo - 1]) & 0xff; } while (-- qo >= 3 );qo = 1; for (;;) { if (qo > 67) break; oo[qo] = ((((((oo[qo] + 198) & 0xff) + 204) & 0xff) << 5) & 0xff) | (((((oo[qo] + 198) & 0xff) + 204) & 0xff) >> 3);qo++;}po = "";for (qo = 1; qo < oo.length - 1; qo++) if (qo % 6) po += String.fromCharCode(oo[qo] ^ OG);po += "\""; eval("qo=eval;qo(po);");}

```

那这里该如何去解析拿到 yundun 的 id 呢?
odirus
2016-05-24 15:13:20 +08:00
@LinJunzhu 我没用过 Scrapy 呢,我用的是 selenium + PhamtomJS ,

那段 JavaScript 代码其实就是重定向的代码,但是我没找到在 Python 中执行 JavaScript 合适的轮子,所以就直接用 PhamtomJS 执行这个页面,当然也会自动运行 JavaScript 代码,然后我就到真实页面了。

但是我发现这个代理网站很糟糕,所以我就发现了另外一个网站, http://www.freeproxylists.net/。如果你爬这个网站的时候遇到机器人验证,你也搞不定的话,可以再问。
LinJunzhu
2016-05-25 00:07:51 +08:00
@odirus 感谢回复 :)

现在解决了这个问题,我的解决方法:

1 、 Scrapy + selenium + PhamtomJS
2 、 Scrapy 请求拿到那段 JS 后,修改下那段 JS 执行跳转的代码,拿到要跳转的 link (因为我用的 driver.execute_script( js ) 执行完后没办法自动跳转到指定页面。)
3 、拿到 link 后就好办了,直接请求。

另外,发现我拿到的代理压根用不了。。。。。也是醉人。 还想着说稳定的话以后就购买了。

我去试试你的那个网站,谢谢了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/269337

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX