1. Tải bản cài đặt AutoIT mới nhất

    Chào Khách. Nếu bạn mới tham gia và chưa cài đặt AutoIT.
    Vui lòng vào topic trên để tải bản AutoIT mới nhất nhé
    Dismiss Notice
  2. Quy định và nội quy

    Chào Khách. Vui lòng đọc kỹ nội quy và quy định của diễn đàn
    Để tránh bị ban một cách đáng tiếc nhé!
    Dismiss Notice
  3. Hướng dẫn chèn mã AutoIT trong diễn đàn

    Chào Khách. Vui lòng xem qua bài viết này
    Để biết cách chèn mã AutoIT trong diễn đàn bạn nhé :)
    Dismiss Notice

Hướng dẫn [v14.0.6 - 23/7/2019] HttpRequest cho người mới bắt đầu - Ví dụ, hình ảnh chi tiết

Thảo luận trong 'Hướng dẫn - Bài tập căn bản' bắt đầu bởi Huân Hoàng, 13/3/16.

  1. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    @kakanet , @emga9xkc , @le van Cu , @tuoitre Mấy thým test thử giúp iêm code viết dựa vào UDF WinINet của tác giả -Ultima- (file đính kèm bên dưới), nếu chạy ổn thì khi nào rảnh iêm sẽ viết dựa trên thằng WinINet nhoé :D:D:D
     

    Các file đính kèm:

    Only Love and tuoitre like this.
  2. emga9xkc

    emga9xkc Thành viên năng động
    • 43/45

    Tham gia ngày:
    7/3/16
    Bài viết:
    232
    Đã được thích:
    205
    :d tks bác
     
  3. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Update lần 10 :))
     
  4. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    ahihi....bác fix đc nhiều lỗi ghê ;))
    - bác cho em hỏi, khi thực hiện method post em có thấy nó báo lỗi getcookies mặc dù vẫn post được, liệu có vấn đề gì không bác nhỉ ??
    - với lại cái hàm này _Data2SendEncode em thấy có vẻ hơi thừa tí bác nhỉ :v
     
  5. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    1/ Là sao thým nhỉ ? thým get cookies trước khi POST hay sau khi POST ? , nếu trước khi POST thì không vấn đề gì, có thể request trước đó không có set-cookie nên nó báo vậy thôi :p
    2/ Khoẻ hơn nhiều chứ, thay vì phải gõ _URIEncode nhiều lần thì chỉ cần gõ _Data2SendEncode là xong (mà sử dụng CallTips nên gõ 5 chữ là nó ra luôn hàm rồi) :D
     
  6. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    1.. hình như là thế bác ạ..em cứ code thôi mà ko để ý trước sau gì cả :D ... em viết lại nên cũng ngon rồi...
     
  7. Kenzir

    Kenzir Thành viên mới
    • 1/6

    Tham gia ngày:
    2/12/16
    Bài viết:
    4
    Đã được thích:
    0
    Cho mình hỏi.
    Mình xuất web ra file txt rồi muốn đếm 1 từ xuất hiện mấy lần trong file thì dùng lệnh nào mấy bạn?
     
  8. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    bạn dùng filewrite để ghi ra txt nhé, sau đó $a = stringspilit nội dung txt đó với cái từ bạn cần đếm, kết quả $a[0] sẽ ra số lần xuất hiện :) .
     
    Kenzir thích bài này.
  9. Kenzir

    Kenzir Thành viên mới
    • 1/6

    Tham gia ngày:
    2/12/16
    Bài viết:
    4
    Đã được thích:
    0
    Cảm ơn bạn nhiều ^^
     
  10. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    Mã (Text):
    http://ttvnol.com/forums/thi-truong-hai-phong.413/
    các bác giúp em tách cái phần thời gian ngày giờ này ra với ạ,e làm mãi mà không được..
    lấy tất cả cái tgian này này ạ. trang 1 nó khác trang 2, mà trang 100 hình như nó cũng khác
    [​IMG]
    cám ơn các bác...
     
  11. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Demo cho thým đây: :v

    Mã (AutoIt):

    #include <_HttpRequest.au3>

    _ArrayDisplay(GetData(1, 5), 'Lấy dữ liệu trang 1 đến 5')
    _ArrayDisplay(GetData(1000, 1002), 'Lấy dữ liệu trang 1000 đến 1002')

    Func GetData($StartPage, $EndPage)
        Local $a = '', $b, $c
        For $i = $StartPage To $EndPage
            ConsoleWrite('Trang ' & $i & @CRLF)
            $a &= _HttpRequest(2, 'http://ttvnol.com/forums/thi-truong-hai-phong.413/page-' & $i) ;dồn hết đống html thành 1 cục để stringregexp 1 lần luôn
        Next
        $b = StringRegExp($a, '(?s)<dl class="lastPostInfo">(.*?)</dl>', 3) ;tách lấy Last Post Info
        Local $aResult[UBound($b)][2]
        For $i = 0 To UBound($b) - 1
            $c = StringRegExp($b[$i], '<dt>(.*?)</dt>', 1) ;tách hàng username
            $d = StringRegExp($b[$i], '<dd[^>]+>(.*?)</dd>', 1) ;tách hàng thời gian
            $aResult[$i][0] = @error ? 'Err' : StringRegExpReplace($c[0], '<[^>]+>', '') ; xoá tất cả các khai báo dạng <...>
            $aResult[$i][1] = @error ? 'Err' : StringRegExpReplace($d[0], '<[^>]+>', '')
        Next
        Return $aResult
    EndFunc
     
     
    tuoitre thích bài này.
  12. tuoitre

    tuoitre Thành viên năng động
    • 28/34

    Tham gia ngày:
    15/9/15
    Bài viết:
    135
    Đã được thích:
    89
    vãi bác, em làm 3 ngày ko xong vì nó cứ html 1 nẻo, nhưng data em save về 1 kiểu, mà nó lại nhiều hàng giống nhau :( ... để em ngâm cứu thêm cái bác viết..em đọc chả hiểu gì cái tách thời gian =)))..
     
  13. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    @tuoitre

    Đây, viết lại một cách đơn giản nhất cho thým hiểu đây:

    [​IMG]

    Ta thấy cấu trúc giữa <dd class="muted"> và </dd> là đổi và chứa Time cần lấy (chỗ tô vàng), còn phần còn lại không đổi (không đổi tương đối), ta tách chỗ màu vàng ra trước bằng:
    Mã (AutoIt):

    $regexp = StringRegExp($html, '(?s)<dl class="lastPostInfo">.*?<dd.*?>(.*?)</dd>', 3)
     
    Cái StringRegexp này là thým hiểu rồi đúng không?

    Sau đó ta phân tích chỗ tô màu vàng: Dù nó đổi thế nào nữa thì cái thời gian cần lấy luôn không bị wrap trong 2 dấu <> ,cái này là quá rõ ràng rồi, nhìn lại hình trên sẽ thấy. Vậy chỉ cần bỏ tất cả đống <...> thì phần còn lại là Thời gian cần tìm rồi còn gì ? Ta dùng StringRegExpReplace để thay đống <...> thành rỗng hết là xong:
    Mã (AutoIt):

    StringRegExpReplace($$regexp[$i], '<.*?>', '')
     
    Vậy ta có code hoàn chỉnh:

    Mã (AutoIt):

    #include <_HttpRequest.au3>
    $a = _HttpRequest(2, 'http://ttvnol.com/forums/thi-truong-hai-phong.413/page-' & 2)
    $b = StringRegExp($a, '(?s)<dl class="lastPostInfo">.*?<dd.*?>(.*?)</dd>', 3)
    _ArrayDisplay($b, 'Tách lấy đoạn liên quan Time')
    For $i = 0 To UBound($b) - 1
        $b[$i] = StringRegExpReplace($b[$i], '<.*?>', '')
    Next
    _ArrayDisplay($b, 'Sau khi lọc')
     
     
    tuoitre thích bài này.
  14. DuyMinh

    DuyMinh Thành viên năng động
    • 28/34

    Tham gia ngày:
    14/3/17
    Bài viết:
    177
    Đã được thích:
    92
    Mình đang có ý định làm tool leech text, bác @Huân Hoàng có giải pháp nào cho việc này không ạ?
    Mình get source từ link này: https://truyencv.com/huyen-gioi-chi-mon/
    Mình muốn lấy toàn bộ danh sách chapter của nó để tạo thành 1 mảng, rồi truy cập vào từng link để get source text về, nhưng mà nó có vấn đề như này, trong source của nó chỉ hiện như này:
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong/">0 - Tự chương</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-1/">1 - Chương 1: Làng chài thiếu niên</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-2/">2 - Chương 2: Bạng nữ tặng châu</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-3/">3 - Chương 3: Trân di</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-4/">4 - Chương 4 : Trang viên</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-5/">5 - Chương 5: Lệ Thương Hải</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-6/">6 - Chương 6: Dị biến</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-7/">7 - Chương 7: Huyết Mạch Võ Giả</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-8/">8 - Chương 8: Cổ miếu gặp thi</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-9/">9 - Chương 9 : Trảm thi</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-10/">10 - Chương 10: Ngô gia</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-11/">11 - Chương 11: Ẩu đả</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-12/">12 - Chương 12: Dũng Bất Khả Đương</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-13/">13 - Chương 13: Liêu Hỏa thương pháp cùng Nhật</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-14/">14 - Chương 14: Vương Thiên Hào</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-15/">15 - Chương 15: Kim Ngọc Trân</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-16/">16 - Chương 16: Kim Ti Thử</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-17/">17 - Chương 17: Thiên Âm Xá Nữ</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-18/">18 - Chương 18: Tiến giai</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-19/">19 - Chương 19: Hậu Thổ Chi Thể</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-20/">20 - Chương 20: Khiêu chiến</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-21/">21 - Chương 21: Nhất Tức Lục Trảm</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-22/">22 - Chương 22: Nghiền ép</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-23/">23 - Chương 23: Thứ nhất Võ Đồ</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-24/">24 - Chương 24: Tầm Mạch sứ giả</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-25/">25 - Chương 25: Thạch Hầu phế mạch</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-26/">26 - Chương 26: Lĩnh ngộ khí cảm</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-27/">27 - Chương 27: Mộng viên</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-28/">28 - Chương 28: Thị lực dị biến</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    <p class="latestchaper"><a href="http://truyencv.com/huyen-gioi-chi-mon/chuong-29/">29 - Chương 29: Tử Cương Cung</a><small class="pull-right hidden-xs">1 năm trước</small></p>
    </div>
    <a class="btn btn-sm btn-read pull-right" href="javascript:void(0)" onclick="showChapter('4701','974','2','huyen gioi chi mon');">
    Xem hết
    </a>

    Muốn lấy toàn bộ chapter buộc phải click vào button đó mới hiện hết được, bác có giải pháp nào không ạ? Cảm ơn bác trước.
     
  15. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Mã (AutoIt):
    #include <_HttpRequest.au3>

    _ArrayDisplay(_GetLink('http://truyencv.com/huyen-gioi-chi-mon'))

    Func _GetLink($sURL)
        Local $rq = _HttpRequest(2, $sURL)
        Local $ID = StringRegExp($rq, 'showChapter\(.(\d+).', 1)
        If @error Then
            $ID = StringRegExp($rq, 'data-id="(\d+)"', 1)
            If @error Then Return SetError(1)
        EndIf
        $rq = _HttpRequest(2, 'http://truyencv.com/index.php', 'showChapter=1&media_id=' & $ID[0] & '&number=' & 9999999999)
        Local $aListChapter = StringRegExp($rq, 'a href="([^"]+)"', 3)
        If @error Then Return SetError(2)
        Return _ArrayUnique($aListChapter)
    EndFunc
     
    Array[0] chứa số Chapter tổng cộng nhoé :v


    [​IMG]
     
    DuyMinh thích bài này.
  16. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
  17. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    Fix :v
    Mã (AutoIt):
    _ArrayDisplay(_GetLink('http://truyencv.com/huyen-gioi-chi-mon'))

    Func _GetLink($sURL)
        Local $TenTruyen = StringRegExpReplace($sURL, '^.+truyencv.com/([^/]+)/?.*?', '$1')
        Local $rq = _HttpRequest(2, $sURL)
        Local $ID = StringRegExp($rq, 'showChapter\(.(\d+).', 1)
        If @error Then
            $ID = StringRegExp($rq, 'data-id="(\d+)"', 1)
            If @error Then Return SetError(1)
        EndIf
        $rq = _HttpRequest(2, 'http://truyencv.com/index.php', 'showChapter=1&media_id=' & $ID[0] & '&number=' & 9999999999)
        $rq = StringReplace($rq, 'truyencv.com//', 'truyencv.com/' & $TenTruyen & '/')
        Local $aListChapter = StringRegExp($rq, 'a href="([^"]+)"', 3)
        If @error Then Return SetError(2)
        Return _ArrayUnique($aListChapter)
    EndFunc
     
     
    DuyMinh thích bài này.
  18. DuyMinh

    DuyMinh Thành viên năng động
    • 28/34

    Tham gia ngày:
    14/3/17
    Bài viết:
    177
    Đã được thích:
    92
    Thanks thím nhiều. :*
     
  19. DuyMinh

    DuyMinh Thành viên năng động
    • 28/34

    Tham gia ngày:
    14/3/17
    Bài viết:
    177
    Đã được thích:
    92
    Thím @Huân Hoàng ơi, cho em hỏi tí. TruyenCV đổi giao diện, e lấy được danh sách chapter rồi nhưng giờ chapter nó sắp xếp ngược thím ạ... Có cách nào đảo mảng từ cuối đến đầu không nhỉ? Hay e phải cho vòng for chạy ngược đây. Thanks thím trước!
    [​IMG]
     
  20. Huân Hoàng

    Huân Hoàng Administrator Thành viên BQT Administrator Super Moderator
    • 93/113

    Tham gia ngày:
    29/9/15
    Bài viết:
    642
    Đã được thích:
    1,181
    - Ủa, nó ra theo thứ tự vậy là ngon rồi mà thým, đâu quan trọng cuối trước hay đầu trc đâu :D
    - "Hay e phải cho vòng for chạy ngược" => thým nói đúng rồi còn gì :v request lấy nội dung của chapter quăng trong vòng For $i = $array[0] To 1 Step -1 là được rồi đâu cần thêm mấy dòng code sắp xếp ngược lại vị trí chi cho tốn time :p
     
    DuyMinh thích bài này.

Chia sẻ trang này

Đang tải...