Chèn một Block từ website khác
Wednesday, April 18, 2007 4:09:26 AM
1. Dùng 2 đối tượng WebRequest và WebResponse để lấy dạng html source của site đó về, lưu trong 1 biến string.
2. Tách block cần lấy ra. Cái này thường dùng regular expression. Kết quả cũng lưu kiểu string.
3. Cuối cùng write cái string đó lên website.
About WebRequest and WebResponse
string responseData = String.Empty;
try
{
WebRequest request = WebRequest.Create("http://google.com.vn");
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
responseData = reader.ReadToEnd();
response.Close();
}
catch (Exception ex)
{
responseData = ex.Message;
}
MessageBox.Show(responseData);
Đoạn code này lấy dạng HTML của trang Google.
=======================================================================
Regular Expression là một công cụ mạnh để tìm kiếm trên chuỗi (string).
Ví dụ bạn có 1 chuỗi thông tin "Dân số thế giới hiện tại là 6570191459. Với mức dân số như vậy thì....". Bạn muốn tách con số 6 tỷ kia để đưa vào database mà không quan tâm đến các thông tin text xung quanh.
Regex rex = new Regex("\\d{1,}"); // Tạo một đối tượng Regular Expression
//\\d{1,} nghĩa là báo cho máy biết rằng tôi muốn tìm 1 dãy số nguyên.
Match mat = rex.Match("Dân số thế giới hiện tại là 6570191459. Với mức dân số như vậy thì....");
// biến mat để lưu kết quả của chuỗi tìm được
//rex.Match("Dân số thế giới hiện... --> hãy tìm cho tôi ở trong chuỗi này.
if (mat.Success) //nếu tìm được như tôi muốn
MessageBox.Show(mat.Value); // thì ném kết quả ra màn hình.
\d{1,} được gọi là pattern, là mã lệnh để tìm nhưng chuỗi thỏa mãn yêu cầu của mình. Một vài ví dụ:
?:sho(e|es) --> kết quả sẽ là shoe hoặc shoes.
zo* hoặc zo{0,} --> kết quả sẽ là z, zo, zoo, zooo, zoooo...
zo+ hoặc zo{1,} --> kết quả sẽ là zo, zoo, zooo, zoooo...
zo{2,4} --> thì kết quả chỉ là zoo, zooo, zoooo.
Bạn vào đây để xem các syntax của nó nhé:
http://www.regular-expressions.info/reference.html






