Làm cách nào để trích xuất một url cụ thể từ một trang web trong python?
Trích xuất URL đạt được từ mộ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 Show Ví dụChúng tôi có thể lấy một tệp đầu vào có chứa một số URL và xử lý nó thông qua chương trình sau để trích xuất các URL. Hàm findall() được sử dụng để tìm tất cả các trường hợp khớp với biểu thức chính quy Tệp đầu vàoHiển thị là tệp đầu vào bên dưới. Cái nào chứa teo URL Now a days you can learn almost anything by just visiting http://www.google.com. But if you are completely new to computers or internet then first you need to leanr those fundamentals. Next you can visit a good e-learning site like - https://www.tutorialspoint.com to learn further on a variety of subjects. Bây giờ, khi chúng tôi lấy tệp đầu vào ở trên và xử lý nó thông qua chương trình sau, chúng tôi sẽ nhận được đầu ra được yêu cầu chỉ cung cấp các URL được trích xuất từ tệp 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 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
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
đầu ra
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/ Tiết lộ. Bài đăng này có thể chứa các liên kết liên kết, nghĩa là khi bạn nhấp vào liên kết và mua hàng, chúng tôi sẽ nhận được hoa hồng Trích xuất tất cả các liên kết của một trang web là một nhiệm vụ phổ biến giữa những người quét web. Thật hữu ích khi xây dựng các công cụ dọn dẹp nâng cao thu thập dữ liệu mọi trang của một trang web nhất định để trích xuất dữ liệu. Nó cũng có thể được sử dụng cho quy trình chẩn đoán SEO hoặc thậm chí là giai đoạn thu thập thông tin cho người kiểm tra thâm nhập Trong hướng dẫn này, bạn sẽ tìm hiểu cách xây dựng công cụ trích xuất liên kết trong Python từ đầu chỉ bằng các yêu cầu và thư viện BeautifulSoup Lưu ý rằng có rất nhiều công cụ trích xuất liên kết ngoài kia, chẳng hạn như Trình trích xuất liên kết của Sitechecker. Mục tiêu của hướng dẫn này là tự xây dựng một cái bằng ngôn ngữ lập trình Python Được. Ethical Hacking với sách điện tử Python Hãy cài đặt các phụ thuộc
Chúng tôi sẽ sử dụng các yêu cầu để thực hiện các yêu cầu HTTP một cách thuận tiện, BeautifulSoup để phân tích cú pháp HTML và colorama để thay đổi màu văn bản Mở một tệp Python mới và làm theo. Hãy nhập các mô-đun chúng ta cần
Chúng tôi sẽ sử dụng colorama chỉ để sử dụng các màu khác nhau khi in, để phân biệt giữa các liên kết bên trong và bên ngoài
Chúng tôi sẽ cần hai biến toàn cục, một cho tất cả các liên kết nội bộ của trang web và biến còn lại cho tất cả các liên kết bên ngoài
Vì không phải tất cả các liên kết trong thẻ liên kết (thẻ a) đều hợp lệ (tôi đã thử nghiệm với điều này), một số là liên kết đến các phần của trang web và một số là javascript, vì vậy hãy viết một hàm để xác thực URL Điều này sẽ đảm bảo rằng một sơ đồ thích hợp (giao thức, e. g http hoặc https) và tên miền tồn tại trong URL Bây giờ hãy xây dựng một hàm để trả về tất cả các URL hợp lệ của một trang web
Đầu tiên, tôi đã khởi tạo biến bộ url; Thứ hai, tôi đã trích xuất tên miền từ URL. Chúng tôi sẽ cần nó để kiểm tra xem liên kết mà chúng tôi lấy là bên ngoài hay bên trong Thứ ba, tôi đã tải xuống nội dung HTML của trang web và bọc nó bằng một đối tượng 3 để dễ dàng phân tích cú pháp HTMLHãy lấy tất cả các thẻ HTML a (các thẻ neo chứa tất cả các liên kết của trang web) 1Vì vậy, chúng tôi lấy thuộc tính href và kiểm tra xem có thứ gì ở đó không. Nếu không, chúng tôi chỉ tiếp tục đến liên kết tiếp theo Vì không phải tất cả các liên kết đều tuyệt đối nên chúng tôi sẽ cần nối các URL tương đối với tên miền của chúng (e. g khi href là "/search" và url là "google. com", kết quả sẽ là "google. com/tìm kiếm") 2Bây giờ chúng ta cần xóa các tham số HTTP GET khỏi các URL, vì điều này sẽ gây ra sự dư thừa trong tập hợp, đoạn mã dưới đây xử lý điều đó 3Hãy kết thúc chức năng 4Có liên quan. Ethical Hacking với sách điện tử Python Tất cả những gì chúng tôi đã làm ở đây là kiểm tra
Cuối cùng, sau tất cả các bước kiểm tra, URL sẽ là một liên kết nội bộ, chúng tôi in nó ra và thêm nó vào bộ url và internal_urls của chúng tôi Hàm trên chỉ lấy link của 1 trang cụ thể, nếu muốn lấy tất cả link của cả website thì làm thế nào? 0Hàm này thu thập trang web, có nghĩa là nó lấy tất cả các liên kết của trang đầu tiên và sau đó tự gọi đệ quy để theo dõi tất cả các liên kết được trích xuất trước đó. Tuy nhiên, điều này có thể gây ra một số vấn đề; . com. Kết quả là tôi đã thêm một tham số max_urls để thoát khi chúng tôi kiểm tra đến một số URL nhất định Được rồi, hãy kiểm tra điều này; . Nếu không, tôi không chịu trách nhiệm cho bất kỳ tác hại nào bạn gây ra 1Nhận -35 GIẢM GIÁ. Ethical Hacking với sách điện tử Python Tôi đang thử nghiệm trên trang web này. Tuy nhiên, tôi rất khuyến khích bạn không làm điều đó; Đây là một phần của đầu ra Sau khi quá trình thu thập thông tin kết thúc, nó sẽ in tổng số liên kết được trích xuất và thu thập thông tin 2Tuyệt vời, phải không? Có một số trang web tải hầu hết nội dung của họ bằng JavaScript. Do đó, thay vào đó, chúng tôi cần sử dụng thư viện request_html, thư viện này cho phép chúng tôi thực thi Javascript bằng Chromium; . Kiểm tra nó Yêu cầu cùng một trang web nhiều lần trong một khoảng thời gian ngắn có thể khiến trang web chặn địa chỉ IP của bạn. Trong trường hợp đó, bạn cần sử dụng máy chủ proxy cho các mục đích đó Thay vào đó, nếu bạn quan tâm đến việc chụp ảnh, hãy xem hướng dẫn này. Cách tải xuống tất cả hình ảnh từ một trang web bằng Python hoặc nếu bạn muốn trích xuất các bảng HTML, hãy xem hướng dẫn này Tôi đã chỉnh sửa mã một chút để bạn có thể lưu các URL đầu ra trong một tệp và chuyển các URL từ các đối số dòng lệnh. Tôi thực sự khuyên bạn nên kiểm tra mã hoàn chỉnh tại đây Trong Ethical Hacking with Python EBook, chúng tôi đã sử dụng mã này để xây dựng một trình thu thập email nâng cao đi vào mọi liên kết được trích xuất và tìm kiếm địa chỉ email. Hãy chắc chắn để kiểm tra nó ở đây Bạn muốn tìm hiểu thêm về Web Scraping?Cuối cùng, nếu bạn muốn tìm hiểu sâu hơn về web scraping với các thư viện Python khác nhau, không chỉ BeautifulSoup, các khóa học dưới đây chắc chắn sẽ có giá trị cho bạn Làm cách nào để lấy URL từ mã HTML Python?urlopen() để tạo urllib. đối tượng lớp yêu cầu tạo kết nối đến URL mong muốn. Chúng tôi chỉ định URL trong hàm urlopen(). Sau đó, để lấy HTML từ URL trong Python, chúng ta sử dụng hàm read() với đối tượng này .
Làm cách nào để lấy URL từ chuỗi trong Python?Để tìm các URL trong một chuỗi nhất định, chúng tôi đã sử dụng hàm findall() từ mô-đun biểu thức chính quy của Python . Điều này trả về tất cả các kết quả khớp mẫu không chồng chéo trong chuỗi, dưới dạng danh sách các chuỗi. Chuỗi được quét từ trái sang phải và kết quả khớp được trả về theo thứ tự tìm thấy. |