PYTHON3反爬虫(cookie限制)对策问题

爬虫新手,想要爬取下列网站的数据。求教该网站的反爬虫对策。
http://www.homes.co.jp/mansio...

■试过的方法
分别用过模拟浏览器webdriver.chrome和request的方法,代码和结果在最下。

■怀疑的反爬虫策略
模拟浏览器法头一次程序进去后能打开网站。但是再进时,被检测到使用ROBOTS程序后重定向至下述网址。之后能用Safari,或正常的chrome打开,没有被禁IP。
结合网址的描述,怀疑该网站是通过cookie限制来反爬虫的。
【webdriver.chrome时候的重定向】
http://www.homes.co.jp/distil...

■代码
【模拟浏览器法】

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument('user-agent=ozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36')
driver = webdriver.Chrome(chrome_options=options)
driver.implicitly_wait(30)
driver.get('http://www.homes.co.jp/mansion/chuko/list/')
cookies=driver.get_cookies()
print(cookies)

【模拟浏览器法结果】
第一次能进去,之后被重定向。返回的cookie为空。

【request法】

import requests

header={'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36'}
conn = requests.session()
conn.get('http://www.homes.co.jp/mansion/chuko/list/',headers=header)
resp = conn.get('http://www.homes.co.jp/mansion/chuko/list/',headers=header)
print(resp.text)

【request结果】

<!DOCTYPE html>
<html>

<head>
<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma" content="no-cache" />
<meta http-equiv="refresh" content="10; url=/distil_r_blocked.html?requestId=5d14e8ab-934c-469f-850b-fe5114ba592d&httpReferrer=%2F" />
<script type="text/javascript">
    (function(window){
        try {
            if (typeof sessionStorage !== 'undefined'){
                sessionStorage.setItem('distil_referrer', document.referrer);
            }
        } catch (e){}
    })(window);
</script>
<script type="text/javascript" src="/nxtgrpdstl.js" defer></script><style type="text/css">#d__fFH{position:absolute;top:-5000px;left:-5000px}#d__fF{font-family:serif;font-size:200px;visibility:hidden}#yfvqbuaatrrwufvvxqccss{display:none!important}</style></head>
<body>
<div id="distilIdentificationBlock">&nbsp;</div>
</body>
</html>
阅读 5.2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题