Ứng dụng Python Siêu dễ: Lập trình Bot kéo Dữ liệu Người dùng Linkedin (Python & BeautifulSoup)

  Рет қаралды 49,244

BoringPPL - Xây dựng portfolio Data và Product

BoringPPL - Xây dựng portfolio Data và Product

Күн бұрын

Пікірлер: 264
@BoringPPL
@BoringPPL 4 жыл бұрын
TỔNG HỢP CÁC LỖI THƯỜNG GẶP VÀ CÁCH XỬ LÝ LỖI 1: Không khởi tạo được trình duyệt Chrome "Error message: “'chromedriver' executable needs to be available in the path” Cách xử lý: stackoverflow.com/questions/29858752/error-message-chromedriver-executable-needs-to-be-available-in-the-path LỖI 2: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="ember19"]/input"} (Session info: chrome=89.0.4389.114) Cách xử lý: Trong video mình có đề cập một khái niệm là "Dynamic Element" (ở phần locate nút Next) là dạng thành phần mà cứ mỗi lần reload trang web là nó sẽ lại thay đổi cái ID của nó (vd lần 1 truy cập ID là "ember26", reload trang thì ID lại thành "ember19"). Khi mình làm video này thì nút Search không phải Dynamic Element nên mình tìm bằng xpath với ID được, nếu bạn gặp lỗi này thì có thể Linkedin đã đổi nên có thể sửa bằng cách thay vì dùng xpath với ID thì hãy dùng xpath với class nhé, thay cú pháp như bên dưới: search_field = driver.find_element_by_xpath('//*[@class="search-global-typeahead__input always-show-placeholder"]') LỖI 3: Mình làm theo video hết phần task 1 thì thông báo ở LinkedIn là: "Let's do a quick verification. The login attempt seems suspicious. To finish signing in please enter the verification code we sent to your email address." Cách xử lý: Để tránh việc đăng nhập quá nhiều lần trong khung thời gian ngắn, trong quá trình viết code và test code, bạn nên sử dụng các code editor có từng cell một vd như Jupyter Notebook, iPython Notebook, Google Colab, etc. để sau khi hoàn thành phần Đăng nhập, bạn có thể thao tác tiếp tục ở các code cell bên dưới thay vì việc chạy cả một file code thì bạn sẽ cứ phải đăng nhập lại mỗi lần chạy. Cụ thể trong video hướng dẫn mình sử dụng Jupyter Notebook trên Visual Studio Code, bạn sẽ thấy mình đăng nhập 1 lần thôi rồi sau đó chuyển sang các task khác bằng cách sử dụng các code cell bên dưới. Có một cách khác nữa để không cần đăng nhập vẫn kéo được dữ liệu là dùng thư viện request, có thể mình sẽ nói kĩ hơn ở video sau. LỖI 4: Lỗi báo là không xác định biến "URLs_all_page" Lỗi này có liên quan đến khái niệm "Global/Local Scope" trong function. Khi bạn tạo một biến bên trong function (Local Scope), biến này được gọi là Local Variable (biến URLs_all_page của mình đang là Local Variable). Local Variable chỉ có hiệu lực bên trong function của nó, nếu dùng ngoài Local Scope của nó (tức là dùng ở Global Scope, hoặc dùng ở Local Scope khác), biến sẽ không có hiệu lực. Để giải quyết vấn đề này thì mình phải tạo một Global Variable tên là URLs_all_page và gán giá trị function GetURLsonPages() cho nó ấy. Trong video mình có sơ xuất quay thiếu màn hình lúc mình tạo biến URLs_all_page = GetURLsonPages(). Giờ bạn chỉ cần thêm 1 dòng này trước khi bạn dùng biến URLs_all_page là chạy mượt
@quandaoxuan9672
@quandaoxuan9672 2 жыл бұрын
Hi team, Cho anh hỏi team copy Xpath với class như nào nhé, anh copy và paste thì chỉ nhận được Xpath id. Cảm ơn team!
@BoringPPL
@BoringPPL 2 жыл бұрын
@@quandaoxuan9672 dạ chào anh! theo mặc định thường khi copy xpath thì sẽ chỉ lấy dc xpath từ ID, nên nếu muốn có xpath từ class thì em sẽ tự viết luôn ạ. anh xem tham khảo video này ở phút 18:45 nhé trong đó em có chia sẻ về cách tạo xpath từ các attribute bất kỳ (eg. id, class, etc.) kzbin.info/www/bejne/b2qsooqwfr9rrK8
@quandaoxuan9672
@quandaoxuan9672 2 жыл бұрын
@@BoringPPL cảm ơn em nhiều!
@netinter9207
@netinter9207 2 жыл бұрын
copy cái xpath class của chị rồi mà nó vẫn lỗi như trên thì làm sao chị
@BoringPPL
@BoringPPL 2 жыл бұрын
@@netinter9207 xpath class của element nào á em?
@HuyPham-id7us
@HuyPham-id7us Жыл бұрын
nghe chị phát âm đã quá, mong chị ra nhiều video hơn nữa!!!
@joeytrinh7786
@joeytrinh7786 3 жыл бұрын
Tuyệt vời. B làm rất rõ ràng vs dễ hiểu vs cả những người hoàn toàn mới như mình. Hãy tiếp tục nhé
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơn bạn nha
@ducthuongtran7582
@ducthuongtran7582 2 жыл бұрын
Rất hay và hữu dụng. Anh sẽ ủng hộ Team để ra tiếp những video tương tự như thế này.
@futurebinance2522
@futurebinance2522 4 жыл бұрын
Rất hay và thực tế. Mong bạn ra thêm nhiều video như thế này. Làm các tool bên facebook thì chắc nhiều người quan tâm
@BoringPPL
@BoringPPL 4 жыл бұрын
cảm ơn bạn đã ủng hộ kênh, mình sẽ làm thêm video ạ
@minhquang9007
@minhquang9007 4 жыл бұрын
Nội dung cô đọng, trình bày rất lôi cuốn ^^ Keep moving nhe1ee sis
@BoringPPL
@BoringPPL 4 жыл бұрын
cảm ơn bạn đã ủng hộ kênhhhh
@anonemoretime3499
@anonemoretime3499 3 жыл бұрын
Chị giỏi quá. Mong nhiều người biết đến kênh của Chị!
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnnn em nhiềuuu nhe
@palomadoan
@palomadoan 4 жыл бұрын
Rất hay và rất dễ hiểu, cảm ơn bạn nhiều. Chúc bạn luôn khỏe và làm thêm nhiều videos hay như này nữa nhé
@BoringPPL
@BoringPPL 4 жыл бұрын
cảm ơnnn bạn nhé
@DevNhaX7901
@DevNhaX7901 4 жыл бұрын
Nội dung rất hay chị ạ!!! Chắc chắn tương lai kênh sẽ rất phát triển.
@BoringPPL
@BoringPPL 4 жыл бұрын
cảm ơn bạn nhiều nhé
@tuananhdinh3871
@tuananhdinh3871 3 жыл бұрын
đỉnh quá, giờ mới biết tới kênh của bạn. Cách truyền đạt tuyệt vời :)
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnn bạn nha
@nguyenhuy327
@nguyenhuy327 3 жыл бұрын
Tuyệt vời. Mong bạn ra nhiều video bổ ích hơn nữa.
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnn bạn ạ
@nguyendactung
@nguyendactung 2 жыл бұрын
Kênh này hay thế nhỉ :3 Code gọn, sạch mà dễ hiểu
@BoringPPL
@BoringPPL 2 жыл бұрын
dạa mình cảm ơnn ạ
@coding_vlsi_vietnam
@coding_vlsi_vietnam 4 жыл бұрын
kênh rất hay nha bạn . Rất thích học CNTT mà quá bận rộn vì công việc . Kênh hay lắm bn
@BoringPPL
@BoringPPL 4 жыл бұрын
Cảm ơnnn bạn nhaa
@longviet9996
@longviet9996 4 жыл бұрын
Rất chi tiết và dễ hiểu. Cảm ơn bạn nhiều
@BoringPPL
@BoringPPL 4 жыл бұрын
không có chiii bạn, cảm ơn bạn đã ủng hộ kênh
@toilakysu9167
@toilakysu9167 3 жыл бұрын
Nghe giọng thấy hay lên xem không phải tua!
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnnn bạn
@VidishArvind
@VidishArvind 3 жыл бұрын
I couldn't understand the language but loved your tutorial, thanks....i think i saw the english version somewhere.🤔
@hoanguyenthien9114
@hoanguyenthien9114 2 жыл бұрын
phát âm tiếng anh của bạn rất ấn tượng
@BoringPPL
@BoringPPL 2 жыл бұрын
cảm ơn bạn ạ
@manhpham5772
@manhpham5772 3 жыл бұрын
What a great work you did! keep it up.
@BoringPPL
@BoringPPL 3 жыл бұрын
Thank youuuu
@sadlyken
@sadlyken 3 жыл бұрын
ok bạn xứng đáng 1m likes !
@BoringPPL
@BoringPPL 3 жыл бұрын
thankss bạn nhìuu nhe
@sadlyken
@sadlyken 3 жыл бұрын
@@BoringPPL cho mình hỏi với cách này mình có thể lấy dữ liệu trên các trang chứng khoán có số liệu báo cáo tài chính ko ?
@BoringPPL
@BoringPPL 3 жыл бұрын
​@@sadlyken về cơ bản là được hết đó bạn, trừ khi trang web đó chặn crawler thôi, nếu không thì oke hết :D
@speedbeeqs
@speedbeeqs 4 жыл бұрын
Giọng bạn trình bày nghe cute ghê
@BoringPPL
@BoringPPL 4 жыл бұрын
cảm ơnn bạn nheee
@minhtien9596
@minhtien9596 11 ай бұрын
VIDEO của bạn hay quá, mình mong được học hỏi thêm từ bạn
@BoringPPL
@BoringPPL 11 ай бұрын
dạaa cảm ơn bạn nhee~
@gmeow-f4p
@gmeow-f4p Жыл бұрын
trời uiiiii, đỉnh quá c oiwiiiii!!!! e cảm ơn c nhìuuuuuu
@Thichlathich
@Thichlathich 3 жыл бұрын
Rất dễ hiểu, thankyou!
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnn bạn
@thieuquang7978
@thieuquang7978 3 жыл бұрын
Video khá chi tiết, tuy nhiên mình góp y nên nói tự nhiên hơn, mình cảm giác cách bạn truyền tải giọng chưa tự nhiên và hơi giống giảng bài
@BoringPPL
@BoringPPL 3 жыл бұрын
Cảm ơn góp ý của bạn nhe
@huytruongcong9250
@huytruongcong9250 4 жыл бұрын
Chị giỏi ghê, em chưa làm được gì cả, hic
@BoringPPL
@BoringPPL 4 жыл бұрын
Em cứ bắt đầu và kiên trì đi rồi sẽ làm được nè, nhanh thì vài tháng còn chậm thì 1-2 năm. nhưng cái quan trọng là bắt đầu và tiếp tục làm cho đến khi được :)))
@daotrongduc99
@daotrongduc99 4 жыл бұрын
Giọng của chị hay 👍
@BoringPPL
@BoringPPL 4 жыл бұрын
cảm ơn emmm đã ủng hộ kênh
@ThuNguyen-pe8pv
@ThuNguyen-pe8pv 3 жыл бұрын
Cám ơn bạn nội dung rất hay và dễ hiểu, thậm chí đối với người chỉ biết chút cơ bản như mình! Bạn có thể làm thêm video về điều khiển một chương trình trên PC không? Mình thấy có rất nhiều chương trình trên PC mà sẽ phải lặp đi lặp lại rất nhiều thao tác giống nhau cho nhiều files! Cám ơn bạn rất nhiều!
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnn bạn đã ủng hộ nhe
@ThuNguyen-pe8pv
@ThuNguyen-pe8pv 3 жыл бұрын
@@BoringPPL Cám ơn bạn nhiều! Hôm nay mình thử làm theo các bước hướng dẫn của bạn và tới đoạn này mình không hiểu sao mình bị lỗi? Bạn có thể nhìn giúp mình không? Lỗi báo là không xác định biến "URLs_all_page" nhưng mình có gọi ở trên rồi, và cũng làm theo các bước như bạn! Mình không biết lỗi này xử lý thế nào? Đây là đoạn code mình chạy theo clip hướng dẫn của bạn! Cám ơn bạn nhiều! def GetURLsonPages(): input_page = int(input()) URLs_all_page = [] for page in range(input_page): URLs_one_page = GetURL() sleep(2) driver.execute_script('window.scrollTo(0, document.body.scrollHeight)') sleep(2) next_click = driver.find_element_by_class_name("artdeco-pagination__button--next") next_click.click() URLs_all_page = URLs_all_page + URLs_one_page sleep(2) return URLs_all_page print(GetURLsonPages()) #print(URLs_all_page) driver.get(URLs_all_page[0]) NameError Traceback (most recent call last) in ----> 1 driver.get(URLs_all_page[0]) NameError: name 'URLs_all_page' is not defined
@BoringPPL
@BoringPPL 3 жыл бұрын
@@ThuNguyen-pe8pv À lỗi này có liên quan đến khái niệm "Global/Local Scope" trong function. Khi bạn tạo một biến bên trong function (Local Scope), biến này được gọi là Local Variable (biến URLs_all_page của mình đang là Local Variable). Local Variable chỉ có hiệu lực bên trong function của nó, nếu dùng ngoài Local Scope của nó (tức là dùng ở Global Scope, hoặc dùng ở Local Scope khác), biến sẽ không có hiệu lực. Để giải quyết vấn đề này thì mình phải tạo một Global Variable tên là URLs_all_page và gán giá trị function GetURLsonPages() cho nó ấy. Bạn nói mình mới nhận ra trong video mình có sơ xuất quay thiếu màn hình lúc mình tạo biến URLs_all_page = GetURLsonPages(). Giờ bạn chỉ cần thêm 1 dòng này trong chương trình trước khi bạn dùng biến URLs_all_page là chạy mượt
@ThuNguyen-pe8pv
@ThuNguyen-pe8pv 3 жыл бұрын
@@BoringPPL Mình cám ơn bạn nhiều lắm! Bạn trả lời từng comment của mọi người, rất cám ơn bạn vì sự nhiệt tình và chia sẻ kiến thức này! :) Mình đã chạy lại toàn bộ code, và có thêm dòng code như bạn bảo, nhưng mình chạy vẫn không ra và báo lỗi, như này không biết là lỗi gì bạn nhỉ ? Bạn có thể xem giúp mình không? Mình cám ơn bạn nhiều! Mình chạy code như này: URLs_all_page = GetURLsonPages() driver.get(URLs_all_page[0]) Và kết quả báo là: WebDriverException: Message: unknown error: net::ERR_NAME_NOT_RESOLVED (Session info: chrome=91.0.4472.124)
@BoringPPL
@BoringPPL 3 жыл бұрын
@@ThuNguyen-pe8pv Bạn kiểm tra lại thử URL truyền vào đúng không nhé. Bạn in giá trị này ra và make sure nó là URL chính xác nha "URLs_all_page[0]" Lý do gặp lỗi: "What does the error message “ERR_NAME_NOT_RESOLVED” mean? When you receive the “ERR_NAME_NOT_RESOLVED” error message, Chrome is saying that it could not find the IP address which matches the website domain name you entered." www.ionos.com/digitalguide/hosting/technical-matters/err-name-not-resolved-error/
@letu3716
@letu3716 4 жыл бұрын
Được quá sis ơi, keep your good work !
@BoringPPL
@BoringPPL 4 жыл бұрын
okieeela emmm
@ckaiwei
@ckaiwei 4 жыл бұрын
relevant content for production work.
@huonggiang537
@huonggiang537 2 жыл бұрын
Mình chưa thấy kênh nào về lập trình lại có cách trình bày dễ hiểu như vậy. Cảm ơn bạn :) mong bạn ra nhiều video hơn nữa. Cho mình hỏi có cách nào để liên kết với 1 web đã đăng nhập sẵn không? vì cái của mình có vấn đề là phần đăng nhập có mã captcha nữa?
@BoringPPL
@BoringPPL 2 жыл бұрын
cảm ơn bạn ạ
@huonggiang537
@huonggiang537 2 жыл бұрын
@@BoringPPL cảm ơn bạn. Trong mấy ngày qua mình mò ra cách dùng token để đăng nhập và gửi request. Mong bạn ra nhiều video hơn. Mình rất thích kênh nên đã like gần hết các video của kênh rồi :D
@BoringPPL
@BoringPPL 2 жыл бұрын
@@huonggiang537 uii cảmm ơnn bạnn nhiều lắm!
@phamngoctoan533
@phamngoctoan533 10 ай бұрын
cám ơn bạn rất nhiều, chúc bạn có nhiều video hữu ích
@BoringPPL
@BoringPPL 10 ай бұрын
cảmm ơnn bạn đã ủng hộ ạaa
@trungnghia4285
@trungnghia4285 3 жыл бұрын
bạn có thể lập trình bót kéo dữ liệu người dùng từ faceboock được không bạn . Hóng quài mà chưa thấy clip
@ducthuongtran7582
@ducthuongtran7582 2 жыл бұрын
Anh muốn đăng ký học python với BoringPpl thì liên hệ như thế nào em ha?
@linhle4215
@linhle4215 2 жыл бұрын
cho mình hỏi sao trình duyệt chrome của mình tự động tắt sau khi thực hiện xong lệnh get() ta?
@nguyenphuocnham7843
@nguyenphuocnham7843 3 жыл бұрын
xịn quá c ơi kkk
@BoringPPL
@BoringPPL 3 жыл бұрын
thanks emmm
@dm_haui
@dm_haui Жыл бұрын
thích cách mọi thứ chi tiết và dễ dàng
@PMinh_Mtcd
@PMinh_Mtcd 8 ай бұрын
Chào Ad. Ad có thể cho mình xin link tải jupyter notebook giống của bạn, phiên bản dành cho Windown được ko ah? Bản JN mình cài có vẻ hơi khác với bạn. Mong bạn chia sẻ. Cảm ơn bạn.
@kysuketcau.T
@kysuketcau.T 3 жыл бұрын
Mình đã Sub và Like. Thanks.
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnn bạn
@anhquanle2261
@anhquanle2261 2 жыл бұрын
Sao mình chạy trên vsc trên base anaconda (selenium cài trong anaconda) cứ đến bước login là giao diện webdriver của safari bay mất luôn, chạy bên jupyterlab thì ngon lành 😢
@tranminhquoc6828
@tranminhquoc6828 4 ай бұрын
thay vì áp dụng cho linkedin thì e làm tương tự vs facebook, chiều chạy ngon ơ đi thể thao ăn tối xong cái chạy lại thì ElementClickInterceptedException, cíu em
@BoringPPL
@BoringPPL 4 ай бұрын
chúc mừngg elm nhee
@tranminhquoc6828
@tranminhquoc6828 4 ай бұрын
đã fix :D
@BoringPPL
@BoringPPL 4 ай бұрын
@@tranminhquoc6828 kwá mêee 😍
@utherpally5304
@utherpally5304 4 жыл бұрын
Tuyệt vời!
@BoringPPL
@BoringPPL 4 жыл бұрын
cảm ơn bạn đã ủng hộ kênh
@nguyennu3422
@nguyennu3422 Жыл бұрын
Cho mình hỏi là vs code của mình lại chỉ có hàm find_element, mình đang không biết làm thế nào để có find_element_by_id
@PMinh_Mtcd
@PMinh_Mtcd 8 ай бұрын
Và mong Ad nói chậm, thao tác chậm lại hơn 1 chút, thay vì phải chỉnh speed trên youtube, nghe nó hơi đừ ah.
@BoringPPL
@BoringPPL 7 ай бұрын
dạa cảm ơn feedback của bạn ngen~ mình xin ghi nhận ạa
@namnguyenngoc1948
@namnguyenngoc1948 Жыл бұрын
mình scraping 100 triệu record để làm bài nghiên cứu khoa học sử dụng big data dc k ạ
@hoangnhatquang4743
@hoangnhatquang4743 2 жыл бұрын
Clip bạn hay. Nhưng chất lượng hình ảnh hơi kém. Khó nhìn qué
@phamkhacvinh7942
@phamkhacvinh7942 3 жыл бұрын
Làm thử series điuề khiển ứng dụng PC bằng python đi chị
@dungbuitoan6879
@dungbuitoan6879 3 жыл бұрын
tại sao tớ chạy c.trình xong đc 1 mấy giây, web tự động mất vậy ạ?
@tronghunghcn3906
@tronghunghcn3906 2 жыл бұрын
@@dungbuitoan6879 cái này mình không biết bên MAC ntn nhưng bên WIN cũng bị giống bạn, khác phục = cách import thứ viện os vào với câu lệnh: import os (... ....) os.system("pause")
@makemoney6614
@makemoney6614 3 жыл бұрын
Hay qua ad oi
@BoringPPL
@BoringPPL 3 жыл бұрын
mình cảm ơnn nhé
@EdwinMartinez001
@EdwinMartinez001 3 жыл бұрын
hay lắm chị
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnnn em
@sangnguyenquang9490
@sangnguyenquang9490 4 жыл бұрын
hóng bài tiếp theo
@BoringPPL
@BoringPPL 4 жыл бұрын
có bài tiếp theo rùi đó nha :))) cảm ơn bạn đã ủng hộ kênh
@hikiauto
@hikiauto 3 жыл бұрын
Cô giáo dạy hay quá. Cho mình hỏi thêm. Mấy trang web chặn IP hay doss gì đó. Mình requests khoảng 20-30 link thì chặn IP. Có cách nào vượt qua chặn IP ko bạn. Ngồi đổi vpn lâu quá. Thanks
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơn bạn
@nguyenthinh3789
@nguyenthinh3789 Жыл бұрын
thanks very much
@trietle3033
@trietle3033 2 жыл бұрын
selenium lỗi nhiều quá, mình ko chạy được ngay từ task 1 Nó báo lỗi như này: DeprecationWarning: executable_path has been deprecated, please pass in a Service object
@viennaarlene2320
@viennaarlene2320 3 жыл бұрын
như vậy mình chỉ có thể scrape data khi máy cài trình duyệt Chrome và sử dụng Jupyter ak? Vì máy mình chỉ dùng Microsoft Edge và Colabs
@BoringPPL
@BoringPPL 3 жыл бұрын
Hello bạn, theo mình biết thì Selenium hỗ trợ các loại browser sau: Chrome, Firefox, Internet Explorer, Opera, Safari. Nếu dùng Microsoft Edge thì có thể bạn phải tìm hiểu thư viện khác rồi. Còn Colabs và Jupyter thì tính năng như nhau nên bạn chạy trên Colabs hay Jupyter hay Source code Python đều được.
@hoaibui7395
@hoaibui7395 3 жыл бұрын
Cám ơn bạn vì video hữu ích. Nhưng mà hình như tiếng hơi nhỏ.
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnnn bạn đã ủng hộ ạaa
@hoaibui7395
@hoaibui7395 3 жыл бұрын
@@BoringPPL 💪💪💪💪
@Jack328Vlogs
@Jack328Vlogs 2 жыл бұрын
Bạn ơi, cho mình hỏi làm cách nào để mình lấy data của 1 website có nút "next page" nhưng khi click vào thì url không đổi vậy bạn? vì mỗi lúc click vào "next page" thì source page lại đổi nhưng mình chưa biết cách lấy data đó về như thế nào cả, mong bạn giúp đỡ... cảm ơn bạn!
@BoringPPL
@BoringPPL 2 жыл бұрын
helluu bạn, bạn cho mình xin ví dụ trang web nhé
@hoangphuluu5863
@hoangphuluu5863 4 жыл бұрын
Bạn có thể chia sẻ source code/ github được không? Thanks
@BoringPPL
@BoringPPL 4 жыл бұрын
Đây bạn nhé, mình vừa đính link trên description: github.com/boringPpl/Linkedin-profiles-scraping/
@hoangphuluu5863
@hoangphuluu5863 4 жыл бұрын
@@BoringPPL thanks b!
@caolun6523
@caolun6523 3 жыл бұрын
Video hữu ích. Mà giọng đọc tiếng anh nặng quá @@ nghe hơi khó chịu
@BoringPPL
@BoringPPL 3 жыл бұрын
cảm ơnn chia sẻ và góp ý của bạn nhe
@nguyentheat5367
@nguyentheat5367 3 жыл бұрын
14:39 Trong quá trình làm, đến đoạn send_keys(Keys.RETURN) để ấn nút enter để search mình gặp lỗi 'Message: element not interactable (Session info: chrome=92.0.4515.159)' mà mình không biết lỗi do phiên bản của chrome k, mong bạn giải đáp
@BoringPPL
@BoringPPL 3 жыл бұрын
hello bạnnn, lỗi này có khả năng cao là do bạn định vị nhầm element rồi á, bạn đang định vị vào 1 cái elements mà không bấm Enter được
@HungtunREVO
@HungtunREVO 4 жыл бұрын
cảm ơn chị yêu
@BoringPPL
@BoringPPL 4 жыл бұрын
không có chiii em iuuu
@oroscopoitaly
@oroscopoitaly 3 жыл бұрын
find_field = driver.find_element_by_xpath('//*[@id="mount_0_0_Ho"]/div/div[1]/div/div[2]/div[2]/div/div/div/div/div/label/input') search_query = input('What do u wanna search?') find_field.send_keys(search_query) find_field.send_keys(Keys.RETURN) Chị ơi sau khi em chạy dòng tự động tìm tên xong nó lại ko hiện ra ""What do u wanna search?'' ở phần Terminal như của chị nhỉ?
@BoringPPL
@BoringPPL 3 жыл бұрын
nó có báo lỗi gì ko em nhỉ? em nhớ save code trước khi chạy nhé
@quoclechi5604
@quoclechi5604 Жыл бұрын
mình chạy hết đoạn trên rồi mà xuống chọn element thì không được, nó hiện lỗi này: 'WebDriver' object has no attribute 'find_element_by_name' bạn cho mình xin cách khắc phục với ạ
@tructran6354
@tructran6354 Жыл бұрын
Mình cũng hiện lỗi như vậy, chưa biết sửa thế nào.
@truonghoangminh8884
@truonghoangminh8884 Жыл бұрын
@@tructran6354 Do thư viện đã update câu lệnh mới rồi á bạn, bạn fix thành find_element('name','tên đối tượng') là được nhé
@bibochip1
@bibochip1 3 жыл бұрын
có thư viện nào tìm đến field => điền thông tin và submit form không ạ?
@BoringPPL
@BoringPPL 3 жыл бұрын
thư viện cụ thể làm chuyện đó thì mình không biết nhưng dùng selenium cũng oke đó bạn, logic tương tự như Task 1 lúc bạn điền thông tin đăng nhập
@bibochip1
@bibochip1 3 жыл бұрын
@@BoringPPL cảm ơn bạn, mình coi hết video mới thấy dùng selenium là gần như cover hết các cases mình cần rồi. Hy vọng bạn sẽ mở rộng nội dung về deep learning nữa. Bị ghiền kênh bạn rồi.
@BoringPPL
@BoringPPL 3 жыл бұрын
@@bibochip1 cảm ơn bạnn nhee
@sonnguyenthanh6811
@sonnguyenthanh6811 Жыл бұрын
Chị ơi, sẽ ra sao nếu hit limitation từ Linkedin, như này 1 nick chỉ quét được khoảng 60-70 là bị chặn rồi
@BoringPPL
@BoringPPL Жыл бұрын
helluu em! chị làm video này hồi 2 năm trước ó giờ Linkedin đã có nhiều thay đổi và cũng chặn bot gắt gao hơn ahuhu chị cũng chưa xem lại nên cũng ko còn nắm tình hình nữa.
@nhatnguyenle5378
@nhatnguyenle5378 3 жыл бұрын
chrome being controlled by automated test software? để giải quyết vấn đề này như thế nào?
@BoringPPL
@BoringPPL 3 жыл бұрын
hello bạn, bạn tham khảo hướng dẫn xử lý ở đây nhé stackoverflow.com/questions/43143014/chrome-is-being-controlled-by-automated-test-software
@trongpham9999
@trongpham9999 3 жыл бұрын
Mình tới đoạn 12:11 log in vào LinkedIn thì gặp phải: - yêu cầu nhập Verify code qua SMS, - vì Chrome Driver mỗi lần chạy là 1 cửa sổ mới hoàn toàn nên bước Verify này sẽ luôn được gọi lại và trả về 1 code qua SMS Vậy có cách nào để skip được qua bước này không? Hay bạn chỉ thêm 1 đoạn code để có thể đợi và input Verify code này vào rồi mới đăng nhập tiếp. Cảm ơn rất nhiều,
@trongpham9999
@trongpham9999 3 жыл бұрын
Mình đã tự giải quyết phần Verify bằng cách vào Setting của LinkedIn > và tắt phần Verify đi, thì không cần phải nhập code qua SMS nữa. Cảm ơn,
@trongpham9999
@trongpham9999 3 жыл бұрын
Hy vọng bạn sẽ tiếp tục ra nhiều video hơn, Có thể giảm thiểu hiệu ứng để giảm thiểu thời gian render video cũng được, nội dung của bạn rất lôi cuốn và thực tiễn. Cảm ơn bạn và cả team!
@BoringPPL
@BoringPPL 3 жыл бұрын
@@trongpham9999 cảm ơn bạn nhiều nhaa
@diemquyentran7729
@diemquyentran7729 2 жыл бұрын
Dạ cho em hỏi task 4 là thu thập hết thông tin của từng profile mà trong task 3 mình đã thu thập url đúng không ạ
@BoringPPL
@BoringPPL 2 жыл бұрын
đúng rùi đó em
@ngohoang5451
@ngohoang5451 2 жыл бұрын
Hi bạn, cảm ơn bạn vì video rất hữu ích. Mình đang tự học lập trình và mới bắt đầu. Mình gặp lỗi name "null" is not defined. Mình loay hoay mãi mà chưa hiểu vì sao. Chắc do lỗi lưu file gì đó mà mình chưa biết cách khắc phục. Bạn giải thích dùm mình và giúp mình với được không? Cảm ơn bạn nhiều.
@BoringPPL
@BoringPPL 2 жыл бұрын
hello bạn. chắc do bạn đang dùng một biến nào đó tên "null" mà trước đó bạn chưa định nghĩa biến á
@longbow8265
@longbow8265 2 жыл бұрын
bạn ơi mình tự động đăng nhập vào linkedin bây h nó toàn bắt phải verify, có phải do ip của mình hay do tài khoản của mình bị linkedin hạn chế ko bạn nhỉ?
@BoringPPL
@BoringPPL 2 жыл бұрын
hello bạn, đúng rùi đó bạn đăng nhập nhiều quá thì IP device của bạn bị Linkedin flag á. mình nghĩ bạn nên dừng vài ngày, hoặc tìm cách đổi IP. với cả lúc code để tránh đăng nhập nhiều lần thì mình dùng Jupyter Notebook thay vì file .py nha, nếu dùng Jupyter Notebook thì nó bắt bạn verify bạn cứ verify thủ công thôi rồi xuống code cell mới code tiếp :D
@longbow8265
@longbow8265 2 жыл бұрын
@@BoringPPL thanks bạn nhé
@hthchannel1998
@hthchannel1998 Жыл бұрын
sao mình làm nó báo là k có thuộc tính find. element.by_ID nhỉ
@annguyen3168
@annguyen3168 11 ай бұрын
Selenium xóa method đó từ version 4.3.0. Giờ bạn dùng method này nhé driver.find_element("name", "chuỗi") . Với name là loại cần lấy id, name, class, xpath. Ví dụ : search_box = driver.find_element("name", "Richest people")
@nobitpham
@nobitpham 3 жыл бұрын
Cho mình hỏi nếu muốn download cả file pdf cv của các profile thì nên làm theo hướng nào là tối ưu nhất ạ?
@BoringPPL
@BoringPPL 3 жыл бұрын
mình cũng chưa làm case này nên cũng không rõ cách nào tối ưu nhất. ở bước định vị thì mình nghĩ là cũng giống với định vị các element khác, dùng try pass để bỏ qua các profile không có CV PDF. còn ở bước lưu trữ thì dùng thêm thư viện request, bạn có thể tham khảo ở đây nhé kzbin.info/www/bejne/hJDCo2CaaNWdgck
@nobitpham
@nobitpham 3 жыл бұрын
@@BoringPPL Mình tìm cái file resume trên Linkedin ở nút More cũng không thấy luôn huhu
@BoringPPL
@BoringPPL 3 жыл бұрын
@@nobitpham không phải ai cũng attach resume trên linkedin ấy bạn 😅😅
@baothai7866
@baothai7866 Жыл бұрын
vid hay quá ạ
@BoringPPL
@BoringPPL Жыл бұрын
cảmmm ơn bạn ạaa
@musicl2363
@musicl2363 3 жыл бұрын
Thanks ban Video rat hay minh dang bi loi o Task 1 phan click nut signin: AttributeError: 'list' object has no attribute 'click' ban ho tro nhe!
@BoringPPL
@BoringPPL 3 жыл бұрын
hello bạn, code bạn định vị nút signin thế nào ấy nhỉ? do giá trị trả về từ biến định vị nút signin của bạn đang là một list nên selenium không click vào được ấy bạn
@musicl2363
@musicl2363 3 жыл бұрын
signin_field = driver.find_elements_by_xpath('//*[@id="app__container"]/main/div[2]/form/div[3]/button') signin_field.click() Monh code y nhu ban a
@BoringPPL
@BoringPPL 3 жыл бұрын
@@musicl2363 "find_element" thôi bạn, bạn dùng "find_elements" nó trả về list ấy nên bạn không click dc 😅 này hog có y chang nha hehe
@loixuan2154
@loixuan2154 2 жыл бұрын
thông tin hình như bên linkedin đã khóa lại rồi hay sao ấy chị? Không thể tương tác được.
@BoringPPL
@BoringPPL 2 жыл бұрын
hello em, em đang nói đến bước nào ấy nhỉ? có nhiều lý do để code ko chạy lắm em :D
@loixuan2154
@loixuan2154 2 жыл бұрын
@@BoringPPL Task 3 chị. bên Linkedin đã khóa lại thông tin user nên không thể kéo dữ liệu về được chị ạ
@BoringPPL
@BoringPPL 2 жыл бұрын
​@@loixuan2154 em nhận được thông báo gì từ Linkedin hoặc từ máy tính để kết luận như vậy ấy nhỉ? tại vì thông tin nó nằm trên page source, chị inspect vào vẫn thấy thông tin nằm trên đấy, nên chị chưa hiểu ý em "khoá" là sao :D
@loixuan2154
@loixuan2154 2 жыл бұрын
@@BoringPPL Em làm theo hướng dẫn thì đến task 3 có vài sự khác với chị á. 1. Giao diện em khác với giao diện chị 2. khi click vào hồ sơ của mỗi người thì sẽ thống báo "You don’t have access to this profile The profiles of members who are outside your network have limited visibility. To access more member profiles, continue to grow your network." như này nè chị
@BoringPPL
@BoringPPL 2 жыл бұрын
@@loixuan2154 à chị hiểu rồi, nếu em gặp lỗi đó thì lý do là vì những profile em chọn họ đang ở chế độ không cho em truy cập tài khoản của họ á, cái này một phần chị đoán có thể do tài khoản linkedin của em chưa có nhiều bạn lắm, nên không có nhiều 1st, 2nd, 3rd-degree network. vấn đề này là do tài khoản cá nhân ấy em, không phải vấn đề kỹ thuật
@theanhtran5347
@theanhtran5347 3 жыл бұрын
Ad đang dùng phần mềm gì đó? Hihi
@BoringPPL
@BoringPPL 3 жыл бұрын
helluu bạn :D ad dùng Visual Studio Code cài thêm 2 extension là Python và Jupyter để tạo môi trường Jupyter Notebook trên VSC í bạn
@SatLinh0901
@SatLinh0901 2 жыл бұрын
JavaScript có cái nào tương tự v ko ạ
@BoringPPL
@BoringPPL 2 жыл бұрын
chị không rành JS nên cũng ko chắc nữa, nhưng nghe đồn dùng Node làm dc, làm nhanh hơn Python nhiều luôn á
@hoangtinho1642
@hoangtinho1642 3 жыл бұрын
Bạn có cách nào để chỉnh phần nhập thông tin chậm không . Thay vì nó bắn vèo vèo . Như autotype set time nhập chậm lại ấy
@BoringPPL
@BoringPPL 3 жыл бұрын
Hellu bạn, mình có thể lặp qua từng ký tự nhập vào rồi dùng sleep á, thay vì code như này email_box = driver.find_element_by_id("element-id") email_box.send_keys("youremail") thì đổi thành vầy: email_box = driver.find_element_by_id("element-id") your_email = "youremail" for character in your_email: email_box.send_keys(character) time.sleep(0.3) # pause for 0.3 seconds Còn nếu bạn muốn thời gian nghỉ nó random chút kiểu 0.1, 0.3, 0.2s đồ thì bạn dùng thư viện random nhé Source: stackoverflow.com/questions/42891515/how-to-slow-down-the-speed-of-send-keys-action-in-a-selenium-script-using-python
@hoangtinho1642
@hoangtinho1642 3 жыл бұрын
@@BoringPPL thank bạn nha hay qá
@hoangtinho1642
@hoangtinho1642 3 жыл бұрын
Mình thử time.sleep(random.randint(0.1, 0.5)) và import random rồi nhưng nó chạy đúng ký tự đầu và đứng lại bạn fix giúp mình với
@hoangtinho1642
@hoangtinho1642 3 жыл бұрын
Í mình làm dc rồi nhé ham randint tra về số nguyên / còn random.uniform(dungcho float)
@BoringPPL
@BoringPPL 3 жыл бұрын
@@hoangtinho1642 cool bạn
@baothaivuong1463
@baothaivuong1463 3 жыл бұрын
tạo acc clone để crawl dữ liệu thì sau khi search từ khóa tên người dùng bị đổi thành Linkedln Member có cách nào khắc phục không chị?
@BoringPPL
@BoringPPL 3 жыл бұрын
Khi search người dùng bị đổi thành Linkedin Member là do người dùng đó không cho phép người lạ (là những người không phải 1st, 2nd, 3rd degree connection) xem thông tin của mình. Khi gặp vấn đề này thì em chỉ có thể kết nối với nhiều người dùng để mở rộng network của mình rồi mới xem được nhiều tài khoản hơn thui
@ThanhsonKG
@ThanhsonKG 7 ай бұрын
Mới bắt đầu học mà nhìn bạn viết code mà rối não quá
@minhucreview8647
@minhucreview8647 3 жыл бұрын
Em chào chị,e đang ở task 3 khi gõ software engineer people thì bị class thành visually-hidden,e có mở rất nhiều tab khác và đều bị tình trạng vissualy-hidden,vậy có cách nào search để ra data mà k bị hidden k ạ. Em xin cảm ơn vì chị đã đọc!
@BoringPPL
@BoringPPL 3 жыл бұрын
hello em, chị đoán là do cửa sổ browser của em bé quá máy tính không định vị được khung search, em thử thêm code bên dưới đây để mở to cửa sổ xem sửa được lỗi không nhé from selenium.webdriver.chrome.options import Options chrome_options = Options() chrome_options.add_argument("--window-size=1920,1080") driver = webdriver.Chrome(chrome_options=chrome_options)
@minhucreview8647
@minhucreview8647 3 жыл бұрын
@@BoringPPL để e thử ạ❤️
@MienManMoMong
@MienManMoMong 2 жыл бұрын
Em muốn tách bước 4 ra thành hai bước, lấy thông tin lưu vào mảng sau đó mới lấy dữ liệu từ mảng xuất ra file csv theo vòng lặp thì phải làm như thế nào ạ tại vì dữ liệu em lấy tận 80 dòng, em cảm ơn chị.
@BoringPPL
@BoringPPL 2 жыл бұрын
hello em. em làm theo thao tác từ 28:14 - 28:34 để lấy dữ liệu thôi, sau đó em lưu vào mảng theo ý em, có mảng rồi thì em làm từ 28:50 để lấy giá trị trong mảng lưu vào csv
@MienManMoMong
@MienManMoMong 2 жыл бұрын
@@BoringPPL Em tạo function def All_Data() giá trị trả về là thông tin trong mảng, sau đó em cho Product_CSV = All_Data() Product_CSV.to_csv('output.csv') thì bị lỗi 'list' object has no attribute 'to_csv' ------ Em có thử in ra mảng print(All_Data()) sau đó em thử làm riêng df = pd.DataFrame(...) ... copy toàn bộ đoạn data vừa in df.to_csv('output.csv') thì lại lưu file csv được, em hơi bị lúng túng từ ngữ nhưng mong chị giải đáp ạ
@BoringPPL
@BoringPPL 2 жыл бұрын
@@MienManMoMong à khi dùng cú pháp em chịu khó đọc thêm documentation nha. Ví dụ cú pháp em dùng là .to_csv (đường dẫn: pandas.pydata.org/docs/reference/api/pandas.DataFrame.to_csv.html) trên documentation hướng dẫn là em phải dùng to_csv lên một dataframe mới được, ở trường hợp 1 bị lỗi "'list' object has no attribute 'to_csv'" do em dùng .to_csv lên một list còn đợt 2 lúc em thử lại chị chưa nắm được cách em làm lắm nhưng nhìn sơ thì có vẻ là do em đã convert mảng của em qua dataframe rồi nên em lưu được mảng vào csv
@phongtruong824
@phongtruong824 3 жыл бұрын
Em làm tới bước sendkey: email_field = driver.find_element_by_id('username') email_field.send_keys('youremail') nhưng không tự động điền youremail vào khung. Chị giúp em kiểm tra có bị lỗi gì không?
@BoringPPL
@BoringPPL 3 жыл бұрын
hello em, máy có báo lỗi gì không em? em thử tắt hết các trình duyệt rồi chạy lại xem
@phongtruong824
@phongtruong824 3 жыл бұрын
@@BoringPPL Cảm ơn chị đã phản hồi. Máy tính có phản hồi như bên dưới ạ. Copyright (C) Microsoft Corporation. All rights reserved. Try the new cross-platform PowerShell aka.ms/pscore6 PS C:\Users\User> & C:/Users/User/AppData/Local/Programs/Python/Python39/python.exe c:/Users/User/Desktop/hoc.py DevTools listening on ws://127.0.0.1:51249/devtools/browser/c0e47302-6e68-45f2-a267-6ee6f48a2560 [8284:12796:0704/141906.547:ERROR:device_event_log_impl.cc(214)] [14:19:06.547] USB: usb_device_handle_win.cc:1058 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F) [8284:12796:0704/141906.549:ERROR:device_event_log_impl.cc(214)] [14:19:06.549] USB: usb_device_handle_win.cc:1058 Failed to read descriptor from node connection: A device attached to the system is not functioning. (0x1F) Traceback (most recent call last): File "c:\Users\User\Desktop\hoc.py", line 9, in credential = open('1.txt') FileNotFoundError: [Errno 2] No such file or directory: '1.txt' PS C:\Users\User>
@kiethuynhanh2549
@kiethuynhanh2549 2 жыл бұрын
Dạ chị, em tính áp dụng bài này qua crawl điểm thi thật thì cũng được phải hong chị ?
@BoringPPL
@BoringPPL 2 жыл бұрын
miễn sao là public data thì chị nghĩ là được hết đó em
@timmonreview
@timmonreview 2 жыл бұрын
Không biết bạn có thấy cmt của mình không, mình thấy code của bạn mỗi lần viết xong sẽ ẩn đi và cod nút play để chạy từng đoạn code sau mà ko cần thực thi hết, ko biêtd tính năng này chỉ có trên macbook thôi phải ko, trên windows ko biết có không
@BoringPPL
@BoringPPL 2 жыл бұрын
helluu bạn, do mình dùng Jupyter Notebook (đuôi file .ipynb) trên VSCode thay vì dùng file python (đuôi file .py) ấy bạn. dùng Jupyter Notebook sẽ có từng code cell thay vì chạy cả script
@sumontimtech
@sumontimtech 2 жыл бұрын
@@BoringPPL người đẹp ơi, ở phần claw link data thì nó chỉ craw có 1 người thôi, sau khi dùng BeautifulSoup thì không cho nó đứng chung biến với mấy cái nằm ở trên được, phiền bạn có thể hướng dẫn mình phần này không, không biết giải thích sao để bạn có thể hiểu được hix
@BoringPPL
@BoringPPL 2 жыл бұрын
@@sumontimtech helluu bạn, bạn giúp mình đăng bài vào page này đính kèm hình để được hỗ trợ tốt hen nhe
@huyle-ve8qi
@huyle-ve8qi 3 жыл бұрын
Hello c :) c ơi nếu trong trường hợp e muốn lấy tất cả các trang thi khi đến trang cuối button "Next" sẽ bị disable k còn click được nữa thì lúc đo chương trình sẽ bị lỗi thì cách lặp sẽ ntn ạ ?
@BoringPPL
@BoringPPL 3 жыл бұрын
hello em, nếu vậy thì em viết code ở dạng try except nha, vd mẫu: try: next_button.click() except NoSuchElementException: pass Code này nghĩa là chương trình của em sẽ thử click vào nút next_button, nếu click được thì oke nó sẽ bỏ qua phần except, nhưng nếu không click được do lỗi NoSuchElementException thì chương trình sẽ thực hiện dòng lệnh bên dưới, khi đó "pass" có nghĩa là bỏ qua cái nút này và chạy dòng lệnh tiếp theo. Link tham khảo: stackoverflow.com/questions/38022658/selenium-python-handling-no-such-element-exception/38023345
@Giang_as_artist
@Giang_as_artist 3 жыл бұрын
sau khi em tìm search_field, sau đó dùng send_keys('bla bla') thì báo lỗi element not interactable. Em tìm cách khác là ấn vào biểu tượng search, sau đó sẽ hiện ra phần input để mình nhập cái mình cần tìm. Tới đây nên viết gì để có thể send keys được ạ.
@BoringPPL
@BoringPPL 3 жыл бұрын
Hello em, em coi chừng cái khung cửa sổ browser lúc selenium mở lên nó hẹp quá nên không tìm dc search_field, em thử điều chỉnh lại size của cửa sổ cho rộng ra xem còn bị lỗi này không nhé. Cách sửa: stackoverflow.com/questions/23381324/how-can-i-control-chromedriver-open-window-size
@trongpham9999
@trongpham9999 3 жыл бұрын
Mình cần bung hết cỡ cái màn hình Chrome ra, một cách tự động thì chèn thêm 1 câu code này: driver = webdriver.Chrome() # Maximizing window driver.maximize_window()
@kids114114
@kids114114 3 жыл бұрын
Bạn ơi, cho mình hỏi công cụ để viết code code của bạn tên gì vây?
@BoringPPL
@BoringPPL 3 жыл бұрын
hello bạn, mình dùng Visual Studio Code, cài thêm 2 extension là Python và Jupyter để sử dụng Jupyter Notebook trên VSC nhé
@kids114114
@kids114114 3 жыл бұрын
@@BoringPPL Cám ơn bạn nhé!
@stayhome1756
@stayhome1756 3 жыл бұрын
Mình làm theo video hết phần task 1 thì thông báo ở LinkedIn là: "Let's do a quick verification The login attempt seems suspicious. To finish signing in please enter the verification code we sent to your email address."Sau đó có gửi mã xác nhận vô email. ==> Mình hiểu là kiểu mình đăng nhập giống bot quá nên bị nghi ngờ thì phải xử lý như nào ạ. Mình cảm ơn
@BoringPPL
@BoringPPL 3 жыл бұрын
Hello bạn, bạn hiểu đúng rồi đó. Để tránh việc đăng nhập quá nhiều lần trong khung thời gian ngắn, trong quá trình viết code và test code, bạn nên sử dụng các code editor có từng cell một vd như Jupyter Notebook, iPython Notebook, Prompt Shell, Google Colab, etc. để sau khi hoàn thành phần Đăng nhập, bạn có thể thao tác tiếp tục ở các code cell bên dưới thay vì việc chạy cả một file code thì bạn sẽ cứ phải đăng nhập lại mỗi lần chạy. Cụ thể trong video hướng dẫn mình sử dụng Jupyter Notebook trên Visual Studio Code, bạn sẽ thấy mình đăng nhập 1 lần thôi rồi sau đó chuyển sang các task khác bằng cách sử dụng các code cell bên dưới :D
@nguyenvanhuy2145
@nguyenvanhuy2145 2 жыл бұрын
@@BoringPPL Pycharm có tạo được từng cell như này ko bạn?
@gocnhincuocsong7620
@gocnhincuocsong7620 3 жыл бұрын
e dùng sublime text nhưng viết code xong CTR B ko hiện ra đc màn hình web linkedin thì phải làm j để show đc chị nhỉ ?
@BoringPPL
@BoringPPL 3 жыл бұрын
hello em, em thử mở terminal của máy tính ra rồi chạy chương trình trên terminal xem được không
@cynicsserene4569
@cynicsserene4569 2 ай бұрын
Dùng iPad thì sao ạ?
@BoringPPL
@BoringPPL 2 ай бұрын
thì khó em nha 😢
@witchdoctor3897
@witchdoctor3897 3 жыл бұрын
Em chào chị ạ, em viết lại code mà đến dòng: search_field = driver.find_element_by_xpath('//*[@id="ember26"]/input'), máy em báo lỗi ko chạy tiếp dc ạ, chị chỉ giúp em với ạ, em cám ơn nhiều ạ
@witchdoctor3897
@witchdoctor3897 3 жыл бұрын
của em bị lỗi này ạ Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="ember19"]/input"} (Session info: chrome=89.0.4389.114)
@BoringPPL
@BoringPPL 3 жыл бұрын
​@@witchdoctor3897 Hellu emm, trong video chị có đề cập một khái niệm là "Dynamic Element" (ở phần locate nút Next) là dạng thành phần mà cứ mỗi lần em reload trang web là nó sẽ lại thay đổi cái ID của nó (vd lần 1 em truy cập ID là "ember26", reload trang thì ID lại thành "ember19"). Hồi lúc chị làm video thì nút Search nó không phải Dynamic Element nên mình tìm bằng xpath với ID được, giờ thì chắc Linkedin đã đổi rồi nên em có thể sửa bằng cách thay vì dùng xpath với ID thì hãy dùng xpath với class nhé, em thay cú pháp như này là chạy được nè: search_field = driver.find_element_by_xpath('//*[@class="search-global-typeahead__input always-show-placeholder"]') Nếu muốn học cách cấu thành xpath theo ý muốn của em, trong video này ở phút 18:40 chị có chia sẻ kỹ hơn về cách cấu thành xpath ( kzbin.info/www/bejne/b2qsooqwfr9rrK8 ). Nếu em biết cách tự viết xpath thì em có thể chấp hết Dynamic Element luôn. Em cũng có thể đọc thêm về cách cấu thành 1 xpath trong documentation phần này: selenium-python.readthedocs.io/locating-elements.html#locating-by-xpath
@witchdoctor3897
@witchdoctor3897 3 жыл бұрын
@@BoringPPL em cám ơn chị nhiều lắm ạ, mà giờ lại phát sinh thêm một lỗi mới ạ, em đã tự tìm hiểu mà ko sửa dc ạ. Mong chị giúp em với ạ Message: no such element: Unable to locate element: {"method":"xpath","selector":"//div[@class='search-global-typeahead__input always-show-placeholder']"} (Session info: chrome=89.0.4389.114)
@BoringPPL
@BoringPPL 3 жыл бұрын
​@@witchdoctor3897 Ồ em định vị bị sai rùi í, sai ở chỗ '//div[...]' . Có 2 cách sửa: Cách 1: Nếu em inspect phần khung search sẽ thấy phần code biểu thị cho nút search là có nghĩa là tên tag chứa thành phần này là "input" chứ không phải tag "div" --> Em sửa code thành '//input[@class="search-global-typeahead__input always-show-placeholder"]' là chạy được (thay code của em từ div sang input) Cách 2: Nếu em nhìn lại comment trên sẽ thấy chị dùng dấu * ở chỗ '//*[...]' chứ không nêu cụ thể tên 1 tag nào. Cách làm này thì em đỡ định vị sai vì * nghĩa là máy tính sẽ đi qua hết tất cả nodes trong trang đó và tìm ra tên class mà em yêu cầu. Tuy nhiên cách này không tối ưu trong trường hợp tên class bị trùng và xuất hiện ở nhiều tag khác nhau, lúc này máy tính sẽ lấy giá trị của tag đầu tiên mà nó tìm thấy thì nhiều khi không đúng (vd thành phần em cần tìm ở cuối trang mà có thành phần khác có tên class trùng nằm ở đầu trang thì máy tính sẽ định vị nhầm thành phần ở đầu)
@witchdoctor3897
@witchdoctor3897 3 жыл бұрын
@@BoringPPL em cám ơn ạ, em làm dc rồi ạ.
@nongquan5880
@nongquan5880 3 жыл бұрын
Bạn ơi, bạn chạy code tiếp mà không phải đăng nhập lại là kiểu gì vậy?
@BoringPPL
@BoringPPL 3 жыл бұрын
hello bạn, bạn dùng jupyter notebook/prompt shell thay vì python file nhe. chạy xong code cell để login rồi thì xuống cell bên dưới viết tiếp.
@sonnguyenngoc7436
@sonnguyenngoc7436 2 жыл бұрын
Em chào chị, em đang ở cuối task 3, khi chạy code thì đã lấy được thông tin theo từng link, nhưng có link bị lỗi là: 'NoneType' object has no attribute 'find' và code tự dừng lại. Chị cho em hỏi em phải xử lí đoạn này như thế nào ạ?
@BoringPPL
@BoringPPL 2 жыл бұрын
hello em, chị đoán có thể là do trang chưa kịp load xong nên element đó không tìm được, nên máy tính trả về "NoneType", chị nghĩ em có thể thử - cho sleep lâu hơn để trang load hết - hoặc tối ưu hơn là dùng implicit wait của thư viên selenium (em search keyword này nhé) In the meantime thì em có thể cho đoạn code của mình vào try: ... except: để lỡ có không tìm thấy element thì code vẫn chạy tiếp không bị gián đoạn
@LocTran-tv4rb
@LocTran-tv4rb 4 жыл бұрын
Dạ chị ơi, mỗi lần em chạy code, chương trình đều chạy tuần tự Login to Facebook, input user, getdata,... nên mỗi lần fix lỗi chương trình chạy rất mất thời gian. Trong khi code chị thì chạy tiếp tục từ bước trước đó. vd đang ở bước login to fb, viết tiếp code input user thì chương trình không cần chạy bước trước đó nữa. Phải làm như nào vậy chị
@BoringPPL
@BoringPPL 4 жыл бұрын
Helluu em, hồi trước lúc mới chạy chị cũng gặp vấn đề như em vậy nên thay vì dùng python source (file.py) chị chuyển qua dùng code editor là Jupyter Notebook (file.ipynb) hoặc Interactive Shell để có thể chạy từng code block nhỏ mà không cần phải chạy lại toàn bộ chương trình. Em có thể tải Jupyter Notebook ở đây jupyter.org/ hoặc nếu em dùng Visual Studio Code giống chị thì có thể cài extension Jupyter Notebook là sẽ ra giao diện y chang video hướng dẫn nhé code.visualstudio.com/docs/python/jupyter-support
@LocTran-tv4rb
@LocTran-tv4rb 4 жыл бұрын
@@BoringPPL Yeah cảm ơn chị ạ! Chúc kênh ngày càng phát triển
@diemquyentran7729
@diemquyentran7729 2 жыл бұрын
Dạ cho em xin code github bài này nhen, em cảm ơn ạ
@BoringPPL
@BoringPPL 2 жыл бұрын
hello em, chị có đính link SOURCE CODE trên description, link đây em nhe: github.com/boringPpl/Linkedin-profiles-scraping/
@stevennguyen2944
@stevennguyen2944 3 жыл бұрын
Cho mình hỏi sao cứ ghi csv đến profile thứ 4 là gặp lỗi "UnicodeEncodeError: 'charmap' codec can't encode character '\u1ec5' in position 4: character maps to " đã tìm các cách ghi khác nhưng vẫn dính lỗi tương tự
@BoringPPL
@BoringPPL 3 жыл бұрын
hellu bạn, thiệt sự là mình cũng chưa gặp qua lỗi này bao giờ nhưng mình search thì thấy người ta chỉ là hãy encode cái phần đó của bạn, mình chia sẻ cách làm bạn tự implement thử nhé: Source 1: kzbin.info/www/bejne/iqbQhZluYtyMZ80 Source 2: github.com/llSourcell/twitter_sentiment_challenge/issues/1
@chauvanloifpldn1381
@chauvanloifpldn1381 3 жыл бұрын
nếu em chạy riêng một mình task4 thì có xảy ra lỗi k ạ
@BoringPPL
@BoringPPL 3 жыл бұрын
hello em, em chỉ cần đảm bảo em có đủ những dữ liệu cần cho task 4 là chạy được thôi
@dungbuitoan6879
@dungbuitoan6879 3 жыл бұрын
tớ có 1 lỗi là web chạy lên đc 1 lúc thì lại tắt là sao vậy ạ?
@BoringPPL
@BoringPPL 3 жыл бұрын
hello cậu, tớ cũng chưa hình dung lỗi này lắm, terminal của cậu có báo lỗi gì không nhỉ?
@dungbuitoan6879
@dungbuitoan6879 3 жыл бұрын
@@BoringPPL à chắc vì mình chỉ dùng visual, nay dùng jupiter chạy ok rồi ạ. Nhưng không biết có phải do tài khoản linkedin không có quyền xem không mà k tìm đc ID của người dùng :)) cám ơn những bài b chia sẻ. cố xem hết rồi làm theo ạ. đang muốn học ngành data này mà k biết bắt đầu từ đâu á :)
@BoringPPL
@BoringPPL 3 жыл бұрын
@@dungbuitoan6879 cũng có thể do bạn không có mutual connection nên họ không cho bạn xem profile á :D bạn cứ search youtube làm data bắt đầu từ đâu mình thấy nhiều anh chị chia sẻ lắm, good luck bạn
@nguoilacquan5707
@nguoilacquan5707 4 жыл бұрын
Mình đang dùng IDE nào vậy chị?
@BoringPPL
@BoringPPL 4 жыл бұрын
Mình dùng Jupyter Notebook trên Visual Studio Code bạn nhé
@nguyentanviet19
@nguyentanviet19 3 жыл бұрын
thanks bạn nhiều, mình đã trộm dc dữ liệu từ trang ebay @@
@BoringPPL
@BoringPPL 3 жыл бұрын
uay hehe chúc mừng bạn :D
@ToanNguyen-1106
@ToanNguyen-1106 3 жыл бұрын
Mình gặp lỗi này: UnicodeEncodeError: 'charmap' codec can't encode character '\u1ec5' in position 4: character maps to . Mình có thử thêm encode('utf-8'): name = info_div.find('h1').get_text().encode('utf-8') thì không còn lỗi. nhưng khi mở file .cvs ra thì tên tiếng việt hiển thị không đẹp.
@BoringPPL
@BoringPPL 3 жыл бұрын
thường thì tiếng Việt nó dễ bị lỗi này do mấy cái dấu trong tiếng Việt á bạn, bạn tham khảo thử bài này nhé nguyenvanhieu.vn/xu-ly-tieng-viet-trong-python/
Ứng dụng Python Siêu dễ: Lập trình Bot Đổi tên & Sắp xếp Files máy tính (Python & module OS)
29:14
BoringPPL - Xây dựng portfolio Data và Product
Рет қаралды 12 М.
Ứng dụng Python Siêu dễ: Lập trình Bot tự động Kết nối & Gửi tin nhắn Linkedin (Python & Selenium)
24:19
My scorpion was taken away from me 😢
00:55
TyphoonFast 5
Рет қаралды 2,7 МЛН
Beat Ronaldo, Win $1,000,000
22:45
MrBeast
Рет қаралды 158 МЛН
Sigma Kid Mistake #funny #sigma
00:17
CRAZY GREAPA
Рет қаралды 30 МЛН
Hiểu lầm về ngành Data & Ảnh hưởng của AI lên thị trường lao động - Head of BI @ Shopee
34:20
BoringPPL - Xây dựng portfolio Data và Product
Рет қаралды 2 М.
Những thất bại thường gặp khi apply nghề Data Analyst/ Data Engineer
28:56
Học viện đào tạo phân tích dữ liệu INDAACADEMY
Рет қаралды 6 М.
Ứng dụng Python Siêu dễ: Làm Báo cáo & Phân tích Doanh số Bán hàng với Python, Pandas, và Matplotlib
38:50
Phỏng vấn siêu tốc JavaScript, React và thuật toán
11:30
Phạm Huy Hoàng
Рет қаралды 253 М.
Git and Github Tutorial
22:32
Alyson Castiblanco
Рет қаралды 76