Làm cách nào để trích xuất một liên kết từ một trang web trong python?

Nếu bạn chưa quen với việc tìm kiếm trên web, tôi khuyên bạn nên bắt đầu với hướng dẫn dành cho người mới bắt đầu về tìm kiếm trên web và sau đó chuyển sang hướng dẫn này khi bạn cảm thấy thoải mái với những điều cơ bản

làm thế nào để chúng tôi trích xuất tất cả các liên kết?

Chúng tôi sẽ sử dụng thư viện yêu cầu để lấy trang HTML thô từ trang web và sau đó chúng tôi sẽ sử dụng BeautifulSoup để trích xuất tất cả các liên kết từ trang HTML

Trình trích xuất URL là một công cụ rất phổ biến cho tất cả mọi người tham gia vào không gian kỹ thuật số, từ các nhà tiếp thị đến các chuyên gia SEO. Nó cũng là một phần lớn cho những người quét web trong cộng đồng lập trình. Các tập lệnh này bao gồm từ những tập lệnh rất đơn giản [như tập lệnh trong hướng dẫn này] đến các trình thu thập dữ liệu web rất tiên tiến được các nhà lãnh đạo ngành sử dụng

Hãy xem cách chúng ta có thể nhanh chóng xây dựng trình quét URL của riêng mình bằng Python

Để tiếp tục làm theo hướng dẫn này, chúng ta sẽ cần hai thư viện Python. httplib2 và bs4

Nếu bạn chưa cài đặt chúng, vui lòng mở “Command Prompt” [trên Windows] và cài đặt chúng bằng mã sau


pip install httplib2
pip install bs4

Nhận nội dung HTML từ URL bằng Python

Để bắt đầu phần này, trước tiên chúng ta hãy nhập các thư viện mà chúng ta vừa cài đặt


import httplib2
from bs4 import BeautifulSoup, SoupStrainer

Bây giờ, hãy quyết định URL mà chúng tôi muốn trích xuất các liên kết từ đó. Ví dụ, tôi sẽ trích xuất các liên kết từ trang chủ của blog này https. //pyshark. com/


url = '//pyshark.com/'

Tiếp theo, chúng ta sẽ tạo một thể hiện của một lớp đại diện cho giao diện HTTP của máy khách


http = httplib2.Http[]

Chúng tôi sẽ cần phiên bản này để thực hiện các yêu cầu HTTP tới các URL mà chúng tôi muốn trích xuất các liên kết từ đó

Bây giờ chúng ta sẽ cần thực hiện yêu cầu HTTP sau


response, content = http.request[url]

Một lưu ý quan trọng là. phương thức request[] trả về một tuple, đầu tiên là một thể hiện của lớp Response và thứ hai là nội dung của phần thân của URL mà chúng ta đang làm việc với

Bây giờ, chúng ta sẽ chỉ cần sử dụng thành phần nội dung của tuple, là nội dung HTML thực của trang web, chứa thực thể của phần thân ở định dạng chuỗi

Tìm và trích xuất các liên kết từ HTML bằng Python

Tại thời điểm này, chúng tôi có nội dung HTML của URL mà chúng tôi muốn trích xuất các liên kết từ. Chúng tôi chỉ còn một bước nữa là có được tất cả thông tin mình cần

Hãy xem cách chúng tôi có thể trích xuất thông tin cần thiết


links=[]

for link in BeautifulSoup[content].find_all['a', href=True]:
    links.append[link['href']]

Để bắt đầu, chúng tôi tạo một danh sách trống [liên kết] mà chúng tôi sẽ sử dụng để lưu trữ các liên kết mà chúng tôi sẽ trích xuất từ ​​nội dung HTML của trang web

Sau đó, chúng ta tạo một đối tượng BeautifulSoup[] và truyền nội dung HTML cho nó. Những gì nó làm là nó tạo ra một biểu diễn lồng nhau của nội dung HTML

Bước cuối cùng, những gì chúng ta cần làm là thực sự khám phá các liên kết từ toàn bộ nội dung HTML của trang web. Để làm điều đó, chúng tôi sử dụng. find_all[] và cho nó biết rằng chúng tôi chỉ muốn khám phá các thẻ thực sự là liên kết

Khi tập lệnh phát hiện ra các URL, nó sẽ nối chúng vào danh sách liên kết mà chúng tôi đã tạo trước đó. Để kiểm tra những gì chúng tôi tìm thấy, chỉ cần in ra nội dung của danh sách cuối cùng


for link in links:
    print[link]

Và chúng ta sẽ thấy từng URL được in ra

Toàn bộ ví dụ về lập trình hướng đối tượng


class Extractor[]:
    
    def get_links[self, url]:

        http = httplib2.Http[]
        response, content = http.request[url]

        links=[]

        for link in BeautifulSoup[content].find_all['a', href=True]:
            links.append[link['href']]
        
        return links

Và đây là một ví dụ về việc lấy liên kết từ một trang web bằng cách sử dụng lớp trên

________số 8

Phần kết luận

Bài viết này giới thiệu kiến ​​thức cơ bản về tìm kiếm liên kết từ các trang web bằng cách sử dụng thư viện httplib2 và bs4 cũng như tạo một ví dụ về quy trình đầy đủ

Vui lòng để lại nhận xét bên dưới nếu bạn có bất kỳ câu hỏi nào hoặc có đề xuất cho một số chỉnh sửa và xem thêm các bài viết về Lập trình Python của tôi

Trong hướng dẫn này, bạn sẽ học cách trích xuất tất cả các liên kết từ một trang web hoặc URL nhất định bằng BeautifulSoup và các yêu cầu

Nếu bạn chưa quen với việc tìm kiếm trên web, tôi khuyên bạn nên bắt đầu trước với hướng dẫn dành cho người mới bắt đầu về tìm kiếm trên web và sau đó chuyển sang hướng dẫn này khi bạn đã cảm thấy thoải mái với những điều cơ bản

Làm thế nào để chúng tôi trích xuất tất cả các liên kết?

Chúng tôi sẽ sử dụng thư viện yêu cầu để lấy trang HTML thô từ trang web và sau đó chúng tôi sẽ sử dụng BeautifulSoup để trích xuất tất cả các liên kết từ trang HTML

Yêu cầu

Để làm theo hướng dẫn này, bạn cần cài đặt các yêu cầu và thư viện Beautiful Soup

Cài đặt

$ pip install requests
$ pip install beautifulsoup4

Dưới đây là đoạn mã nhắc bạn nhập liên kết đến một trang web và sau đó nó sẽ sử dụng các yêu cầu để gửi yêu cầu GET đến máy chủ để yêu cầu trang HTML và sau đó sử dụng BeautifulSoup để trích xuất tất cả các thẻ liên kết trong HTML


import httplib2
from bs4 import BeautifulSoup, SoupStrainer
0

đầu ra


import httplib2
from bs4 import BeautifulSoup, SoupStrainer
1

Tôi hy vọng bạn thấy điều này hữu ích, vui lòng chia sẻ nó với các nhà phát triển đồng nghiệp của bạn

Trước đây đã xuất bản ở đây. https. // kalebujordan. com/learning-how-to-extract-all-links-from-a-website-in-python/

Làm cách nào để trích xuất URL từ trang web bằng Python?

Trích xuất URL từ tệp văn bản bằng cách sử dụng cụm từ thông dụng . Biểu thức tìm nạp văn bản ở bất cứ nơi nào nó khớp với mẫu. Chỉ mô-đun re được sử dụng cho mục đích này.

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

Giải pháp đơn giản nhất 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'].
.

Chủ Đề