2015-05-27 31 views
7

Nasıl ben giriş adını [name = "captId"] ve onun değerine ihtiyacımızPython kullanarak gizli girişin değeri nasıl alınır?

<input type="hidden" name="captId" value="AqXpRsh3s9QHfxUb6r4b7uOWqMT" ng-model="captId"> 

gibi html sayfasından giriş değeri elde edebilirsiniz

import re , urllib , urllib2 
a = urllib2.urlopen('http://www.example.com/','').read() 

teşekkürler


güncelleştirme 1

Ben BeautifulSoup yüklenmiş ve kullandım ama orada bazı hatalar

kod

import re , urllib , urllib2 
a = urllib2.urlopen('http://www.example.com/','').read() 
soup = BeautifulSoup(a) 
value = soup.find('input', {'name': 'scnt'}).get('value') 

hata

"çorba = BeautifulSoup (a) NameError: adı 'BeautifulSoup' tanımlı değil"

+2

: olarak txt tüm sayfayı içerdiğini varsayarak Örneğin

, bulduğunuz tüm gizli alanları gibi basit olurdu. – Barmar

+0

evet ama ne re.findall veya re.search kullandığımı ve nasıl gerçek desen yazma – IBRA

+0

BeautifulSoup ihtiyacınız ne olmalıdır: önce formu, sonra gizli alanları seçin. –

cevap

4

Xml veya html'yi ayrıştırmak için re modülünü kullanmak genellikle kötü bir uygulama olarak kabul edilir. Yalnızca siz ayrıştırmaya çalıştığınız sayfa için sorumlu olup olmadığını kullanın. Değilse, regexleriniz çok karmaşıktır veya birileri <input type="hidden" name=.../>'un <input name="..." type="hidden" .../> ile ya da hemen hemen her şeyle değiştirilmesi durumunda betiğiniz bozulabilir. ,

  • ,
  • ağaç göz sağlayan bir DOM ağacı oluşturmak Belirli etiketlere aramak (... kapatılmamış etiketleri)

    • otomatik minör hataları giderir:

      BeautifulSoup html ayrıştırıcısıdır Eğer n iyi nedenlerimiz yoksa belirli özelliklere sahip

    • Python 2 ve 3

    altında kullanılabilir Bunu yapmak için, HTML ayrıştırma için re yerine kullanmalısınız. Eğer başka bir girdi almak aynı şekilde gizli bir girişin değeri elde

    from bs4 import BeautifulSoup 
    soup = BeautifulSoup(txt) 
    hidden_tags = soup.find_all("input", type="hidden") 
    for tag in hidden_tags: 
        # tag.name is the name and tag.value the value, simple isn't it ? 
    
  • +0

    numaralı girişten bilgi almak istiyorum numaralı broşta Bana bir örnek verebileceksin BeautifulSoup – IBRA

    +0

    @IBRA Başvuruda bulunanlar bol miktarda var ... Ama yine de benim düzenlememle bana bak –

    +0

    Soruyu güncelledim – IBRA

    İlgili konular