2017-06-19 5 views
1
import bs4 
import requests 
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'} 
url = 'http://twitter.com' 
r = requests.get(url, headers=headers) 
p = bs4.BeautifulSoup(r.text, 'html.parser') 
p.js-signup 

Als ich p.js-signup in die Python-Shell setzen es gibtSchöne Suppe Python 3 css plagt

Traceback (most recent call last): 
File "<pyshell#29>", line 1, in <module> 
p.js-signup 
NameError: name 'signup' is not defined 

Ich bin ganz neu in diesem, so dass ich bin mir nicht sicher, was ich falsch gemacht habe, andere CSS Dinge, die nicht haben '-' in ihnen funktionieren

+0

was js-Anmeldungen ?? – Exprator

Antwort

2

Mit Python ist p.js-signup die Operation p.js minus signup. Es erhöht den Fehler, den Sie haben, weil signup nicht existiert.

NameError: name 'signup' is not defined 

Wenn Sie das Element erhalten möchten <js-lookup> Sie haben in der documentationfind() wie erläutert zu verwenden.

Wenn js-lookup eine CSS-Klasse ist: https://www.crummy.com/software/BeautifulSoup/bs4/doc/#searching-by-css-class

+0

Ach so, meinst du? 'print (p.find (id = 'js-signup'))' – ChickenRun

+0

Danke, es hat funktioniert :) – ChickenRun

2

der Code p.js-signup bedeutet:

p.js - signup 

Sie versuchen also, signup von p.js zu subtrahieren, aber es gibt keine Variable signup in Ihrem Code und das ist, was die Fehlermeldung Ihnen sagt.

+0

Ich sehe, aber wenn ich SelectorGadget (http://selectorgadget.com/), um einen CSS-Selektor wählen, gab es mir ".js-Anmeldung", so dass ich nicht weiß, wie man das in bs4 – ChickenRun

+1

Wenn Sie auswählen möchten Alle Elemente mit einem bestimmten Klassennamen verwenden 'p.find_all (class _ = 'js-signup')' – ikkuh