Hướng dẫn get element from html python - lấy phần tử từ html python

8

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi muốn nhận được một giá trị bên trong một số div nhất định từ trang HTML

    

$ 5.402

Tôi đã thực hiện nó với các biểu thức thông thường (re.Seach ()) nhưng phải mất quá nhiều thời gian để tìm div vì nó là một HTML khổng lồ.

Có cách nào để làm điều này nhanh hơn nhưng không có thư viện bên ngoài?

Cảm ơn

Đã hỏi ngày 7 tháng 1 năm 2014 lúc 15:24Jan 7, 2014 at 15:24

Hướng dẫn get element from html python - lấy phần tử từ html python

2

Tôi sẽ sử dụng

soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
2!

Để có được mọi thứ với thẻ

soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
3 chỉ cần làm:

soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 

Để có được giá trị bên trong nhịp mà bạn có thể làm:

soup.find('span').get_text()

Có rất nhiều phương pháp khác nhau để có được thông tin bạn cần

Chúc may mắn, mong rằng điều này có ích!

Đã trả lời ngày 7 tháng 1 năm 2014 lúc 15:29Jan 7, 2014 at 15:29

Sê -riSerial

7.73713 Huy hiệu vàng 50 Huy hiệu bạc68 Huy hiệu Đồng13 gold badges50 silver badges68 bronze badges

1

Python chỉ có một trình phân tích cú pháp HTML trong thư viện tiêu chuẩn và mức độ khá thấp, vì vậy bạn sẽ phải cài đặt một số loại thư viện phân tích cú pháp HTML nếu bạn muốn làm việc với HTML.

LXML là nhanh nhất:

import lxml.html

root = lxml.html.parse(handle)
price = root.xpath('//div[@class="well credit"]//span/@text')[0]

Nếu bạn muốn nó thậm chí còn nhanh hơn, hãy sử dụng

soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
4 và dừng phân tích HTML sau khi bạn nhấn đúng phần tử.

Đã trả lời ngày 7 tháng 1 năm 2014 lúc 15:49Jan 7, 2014 at 15:49

BlenderBlenderBlender

280K52 Huy hiệu vàng428 Huy hiệu bạc487 Huy hiệu đồng52 gold badges428 silver badges487 bronze badges

Scrapy cũng có thể là một giải pháp cho việc này. Vui lòng đọc http://doc.scracy.org/en/latest/topics/selector.html

x = sel.xpath('//div[@class="span2"]')
for i in x:
    print i.extract()

Output:

$ 5.402

Đã trả lời ngày 7 tháng 1 năm 2014 lúc 15:38Jan 7, 2014 at 15:38

MacFijMacfijmacfij

3.0331 Huy hiệu vàng18 Huy hiệu bạc24 Huy hiệu đồng1 gold badge18 silver badges24 bronze badges

Hướng dẫn get element from html python - lấy phần tử từ html python

Rút trích nội dung trang web¶

Các trang web được viết bằng HTML, có nghĩa là mỗi trang web là một tài liệu có cấu trúc. Đôi khi sẽ rất tuyệt khi có được một số dữ liệu từ họ và bảo tồn cấu trúc trong khi chúng tôi ở đó. Các trang web don don luôn cung cấp dữ liệu của họ ở các định dạng thoải mái như CSV hoặc JSON.

Đây là nơi mà việc quét web xuất hiện. Xóa web là thực tiễn sử dụng chương trình máy tính để sàng lọc trang web và thu thập dữ liệu bạn cần ở định dạng hữu ích nhất cho bạn đồng thời lưu giữ cấu trúc của dữ liệu.

LXML và Yêu cầu Jo

LXML là một thư viện khá rộng rãi được viết để phân tích các tài liệu XML và HTML rất nhanh, thậm chí xử lý các thẻ lộn xộn trong quy trình. Chúng tôi cũng sẽ sử dụng mô-đun yêu cầu thay vì mô-đun Urllib2 đã tích hợp do cải thiện tốc độ và khả năng đọc. Bạn có thể dễ dàng cài đặt cả bằng cách sử dụng

soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
5 và
soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
6.

Hãy bắt đầu với việc nhập khẩu:

from lxml import html
import requests

Tiếp theo, chúng tôi sẽ sử dụng

soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
7 để truy xuất trang web với dữ liệu của chúng tôi, phân tích cú pháp nó bằng mô -đun
soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
8 và lưu kết quả trong
soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
9:

page = requests.get('http://econpy.pythonanywhere.com/ex/001.html')
tree = html.fromstring(page.content)

