2017-03-03 15 views
1

Ich habe eine ähnliche question vorher gepostet. Ich habe versucht, ein web page mit dem folgenden Ansatz zu kratzenIch kann keine Webseite mit Python scannen

import requests 

url = 'https://www.zameen.com/' 
res = requests.get(url) 
data = res.text 
print(data) 

Seine Antwort sagt, ich bin entweder ein BOT oder Javascript nicht aktiviert ist. Also, ich habe überprüft, aber Javascript ist aktiviert. Also versuchte ich einen anderen Ansatz der Verwendung von gefälschten User-Agent mit dem folgenden Code

from fake_useragent import UserAgent 
headers = {} 
headers['User-Agent'] = str(ua.chrome) 
web_page = requests.get(url,headers=headers) 
print(web_page.content) 

Antwort:

b'<!DOCTYPE html>\n\n\t\n\n\t\n\t\n\t\n\n\t\n\t\n\n\t\n\t\n\t\n\n<head>\n<META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">\n<meta http-equiv="cache-control" content="max-age=0" />\n<meta http-equiv="cache-control" content="no-cache" />\n<meta http-equiv="expires" content="0" />\n<meta http-equiv="expires" content="Tue, 01 Jan 1980 1:00:00 GMT" />\n<meta http-equiv="pragma" content="no-cache" />\n<meta http-equiv="refresh" content="10; url=/distil_r_captcha.html?Ref=/&amp;distil_RID=053235A2-0030-11E7-8429-B03805AB611E&amp;distil_TID=20170303163950" />\n<script type="text/javascript">\n\t(function(window){\n\t\ttry {\n\t\t\tif (typeof sessionStorage !== \'undefined\'){\n\t\t\t\tsessionStorage.setItem(\'distil_referrer\', document.referrer);\n\t\t\t}\n\t\t} catch (e){}\n\t})(window);\n</script>\n<script type="text/javascript" src="/ga368490.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}#caexxxzxycbzutyvy{display:none!important}</style></head>\n<body>\n<div id="distil_ident_block">&nbsp;</div>\n</body>\n</html>\n' 

Es wieder erkannt mich wie ein Roboter. Also überprüfte ich, ob ich die Daten von der Website abrufen kann oder nicht. Dann habe ich robotparser von urllib

from urllib import robotparser 

req = robotparser.RobotFileParser() 
req.set_url(url) 
req.read() 
print(req.can_fetch('*','https://www.zameen.com/')) 

Returns:

TRUE # Means I can fetch the data from the website. 

Gibt es eine Möglichkeit die Daten von dieser Web-Seite zu bekommen? Danke

+0

Bitte überprüfen Sie diese Antwort: http: // Stackoverflow .com/questions/8049520/web-scraping-javascript-page-with-python – foobar

+0

Ich bin mir nicht sicher, was passiert. Ich habe versucht mit mechanize und setze robots_handle auf falsch, aber aus irgendeinem Grund gab es 405 Fehler. Gleich mit Anfragen bekomme ich 405 Fehler – Shashank

+0

Ich sollte nur beachten, dass die Website in Frage will nicht von Bots besucht werden, über die Meta-Tag in der Antwort gefunden: ' ' –

Antwort

1

Sie können BeautifulSoup und einen Selenium-Treiber dafür verwenden. Ich erhielt Erfolg der Seite Quelle aus der URL bekommen Sie mit diesem zur Verfügung gestellt:

from selenium import webdriver 
from bs4 import BeautifulSoup 

driver = webdriver.Firefox() # Could be any other browser you have the drivers for 
driver.get('https://zameen.com') 
html = driver.page_source 
code = BeautifulSoup(html, 'html5lib') 
print code 

Nur nicht vergessen, mit BS4 und Selen zu installieren:

pip install bs4 

pip install selenium 
+0

Ps .: Die Verwendung von Selen verhindert, dass die Seite denkt, Sie seien ein Bot. – Dico

+0

Leider gibt es mir auch die gleiche Antwort mit Metadaten zurückgeben '' :( – muazfaiz