Trình phân tích cú pháp Html cài đặt python

Beautiful Soup là một gói Python để phân tích cú pháp các tài liệu HTML và XML (bao gồm cả việc đánh dấu không đúng định dạng, tôi. e. các thẻ không đóng, do đó được đặt tên theo súp thẻ). Nó tạo ra một cây phân tích cú pháp cho các trang đã phân tích cú pháp có thể được sử dụng để trích xuất dữ liệu từ HTML,[3] rất hữu ích cho việc quét web. [2]

Beautiful Soup được bắt đầu bởi Leonard Richardson, người vẫn tiếp tục đóng góp cho dự án,[4] và được hỗ trợ thêm bởi Tidelift, một gói đăng ký trả phí để bảo trì nguồn mở. [5]

Mã ví dụ[sửa]

#!/usr/bin/env python3
# Anchor extraction from HTML document
from bs4 import BeautifulSoup
from urllib.request import urlopen
with urlopen('https://en.wikipedia.org/wiki/Main_Page') as response:
    soup = BeautifulSoup(response, 'html.parser')
    for anchor in soup.find_all('a'):
        print(anchor.get('href', '/'))

Ưu điểm và nhược điểm của trình phân tích cú pháp[sửa | sửa mã nguồn]

Bảng này tóm tắt những ưu điểm và nhược điểm của từng thư viện trình phân tích cú pháp[2]

ParserTypical usageAdvantagesDisadvantagesPython’s html. trình phân tích cú pháp BeautifulSoup(đánh dấu, "html. trình phân tích cú pháp")
  • nhanh vừa phải
  • Khoan dung (Kể từ Python 2. 7. 3 và 3. 2. )
  • Không nhanh bằng lxml, kém nhẹ nhàng hơn html5lib
trình phân tích cú pháp HTML của lxmlBeautifulSoup(markup, "lxml")trình phân tích cú pháp XML của lxml

BeautifulSoup(markup, "lxml-xml")
BeautifulSoup(markup, "xml")

  • Rất nhanh
  • Trình phân tích cú pháp XML duy nhất hiện được hỗ trợ
html5libBeautifulSoup(đánh dấu, "html5lib")
  • cực kỳ khoan dung
  • Phân tích các trang giống như cách trình duyệt web thực hiện
  • Tạo HTML5 hợp lệ
  • Rất chậm
  • Phụ thuộc Python bên ngoài

Phát hành[sửa]

Beautiful Soup 3 là dòng phát hành chính thức của Beautiful Soup từ tháng 5 năm 2006 đến tháng 3 năm 2012. Bản phát hành hiện tại là Beautiful Soup 4. x. Beautiful Soup 4 có thể được cài đặt với

pip install requests==2.22.0 beautifulsoup4==4.8.1
6

Năm 2021, Python 2. Hỗ trợ 7 đã ngừng hoạt động và bản phát hành 4. 9. 3 là phiên bản cuối cùng hỗ trợ Python 2. 7. [6]

Phân tích sâu hơn về trạng thái bảo trì của HTMLParser dựa trên nhịp phiên bản PyPI đã phát hành, hoạt động của kho lưu trữ và các điểm dữ liệu khác đã xác định rằng việc bảo trì của nó là Không hoạt động

Một tín hiệu bảo trì dự án quan trọng cần xem xét đối với HTMLParser là nó không thấy bất kỳ phiên bản mới nào được phát hành cho PyPI trong 12 tháng qua và có thể được coi là một dự án đã ngừng hoạt động hoặc dự án ít nhận được sự quan tâm từ những người bảo trì dự án.

Trong tháng trước, chúng tôi không tìm thấy bất kỳ hoạt động yêu cầu kéo nào hoặc thay đổi trạng thái vấn đề đã được phát hiện đối với kho lưu trữ GitHub

Internet có nhiều loại thông tin đáng kinh ngạc cho tiêu dùng của con người. Nhưng dữ liệu này thường khó truy cập theo chương trình nếu nó không ở dạng API REST chuyên dụng. Với các công cụ Python như Beautiful Soup, bạn có thể cạo và phân tích cú pháp dữ liệu này trực tiếp từ các trang web để sử dụng cho các dự án và ứng dụng của mình

Hãy sử dụng ví dụ về quét dữ liệu MIDI từ internet để huấn luyện mạng thần kinh với Magenta có thể tạo ra âm nhạc cổ điển của Nintendo. Để làm điều này, chúng tôi sẽ cần một bộ nhạc MIDI từ các trò chơi Nintendo cũ. Sử dụng Beautiful Soup, chúng tôi có thể lấy dữ liệu này từ Kho lưu trữ âm nhạc trò chơi điện tử

Bắt đầu và thiết lập các phụ thuộc

Trước khi tiếp tục, bạn cần đảm bảo rằng bạn đã cài đặt phiên bản cập nhật của Python 3 và pip. Đảm bảo bạn tạo và kích hoạt môi trường ảo trước khi cài đặt bất kỳ phần phụ thuộc nào