(Chúng ta cần sử dụng

soup.find('span').get_text()
0 thay vì
soup.find('span').get_text()
1 vì
soup.find('span').get_text()
2 ngầm mong đợi
soup.find('span').get_text()
3 làm đầu vào.)

soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
9 Bây giờ chứa toàn bộ tệp HTML trong một cấu trúc cây đẹp mà chúng ta có thể đi qua hai cách khác nhau: XPath và Csselect. Trong ví dụ này, chúng tôi sẽ tập trung vào trước đây.

XPath là một cách định vị thông tin trong các tài liệu có cấu trúc như tài liệu HTML hoặc XML. Giới thiệu tốt về XPath là trên W3Schools.

Ngoài ra còn có nhiều công cụ khác nhau để có được XPath của các yếu tố như Firebug cho Firefox hoặc Thanh tra Chrome. Nếu bạn sử dụng Chrome, bạn có thể nhấp chuột phải vào một phần tử, chọn ‘Kiểm tra phần tử, làm nổi bật mã, nhấp chuột phải một lần nữa và chọn‘ Sao chép XPath.

Sau khi phân tích nhanh, chúng tôi thấy rằng trong trang của chúng tôi, dữ liệu được chứa trong hai yếu tố-một là một div với tiêu đề ‘tên người mua và cái còn lại là một khoảng với lớp’ giá trị giá trị:

<div title="buyer-name">Carson Bussesdiv>
<span class="item-price">$29.95span>

Biết điều này, chúng ta có thể tạo truy vấn XPath chính xác và sử dụng chức năng LXML

soup.find('span').get_text()
5 như thế này:

#This will create a list of buyers:
buyers = tree.xpath('//div[@title="buyer-name"]/text()')
#This will create a list of prices
prices = tree.xpath('//span[@class="item-price"]/text()')

Hãy để xem những gì chúng ta có chính xác:

soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
0

soup = BeautifulSoup(html)#make soup that is parse-able by bs
soup.findAll('div') 
1

Xin chúc mừng! Chúng tôi đã thực hiện thành công tất cả các dữ liệu chúng tôi muốn từ một trang web bằng LXML và các yêu cầu. Chúng tôi có nó được lưu trữ trong bộ nhớ dưới dạng hai danh sách. Bây giờ chúng ta có thể làm tất cả các loại công cụ thú vị với nó: chúng ta có thể phân tích nó bằng Python hoặc chúng ta có thể lưu nó vào một tệp và chia sẻ nó với thế giới.

Một số ý tưởng thú vị hơn để suy nghĩ về việc sửa đổi tập lệnh này thành lặp qua phần còn lại của các trang của bộ dữ liệu ví dụ này hoặc viết lại ứng dụng này để sử dụng các chủ đề để cải thiện tốc độ.

Làm thế nào để bạn đọc các yếu tố HTML trong Python?

Cài đặt đẹp. Sử dụng Trình quản lý gói Anaconda để cài đặt gói yêu cầu và các gói phụ thuộc của nó. ....
Đọc tệp HTML. Trong ví dụ dưới đây, chúng tôi yêu cầu một URL được tải vào môi trường Python. ....
Trích xuất giá trị thẻ. ....
Trích xuất tất cả các thẻ ..

Làm cách nào để chuyển dữ liệu từ HTML sang Python?

Trình tự các hành động để có được thông tin từ một trang web sẽ tương ứng với các bước trong phần trước và nói chung có vẻ như thế này: lấy URL của trang mà chúng tôi muốn trích xuất dữ liệu.Page.Pharse Nội dung HTML và nhận dữ liệu cần thiết.get the URL of the page from which we want to extract data. copy or download the HTML content of the page. parse the HTML content and get the necessary data.

Làm thế nào để bạn xóa dữ liệu từ các tệp HTML cục bộ bằng Python?

Thêm cột mới vào DataFrame hiện có trong Pandas ..
Hàm Python Map () ..
Đọc tệp JSON bằng Python ..
Lấy đầu vào trong Python ..
Cách lấy tên cột trong Pandas DataFrame ..
Đọc một dòng tệp từng dòng trong Python ..
Từ điển Python ..
Lặp lại trong một danh sách trong Python ..

Làm cách nào để lấy dữ liệu từ một yếu tố kiểm tra trong Python?

Để trích xuất dữ liệu bằng cách sử dụng máy quét web với Python, bạn cần làm theo các bước cơ bản sau:..
Tìm URL mà bạn muốn cạo ..
Kiểm tra trang ..
Tìm dữ liệu bạn muốn trích xuất ..
Viết mã ..
Chạy mã và trích xuất dữ liệu ..
Lưu trữ dữ liệu theo định dạng cần thiết ..