Làm thế nào để bạn nhận được văn bản từ một trang web trong python?

Khai thác dữ liệu web liên quan đến một số lượng đáng kể các quyết định thiết kế và bước ngoặt trong xử lý dữ liệu. Tùy thuộc vào mục đích thu thập dữ liệu, nó cũng có thể yêu cầu đánh giá chất lượng và lọc đáng kể. Mặc dù một số thuật toán quy mô lớn có thể được kỳ vọng sẽ làm mịn các điểm bất thường, nhưng việc sử dụng yêu cầu tỷ lệ sai sót thấp và các phương pháp đọc gần (chẳng hạn như tìm kiếm các ví dụ trong nghiên cứu từ điển) ngụ ý các cải tiến và cải tiến liên tục đối với việc xây dựng và xử lý thuật toán.

Phân biệt giữa toàn bộ trang và nội dung văn bản chính có thể giúp giảm bớt nhiều vấn đề về chất lượng liên quan đến văn bản web. nếu văn bản chính quá ngắn hoặc dư thừa, có thể không cần thiết phải sử dụng nó. Mặc dù nó hữu ích cho việc loại bỏ các tài liệu web trùng lặp, nhưng các tác vụ khác liên quan đến trích xuất nội dung cũng được hưởng lợi từ cơ sở văn bản sạch hơn, vì nó giúp thực hiện công việc trên nội dung “thực”. Trong trường hợp cụ thể là nghiên cứu ngôn ngữ và từ điển, nó cho phép chạy kiểm tra nội dung (chẳng hạn như phát hiện ngôn ngữ) trên phần duy nhất của tài liệu thực sự được tính

Những thách thức trong việc trích xuất nội dung web