Bạn sẽ cần cài đặt thư viện Yêu cầu để thực hiện các yêu cầu HTTP nhằm lấy dữ liệu từ trang web và Beautiful Soup để phân tích cú pháp qua HTML

Khi môi trường ảo của bạn được kích hoạt, hãy chạy lệnh sau trong thiết bị đầu cuối của bạn

pip install requests==2.22.0 beautifulsoup4==4.8.1

Chúng tôi đang sử dụng Beautiful Soup 4 vì đây là phiên bản mới nhất và Beautiful Soup 3 không còn được phát triển hoặc hỗ trợ nữa

Sử dụng Yêu cầu để cạo dữ liệu cho Beautiful Soup để phân tích cú pháp

Trước tiên, hãy viết một số mã để lấy HTML từ trang web và xem cách chúng ta có thể bắt đầu phân tích cú pháp qua nó. Đoạn mã sau sẽ gửi một yêu cầu

pip install requests==2.22.0 beautifulsoup4==4.8.1
7 đến trang web mà chúng ta muốn và tạo một đối tượng BeautifulSoup bằng HTML từ trang đó

import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')

Với đối tượng

pip install requests==2.22.0 beautifulsoup4==4.8.1
8 này, bạn có thể điều hướng và tìm kiếm thông qua HTML cho dữ liệu mà bạn muốn. Ví dụ: nếu bạn chạy
pip install requests==2.22.0 beautifulsoup4==4.8.1
9 sau mã trước đó trong trình bao Python, bạn sẽ nhận được tiêu đề của trang web. Nếu bạn chạy
import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
0, bạn sẽ thấy tất cả văn bản trên trang

Làm quen với Beautiful Soup

Các phương thức find() và find_all() là một trong những vũ khí mạnh nhất trong kho vũ khí của bạn.

import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
1 rất phù hợp với những trường hợp bạn biết chỉ có một yếu tố mà bạn đang tìm kiếm, chẳng hạn như thẻ
import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
0. Trên trang này,
import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
1 sẽ cung cấp cho bạn văn bản từ phần tử HTML cho quảng cáo biểu ngữ

import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
2 là phương pháp phổ biến nhất mà bạn sẽ sử dụng trong cuộc phiêu lưu tìm kiếm trang web của mình. Sử dụng điều này, bạn có thể duyệt qua tất cả các siêu liên kết trên trang và in các URL của chúng

for link in soup.find_all('a'):
    print(link.get('href'))

Bạn cũng có thể cung cấp các đối số khác nhau cho

import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
3, chẳng hạn như cụm từ thông dụng hoặc thuộc tính thẻ để lọc tìm kiếm của bạn một cách cụ thể như bạn muốn. Bạn có thể tìm thấy rất nhiều tính năng thú vị trong tài liệu

Phân tích cú pháp và điều hướng HTML với BeautifulSoup

Trước khi viết thêm mã để phân tích nội dung mà chúng ta muốn, trước tiên hãy xem HTML được trình duyệt hiển thị. Mỗi trang web đều khác nhau và đôi khi để có được dữ liệu phù hợp từ chúng đòi hỏi một chút sáng tạo, nhận dạng mẫu và thử nghiệm

Trình phân tích cú pháp Html cài đặt python

Mục tiêu của chúng tôi là tải xuống một loạt các tệp MIDI, nhưng có rất nhiều bản nhạc trùng lặp trên trang web này cũng như các bản phối lại của các bài hát. Chúng tôi chỉ muốn một trong mỗi bài hát và vì cuối cùng chúng tôi muốn sử dụng dữ liệu này để huấn luyện mạng thần kinh nhằm tạo ra nhạc Nintendo chính xác, nên chúng tôi sẽ không muốn huấn luyện nó trên các bản phối lại do người dùng tạo

Khi bạn đang viết mã để phân tích cú pháp qua một trang web, việc sử dụng các công cụ dành cho nhà phát triển có sẵn cho bạn trong hầu hết các trình duyệt hiện đại thường rất hữu ích. Nếu bạn nhấp chuột phải vào phần tử mà bạn quan tâm, bạn có thể kiểm tra HTML đằng sau phần tử đó để tìm ra cách bạn có thể truy cập dữ liệu bạn muốn theo chương trình

Trình phân tích cú pháp Html cài đặt python

Hãy sử dụng phương pháp

import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
3 để duyệt qua tất cả các liên kết trên trang nhưng sử dụng các biểu thức chính quy để lọc qua chúng để chúng tôi chỉ nhận được các liên kết chứa tệp MIDI có văn bản không có dấu ngoặc đơn, điều này sẽ cho phép chúng tôi loại trừ tất cả các bản sao

Tạo một tệp có tên

import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
5 và thêm đoạn mã sau vào đó

