我想从https://www.fewo-direkt.de (在美国https://www.homeaway.com/中)的对象站点抓取数据,比如:https://www.fewo-direkt.de/ferienwohnung-ferienhaus/p8735326,但是如果爬虫试图启动页面,我只会得到下面的代码。我想几个小块爬虫,但我不知道如何和轮有一个可避免的方法。有什么主意吗?
Python、请求、BeautifulSoup --与其他网站相比,它工作得很好。
<html style="height:100%">
<head>
<meta content="NOINDEX, NOFOLLOW" name="ROBOTS"/>
<meta content="telephone=no" name="format-detection"/>
<meta content="initial-scale=1.0" name="viewport"/>
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/>
<script src="/_Incapsula_Resource?SWJIYLWA=719d34d31c8e3a6e6fffd425f7e032f3" type="text/javascript"></script>
</head>
<body style="margin:0px;height:100%"><iframe frameborder="0" height="100%" marginheight="0px" marginwidth="0px" src="/_Incapsula_Resource?CWUDNSAI=20&xinfo=5-259174360-0%200NNN%20RT%281546012021046%20144%29%20q%280%20-1%20-1%20-1%29%20r%280%20-1%29%20B15%283%2c901868%2c0%29%20U5&incident_id=877000750783982903-1038286134589588661&edet=15&cinfo=03000000" width="100%">Request unsuccessful. Incapsula incident ID: 877000750783982903-1038286134589588661</iframe></body>
</html>发布于 2018-12-28 16:58:35
对于bot的检测,网站可以使用的方法很多。我们可以将它们分组到下一个列表中:
User-Agent从python-requests/开始,这可以很容易地在后端进行检查,因此您的客户端将被标记为bot并得到"error“响应。
解决方案:试图从浏览器中嗅探相同的请求(您可以使用费德勒),并从浏览器克隆标题。在python请求中,可以在下一段代码中完成:
headers ={“用户代理”:“一些用户代理”} response = requests.get(url,headers=headers)Cookie也是header,但是验证方法不同于以前的方法。这种方法的思想是检查Cookie头并验证每个cookie。
解决方案:
1)嗅探所有通过浏览器完成的请求;
2)检查您正在尝试重复的请求,并查看Cookie头;
3)在以前的请求中搜索每个cookie的值;
4)在主请求之前重复设置cookie(-s)的每个请求,以收集所有所需的cookie。
在python请求中,不需要手动抓取,只需使用session:
http_session = requests.Session() http_session.get(url_to_get_cookie) #cookie将存储在"http_session“对象响应= http_session.get(final_url)中。当然,它是过于简化的指南,它不包括关于JavaScript生成头/标记、“控制”请求、WebSocket等的信息。但是,在我看来,它作为入门级指南是有帮助的,它可以指向某个人要查找的位置。
https://stackoverflow.com/questions/53961188
复制相似问题