2017-04-18 2 views
0

I m Python-Anfragen unter Verwendung der folgenden Website suchen: https://www.investing.com/ für die Begriffe „Durable Goods Orders US“Python-POST-Anfrage

prüfe ich in der Registerkarte „Netzwerk“ des Panels inspizieren, und es scheint, es ist einfach erfolgt mit der folgenden Form: ‚quotes_search_text‘: ‚Durable Goods Orders US‘

Also habe ich versucht, mit python:

URL = 'https://www.investing.com/' 
data = {'quotes_search_text':'Durable Goods Orders US'} 
resp = requests.post(URL, data=data, headers={ 'User-Agent': 'Mozilla/5.0', 'X-Requested-With': 'XMLHttpRequest'}) 

dies jedoch tut das Ergebnis zurück, dass ich während sehe es manuell zu tun. Alle Suchergebnisse sollten „gs-title“ als Klassenattribut (gemäß der Seite Inspektion), aber wenn ich das tue:

soup = BeautifulSoup(resp.text, 'html.parser') 
soup.select(".gs-title") 

ich keine Ergebnisse sehen ... Gibt es einen Aspekt der POST-Anfrage das ich nicht in Betracht ziehe? (Ich bin hier komplett noob)

+0

Ich glaube, Ihr 'find_all' Selektor sucht nach einem Klassenattribut, wenn es ein HTML-Tag erwartet. –

+0

@double_j nein Ich suche ein Klassenattribut ... hier sieht das Zielelement aus: 'United States Durable Goods Orders MoM' –

+0

Das ist okay, aber BeautifulSoup wird dieses Tag nie so finden, wie Sie es gerade haben. Sie sollten es so schreiben: 'soup.find_all ('a', {'class': 'gs-title'})' –

Antwort

1

Nachdem wir das im Chat ausführlich besprochen haben, gibt es viele Änderungen. Um die gesuchten Informationen zu erhalten, müssen Sie das JS ausführen, das an ihrem Ende ausgeführt wird. Sie können die Variable query auf das ändern, was Sie möchten.

import requests 
import json 
from urllib.parse import quote_plus 

URL = 'https://www.googleapis.com/customsearch/v1element' 

query = 'Durable Goods Orders US' 
query_formatted = quote_plus(query) 

data = { 
    'key':'AIzaSyCVAXiUzRYsML1Pv6RwSG1gunmMikTzQqY', 
    'num':10, 
    'hl':'en', 
    'prettyPrint':'true', 
    'source':'gcsc', 
    'gss':'.com', 
    'cx':'015447872197439536574:fy9sb1kxnp8', 
    'q':query_formatted, 
    'googlehost':'www.google.com' 
} 
headers = { 
    'User-Agent':'Mozilla/5.0', 
    'Referer':'https://www.investing.com/search?q=' + query_formatted, 
} 
resp = requests.get(URL, params=data, headers=headers) 

j = json.loads(resp.text) 
# print(resp.text) 
for r in j['results']: 
    print(r['title'], r['url'])