pip install requests==2.22.0 beautifulsoup4==4.8.1
0

Điều này sẽ lọc qua tất cả các tệp MIDI mà chúng tôi muốn trên trang, in ra thẻ liên kết tương ứng với chúng, sau đó in bao nhiêu tệp chúng tôi đã lọc

Chạy mã trong thiết bị đầu cuối của bạn bằng lệnh

import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
6

Tải xuống các tệp MIDI mà chúng tôi muốn từ trang web

Bây giờ chúng tôi có mã làm việc để lặp qua mọi tệp MIDI mà chúng tôi muốn, chúng tôi phải viết mã để tải xuống tất cả chúng

Trong

import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
5, hãy thêm một hàm vào mã của bạn có tên là
import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
8 và gọi hàm đó cho từng rãnh trong vòng lặp lặp qua chúng

pip install requests==2.22.0 beautifulsoup4==4.8.1
4

Trong hàm

import requests
from bs4 import BeautifulSoup


vgm_url = 'https://www.vgmusic.com/music/console/nintendo/nes/'
html_text = requests.get(vgm_url).text
soup = BeautifulSoup(html_text, 'html.parser')
8 này, chúng ta chuyển đối tượng Beautiful Soup đại diện cho phần tử HTML của liên kết tới tệp MIDI, cùng với một số duy nhất để sử dụng trong tên tệp để tránh xung đột đặt tên có thể xảy ra

Chạy mã này từ một thư mục mà bạn muốn lưu tất cả các tệp MIDI và xem màn hình đầu cuối của bạn hiển thị tất cả 2230 MIDI mà bạn đã tải xuống (tại thời điểm viết bài này). Đây chỉ là một ví dụ thực tế cụ thể về những gì bạn có thể làm với Beautiful Soup

Trình phân tích cú pháp Html cài đặt python

Phạm vi rộng lớn của World Wide Web

Giờ đây, bạn có thể lập trình lấy mọi thứ từ các trang web, bạn có quyền truy cập vào nguồn dữ liệu khổng lồ cho bất kỳ dự án nào của bạn cần. Một điều cần lưu ý là những thay đổi đối với HTML của trang web có thể làm hỏng mã của bạn, vì vậy hãy đảm bảo luôn cập nhật mọi thứ nếu bạn đang xây dựng ứng dụng trên nền tảng này

Nếu bạn đang tìm kiếm thứ gì đó để làm với dữ liệu bạn vừa lấy từ Kho lưu trữ âm nhạc trò chơi điện tử, bạn có thể thử sử dụng các thư viện Python như Mido để làm việc với dữ liệu MIDI để dọn dẹp dữ liệu đó hoặc sử dụng Magenta để huấn luyện mạng thần kinh với dữ liệu đó

Tôi rất mong được thấy những gì bạn xây dựng. Vui lòng liên hệ và chia sẻ kinh nghiệm của bạn hoặc đặt bất kỳ câu hỏi nào

Làm cách nào để sử dụng trình phân tích cú pháp HTML trong Python?

Ví dụ .
từ html. trình phân tích cú pháp nhập HTMLParser
Trình phân tích cú pháp lớp (HTMLParser)
# phương pháp nối thêm thẻ bắt đầu vào danh sách start_tags
def handle_starttag(bản thân, thẻ, attrs)
start_tags toàn cầu
start_tags. nối thêm (thẻ)
# phương pháp nối thêm thẻ kết thúc vào danh sách end_tags
def handle_endtag(bản thân, thẻ)

Làm cách nào để cài đặt HTML trong Python?

Mô-đun HTML Python là mô-đun tích hợp sẵn, nghĩa là bạn không cần cài đặt bằng cách sử dụng pip trong hệ thống của mình. Mô-đun Python HTML đã được cài đặt khi bạn cài đặt python trong hệ thống của mình. Để sử dụng mô-đun HTML Python, bạn phải nhập mô-đun HTML bằng từ khóa nhập .

Làm cách nào để cài đặt thư viện trình phân tích cú pháp trong Python?

Bạn có cần cài đặt thư viện trình phân tích cú pháp không? .
Chuyển đến Tệp -> Cài đặt
Chọn "Trình thông dịch Python" trên thanh menu bên trái của cài đặt, chọn "Trình thông dịch Python. "
Nhấp vào biểu tượng "+" trên danh sách các gói
Tìm kiếm "lxml. "
Nhấp vào "Cài đặt gói" ở phía dưới bên trái của cửa sổ "Gói có sẵn"

Bạn có thể sử dụng gói Python nào để phân tích cú pháp HTML?

Beautiful Soup (bs4) là thư viện Python được sử dụng để phân tích cú pháp thông tin ra khỏi tệp HTML hoặc XML. Nó phân tích cú pháp đầu vào của nó thành một đối tượng mà bạn có thể chạy nhiều tìm kiếm trên đó.