Do kho văn bản, loại văn bản và trường hợp sử dụng ngày càng đa dạng nên việc đánh giá mức độ đầy đủ và chất lượng của dữ liệu web nhất định cho các mục tiêu nghiên cứu nhất định ngày càng trở nên khó khăn hơn. Hoạt động trung tâm trong xây dựng kho văn bản bao gồm giữ lại nội dung mong muốn trong khi loại bỏ phần còn lại, một nhiệm vụ có nhiều tên đề cập đến các nhiệm vụ con đặc biệt hoặc toàn bộ. quét web, loại bỏ bản soạn sẵn hoặc phát hiện bản mẫu, phát hiện mẫu trang web, làm sạch trang web hoặc trích xuất nội dung web – để biết tổng quan gần đây, hãy xem Lejeune & Zhu ( .

Gần đây, các phương pháp sử dụng CommonCrawl đã phát triển mạnh mẽ, vì chúng cho phép tải xuống và xử lý nhanh hơn bằng cách bỏ qua (hoặc chính xác hơn là thuê ngoài) giai đoạn thu thập thông tin. Mặc dù tôi nghĩ rằng việc tìm kiếm cách "riêng" của một người thông qua Web khá phù hợp với một số tình huống sử dụng nhất định, nhưng rõ ràng là dữ liệu CommonCrawl không nên được sử dụng mà không có một số bộ lọc, nó cũng có thể được hưởng lợi từ siêu dữ liệu được tinh chỉnh hơn

Tôi đã viết về công việc đang diễn ra trong việc trích xuất ngày tháng trong các trang HTML bằng mô-đun Python htmldate, bây giờ tôi sẽ giới thiệu thành phần thứ hai của . trafilatura, một thư viện Python để trích xuất văn bản. Nó tập trung vào nội dung chính, thường là phần được hiển thị ở trung tâm, không có thanh bên trái hoặc bên phải, đầu trang hoặc chân trang, nhưng bao gồm các tiêu đề và nhận xét tiềm năng.

Giới thiệu tính năng cạo văn bản với Trafilatura

Trafilatura là một thư viện Python được thiết kế để tải xuống, phân tích cú pháp và cạo dữ liệu trang web. Nó cũng cung cấp các công cụ có thể dễ dàng trợ giúp điều hướng trang web và trích xuất liên kết từ sơ đồ trang web và nguồn cấp dữ liệu

Mục đích chính của nó là tìm các phần văn bản gốc và có liên quan của trang web và cũng để loại bỏ tiếng ồn bao gồm các phần tử lặp lại (đầu trang và chân trang, quảng cáo, liên kết/danh sách blog, v.v. ). Nó phải đủ chính xác để không bỏ sót văn bản hoặc loại bỏ các tài liệu hợp lệ, nó cũng phải có tốc độ hợp lý, vì nó dự kiến ​​sẽ chạy trong sản xuất trên hàng triệu trang

Trafilatura loại bỏ văn bản chính của trang web trong khi vẫn giữ nguyên một số cấu trúc, một tác vụ còn được gọi là loại bỏ bản mẫu, nội dung dựa trên DOM . Kết quả xử lý có thể ở định dạng HTML text cleaning. The result of processing can be in TXT , CSV , JSON & XML formats. In the latter case, basic formatting elements are preserved such as text formatting (bold, italic, etc.) and page structure (paragraphs, titles, lists, links, images, etc.), which can then be used for further processing.

Thư viện chủ yếu hướng tới phân tích ngôn ngữ nhưng có thể phục vụ nhiều mục đích khác nhau. Từ quan điểm ngôn ngữ học và đặc biệt là khi so sánh với kho ngữ liệu “tiền web” và mục đích chung, những thách thức trong việc xây dựng kho dữ liệu web nằm ở khả năng trích xuất và xử lý trước các văn bản web thu được và cuối cùng là cung cấp chúng trong các bộ sưu tập mạch lạc và có thể mô tả rõ ràng

Vì trafilatura như vậy có tính năng trích xuất nhận xét (tách biệt với phần còn lại), phát hiện trùng lặp ở cấp độ câu, đoạn văn và tài liệu bằng cách sử dụng ít được sử dụng gần đây nhất ( LRU) cache, XML output compatible with the recommendations of the Text Encoding Initiative (XML TEI), and language detection on the extracted content.

Thư viện hoạt động với tất cả các phiên bản phổ biến của Python và có thể được cài đặt như sau

$ pip install trafilatura # pip3 where applicable

Cách sử dụng với Python

Thư viện bao gồm một loạt hàm Python có thể dễ dàng sử dụng lại và điều chỉnh cho phù hợp với các cài đặt phát triển khác nhau

>>> import trafilatura
>>> downloaded = trafilatura.fetch_url('https://github.blog/2019-03-29-leader-spotlight-erin-spiceland/')
>>> trafilatura.extract(downloaded)
# outputs main content and comments as plain text ...
>>> trafilatura.extract(downloaded, xml_output=True, include_comments=False)
# outputs main content without comments as XML ...

Các giá trị này được kết hợp có thể mang lại thời gian thực thi nhanh nhất nhưng không nhất thiết phải bao gồm tất cả các đoạn văn bản có sẵn

>>> result = extract(downloaded, include_comments=False, include_tables=False, no_fallback=True)

Đầu vào có thể bao gồm một cây được phân tích cú pháp trước đó (i. e. một lxml. html), sau đó được xử lý liền mạch

>>> from lxml import html
>>> mytree = html.fromstring('

Here is the main text. It has to be long enough in order to bypass the safety checks. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

'
) >>> extract(mytree) 'Here is the main text. It has to be long enough in order to bypass the safety checks. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\n'

Có thể sử dụng hàm bare_extraction để bỏ qua chuyển đổi và sử dụng trực tiếp và chuyển đổi đầu ra thô. nó trả về các biến Python cho siêu dữ liệu (dưới dạng từ điển) cũng như văn bản chính và nhận xét (cả hai đều là đối tượng LXML ).

>>> from trafilatura import bare_extraction
>>> bare_extraction(downloaded)

  • Để biết thêm chi tiết, vui lòng tham khảo phần tài liệu đề cập đến Python

Cách sử dụng trên dòng lệnh

Trafilatura bao gồm giao diện dòng lệnh và có thể được sử dụng thuận tiện mà không cần viết mã

$ trafilatura -u "https://www.scientificamerican.com/article/statistically-speaking-elephants-by-the-numbers/"
'Post updated 8/13/2013, 11:18 a.m.
It’s World Elephant Day. (Who knew?!) Here’s a sober update on the ongoing saga of the proboscidian we call elephants. ...'
$ trafilatura -h
# displays all the available options

Tổ hợp đối số sau đây cho phép tải xuống hàng loạt (URL được chứa bởi links.txt), sao lưu các nguồn HTML trong một thư mục, chuyển đổi và lưu trữ riêng biệt . Điều này có thể đặc biệt hữu ích cho việc lưu trữ và xử lý thêm. XML. This can be especially useful for archival and further processing:

$ trafilatura --inputfile links.txt --outputdir converted/ --backup-dir html-sources/ --xml

  • Để biết thêm thông tin, vui lòng tham khảo tài liệu về cách sử dụng dòng lệnh

Các lựa chọn thay thế tiềm năng

Mặc dù một vài gói Python tương ứng không được duy trì tích cực, các lựa chọn thay thế sau đây để trích xuất văn bản web bao gồm

  1. Thư viện giữ nguyên cấu trúc văn bản nhưng không tập trung vào văn bản chính
  2. Thư viện tập trung vào trích xuất văn bản chính
  3. Các thư viện trích xuất văn bản chính đồng thời trích xuất siêu dữ liệu của tài liệu

Trafilatura có nhiều chức năng hữu ích như siêu dữ liệu, trích xuất văn bản và nhận xét cũng như khám phá liên kết trong nguồn cấp dữ liệu và sơ đồ trang web. Chỉ riêng về trích xuất văn bản, nó đã có giá tốt hơn đáng kể so với các lựa chọn thay thế hiện có, hãy xem các so sánh về chất lượng trích xuất sau đây

Python có thể lấy dữ liệu từ một trang web không?

Dò web là quá trình thu thập và phân tích cú pháp dữ liệu thô từ Web và cộng đồng Python đã đưa ra một số công cụ dò web khá mạnh.

Làm cách nào để lấy văn bản từ HTML bằng Python?

Sử dụng Parsel để trích xuất văn bản từ HTML bằng Python .
Bắt đầu với Parsel
Tạo bộ chọn
Trích xuất văn bản bằng bộ chọn CSS
Trích xuất văn bản bằng bộ chọn XPath
Loại bỏ các yếu tố
Tạo tập lệnh cạo web của bạn

Làm cách nào để tìm nạp nội dung HTML bằng Python?

Giải pháp đơn giản nhất là như sau. .
yêu cầu nhập khẩu. in (yêu cầu. nhận được (url = 'https. //Google. com'). chữ).
nhập urllib. yêu cầu như r. trang = r. urlopen('https. //Google. com').
nhập urllib. yêu cầu như r. trang = r. urlopen('https. //Google. com').
<. loại tài liệu html>. <