2010-10-13 31 views
5

Này, tôi muốn cạo một số dữ liệu từ blog của tôi sử dụng YQL:Làm thế nào để sử dụng nhiều selectors xpath trong một truy vấn YQL

SELECT * FROM html WHERE url="http://site.com/blog" AND xpath="//div[@class='post']" 

Làm thế nào tôi có thể sử dụng bit khác nhau của xpath trong truy vấn của tôi? Ví dụ. tôi có thể làm điều gì đó như:

SELECT * FROM html WHERE url="http://site.com/blog" AND xpath="//div[@class='post']" AND xpath ="//div[@class='title']" 

giả sử tôi muốn nhận bài đăng và tiêu đề? Tôi đoán tôi có thể lấy tất cả các HTML nhưng tôi chỉ muốn lấy những gì tôi cần vì tốc độ là một vấn đề ở đây.

Khi tôi có HTML tôi muốn trích xuất văn bản từ đánh dấu, bạn có thể sử dụng cụm từ thông dụng PHP cho điều này không?

Tôi cũng hiểu bạn có thể sử dụng cú pháp CSS, nếu bạn có kinh nghiệm sử dụng YQL và có thể hướng dẫn tôi cách viết một truy vấn tương tự với câu hỏi trên nhưng trong CSS thay vì XPATH, tôi sẽ biết ơn!

Cảm ơn.

Trả lời

11

Về CSS:

Xem website YQL bản thân cho việc này. Tìm kiếm google cho YQL và CSS (Tôi chỉ có thể đăng một liên kết ở đây và thứ hai hữu ích hơn.)

Ví dụ họ thực sự không còn hoạt động nữa nhưng bạn có thể thử ví dụ này, từ frontpage của stackoverflow.

YQL example

Nhiều Selects với một XPATH:

Bạn có thể làm điều này trực tiếp với cú pháp xpath. ví dụ.

SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title']|//head/meta[@name='description']|//head/meta[@name='keywords']" 
+0

Cảm ơn, không chắc chắn về cú pháp nhưng đã xóa nó. –

+0

Rất, rất hữu ích! Cảm ơn bạn. – talkingnews

+0

Upvoted .. Tôi đã tìm ra điều này nhưng muốn biết liệu tôi có thể đưa ra một khoảng trống hay thứ gì đó giữa kết quả của hai xPath, để sau này tôi có thể phân tích kết quả và nhận được hai giá trị khác nhau. – SoulMan

-3

Không thể thực hiện được. Bạn cần thực hiện truy vấn này hai lần. Lần đầu tiên cho xpath đầu tiên và lần thứ hai cho xpath thứ hai. Tất nhiên bạn có thể viết tờ khai open table của riêng bạn và cung cấp hỗ trợ cho loại truy vấn này.

+0

nhờ Ok for the info! –

0

Bạn cũng có thể viết Nhiều XPATH Chọn như thế này:

SELECT * FROM html WHERE url="www.asscompact.de" and xpath="//head/meta[@name='title' or @name='description']" 
Các vấn đề liên quan