2016-06-09 2 views
0

Ich versuche, die Daten von einer URL in einem Tag enthalten sind, zu öffnen und dann kratzen die wie folgt aussieht:Schaben JavaScript-URL aber Selen gibt leere Zeichenfolge

<script src="http://includes.mpt-static.com/data/7CE5047496" type="text/javascript" charset="utf-8"></script> 

ich Selen versucht, mit der zum Abrufen/öffnen URL, aber es gibt nur eine leere Zeichenfolge zurück. Ich denke, das liegt daran, dass wenn ich direkt auf die URL src klicke öffnet sich eine Seite mit einer Tabelle der Daten, die ich möchte. Wenn ich jedoch die URL in einen Browser kopiere und verlasse, wird sie leer angezeigt. Jedes Mal, wenn ich die Seite neu lade, wird auch eine neue src-URL generiert. Weiß jemand, warum das passiert?

Die url: view-source: http://mypricetrack.com/amazon/B00N2BW2PK

Mein Code:

import time 
from fake_useragent import UserAgent 
import urllib2 
import csv 
from bs4 import BeautifulSoup 
import json 
from selenium import webdriver 

#FAKE-USER_AGENT 
ua = UserAgent(cache = False) 
headers = {'User-Agent': ua.randome} 


#SENDING REQUEST TO PRICETRACKER WEBSITE 
product = 'B00N2BW2PK' 
page = requests.get('http://www.mypricetrack.com/amazon/'+str(product), headers = headers) 
soup = BeautifulSoup(page.text) 
#print(soup.prettify()) 

#GETTING URL FOR DATA 
data_link = [] 
for tag in soup.findAll('script',{'charset':'utf-8'}): 
    data_link = data_link + [tag['src']] 
string2 = data_link[1] 
print string2 
#OPENING URL FOR DATA 

driver = webdriver.Firefox() 
driver.get(string2) 
time.sleep(5) 
htmlSource = driver.page_source 
print htmlSource 

Antwort

0

Javascript wird nicht heruntergeladen werden, wenn Sie es mit einem richtigen Header "Referer" beantragen.

Selen ein wenig übertrieben ist, können Sie es nur Python-Anfragen mit:

import requests 
import re 
from bs4 import BeautifulSoup 
# Emulate a browser with proper headers 
session.headers.update({ 
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1664.3 Safari/537.36', 
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 
    'Accept-Language':'en-US,en;q=0.8,es;q=0.6' 
}) 
# Go to product page 
product_page = 'http://mypricetrack.com/amazon/B00N2BW2PK' 
res = session.get(product_page) 
# find link 
link = soup.find('script', {'src':re.compile('http://includes.mpt-static.com/data')}) 
link_src = link['src'] 
# Get you JS content 
res = session.get(src, headers={'Referer':product_page}).text