2015-05-27 19 views
7

Làm thế nào tôi có thể nhận được giá trị đầu vào từ trang htmlCách lấy giá trị của đầu vào bị ẩn bằng cách sử dụng python?

như

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

Tôi có tên input [name = "captId"] và cần giá trị của mình

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

thanx


cập nhật 1

.210

Tôi đã cài đặt BeautifulSoup và sử dụng nó nhưng có một số lỗi

đang

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

lỗi

"súp = BeautifulSoup (a) NameError: Tên 'BeautifulSoup' không được định nghĩa"

+2

Bạn nhận được giá trị của một đầu vào ẩn giống như cách bạn nhận được bất kỳ đầu vào khác. – Barmar

+0

có nhưng tôi sử dụng re.findall hoặc re.search và cách viết mẫu thật – IBRA

+0

BeautifulSoup phải là thứ bạn cần: trước tiên bạn chọn biểu mẫu, sau đó là trường ẩn. –

Trả lời

4

Sử dụng mô-đun re để phân tích cú pháp xml hoặc html thường được coi là thực hành không tốt. Chỉ sử dụng nó nếu bạn được đáp ứng cho trang bạn cố phân tích cú pháp. Nếu không, các regex của bạn quá phức tạp hoặc kịch bản của bạn có thể bị hỏng nếu ai đó thay thế <input type="hidden" name=.../> bằng <input name="..." type="hidden" .../> hoặc hầu hết mọi thứ khác.

BeautifulSoup là một phân tích cú pháp html rằng:

  • tự động sửa chữa lỗi nhỏ (tags không khép kín ...)
  • xây dựng một cây DOM
  • cho phép bạn duyệt cây, tìm kiếm thẻ cụ thể, với các thuộc tính cụ thể
  • có thể sử dụng được với Python 2 và 3

Trừ khi bạn có lý do chính đáng ot để làm điều đó, bạn nên sử dụng nó thay vì re để phân tích cú pháp HTML.

Ví dụ giả định rằng txt chứa toàn bộ trang, tất cả các trường ẩn sẽ là đơn giản như:

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

cảm ơn bro Bạn có thể cho tôi một ví dụ để sử dụng BeautifulSoup – IBRA

+0

@IBRA Có rất nhiều người trong số họ đã tham chiếu ... Nhưng xem bản chỉnh sửa của tôi anyway –

+0

Tôi đã cập nhật câu hỏi – IBRA

Các vấn đề liên quan