Làm cách nào tôi có thể cạo dữ liệu cụ thể từ một trang web


2

Tôi đang cố gắng cạo dữ liệu từ một trang web để nghiên cứu.

Các url được tổ chức độc đáo theo định dạng example.com/x, với x là số tăng dần và tất cả các trang được cấu trúc theo cùng một cách. Tôi chỉ cần lấy các tiêu đề nhất định và một vài con số luôn ở cùng một vị trí. Sau đó, tôi sẽ cần đưa dữ liệu này vào dạng có cấu trúc để phân tích trong Excel.

Trước đây tôi đã sử dụng wget để tải xuống các trang, nhưng tôi không thể tìm ra cách lấy các dòng văn bản cụ thể.

Excel có một tính năng để lấy dữ liệu từ web (Dữ liệu- & gt; Từ Web) nhưng từ những gì tôi có thể thấy, nó chỉ cho phép tôi tải xuống các bảng. Thật không may, dữ liệu tôi cần không có trong bảng.


Cuối cùng, tôi đã tạo một tệp .txt với một danh sách tất cả các url tôi cần và đã quên tải xuống tất cả các trang trong tệp đó. Sau đó tôi đã sử dụng iMacros như được đề xuất bởi @Lamb để trích xuất dữ liệu cục bộ. Tôi tìm thấy bản dùng thử của phiên bản fulll dễ nhất để bắt đầu. Một số tính năng hữu ích cho người mới bắt đầu không có sẵn trong gui plugin firefox, mặc dù cùng một mã sẽ hoạt động.
Stoney

Câu trả lời:


2

Bạn có thể dùng iMacros để tự động hóa nhiệm vụ này. Nó là một công cụ để tự động hóa các tác vụ lặp đi lặp lại, nó có thể được sử dụng để trích xuất dữ liệu từ một trang web và lưu nó dưới dạng tệp CSV.

Như x trong example.com/x theo một mẫu (tức là tăng dần), bạn có thể dễ dàng lập trình (ngay cả khi không có kinh nghiệm lập trình) để truy cập từng trang và trích xuất dữ liệu từ đó.

Đọc thêm tại Hướng dẫn về iMacros .

Ngoài ra, bạn cũng có thể thử ScraperWiki (một số kinh nghiệm lập trình cần thiết).


Cảm ơn bạn! iMacros dường như là giải pháp tôi cần. Sau khi hỏi câu hỏi ban đầu, tôi đã tìm thấy ScraperWiki. Nó dường như là một công cụ mạnh mẽ, nhưng đối với tôi lập trình hơi phức tạp.
Stoney

1

Bạn có thể dán mã này vào một mô-đun:

Option Explicit
Sub get_data()
Dim result As String
Dim myURL As String
Dim winHttpReq As Object
Set winHttpReq = CreateObject("WinHttp.WinHttpRequest.5.1")
myURL = "example.com/x format"

winHttpReq.Open "GET", myURL, False
winHttpReq.Send
result = winHttpReq.responseText
Application.ScreenUpdating = True

Range("Sheet1!A1").value = result
End sub

Bạn có thể chỉ cần phân tích chuỗi dài trong ô A1 để trích xuất dữ liệu bạn cần.


1
Nó sẽ giúp nếu bạn giải thích những gì mã làm.
Baarn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.