QQ空间图片爬虫
昨晚玩了一下QQ空間的圖片爬蟲,發(fā)現(xiàn)跟一般的不一樣。
QQ空間里面的圖片用一般的urllib.urlopen(url)打開圖片是打不開。然后想用requests模塊,不過感覺有點(diǎn)麻煩,后來用了httplib模塊的HTTPConnection進(jìn)行連接才成功。
一爬,發(fā)現(xiàn)只爬了60+張圖片,空間一共有700+,為啥不行。。。
?HTTPConnection需要跟主機(jī)建立連接的,后來發(fā)現(xiàn)700+張的圖片并不是在同一個(gè)主機(jī)上,,,,然后就對url進(jìn)行分析提取主機(jī)再建立連接。
查看了一下不同連接的請求信息,主要是headers不一樣:
urllib.urlopen(url)的req.headers:
{ host: 'localhost:3000', 'user-agent': 'Python-urllib/1.17' }
HTTPConnection的req.headers:
{ host: 'localhost:3000', 'accept-encoding': 'identity' }
Chromed headers:
{ host: 'localhost:3000',
? connection: 'keep-alive',
? 'cache-control': 'max-age=0',
? accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
? 'upgrade-insecure-requests': '1',
? 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36',
? 'accept-encoding': 'gzip, deflate, sdch',
? 'accept-language': 'zh-CN,zh;q=0.8',
? cookie: 'a3356_times=4',
? 'if-none-match': 'W/"a01a-igxyqFU/wcUhvngSw3XXSQ"' }
只要對請求的headers進(jìn)行處理就可以相應(yīng)地防止爬蟲
總結(jié)
- 上一篇: 关于Python中的lambda,这篇阅
- 下一篇: C++ lambda递归