[Tin tức] [Web Scraping] Lập trình Bot kéo Dữ liệu Người dùng Linkedin (Python & BeautifulSoup) cực đơn giản!



CÓ THỂ BẠN QUAN TÂM:
Lập trình Bot kéo Dữ liệu Người dùng Linkedin (Python & BeautifulSoup):
Lập trình Bot tự động Kết nối & Gửi tin nhắn trên Linkedin (Python & Selenium):

GROUP HỎI ĐÁP:
Group hỏi đáp Python ứng dụng:
Group hỏi đáp Python cơ bản:

TIMESTAMP
0:14 Giới thiệu Vấn đề
1:30 Lên kế hoạch cho chương trình, chia nhỏ vấn đề
2:33 Task 1: Tự động Đăng nhập vào Linkedin
3:21 Cài đặt và Import Selenium và Chromedriver
5:22 Task 1.1: Tự động khởi tạo trình duyệt Chrome, và Chuyển đến đường dẫn mong muốn
6:24 Task 1.2: Định vị và Tương tác với các thành phần trên website (khung đăng nhập, nút đăng nhập)
9:51 Cài đặt & Import time module để giảm tốc độ thực thi của máy
10:38 Tips: Cách ẩn thông tin đăng nhập
12:27 Task 2: Tự động tìm kiếm Profile mong muốn
12:46 Định vị và Tương tác với Khung Tìm Kiếm trên Linkedin
14:45 Task 3 Thu thập đường dẫn đến tất cả Profile
14:58 Cài đặt & Import BeautifulSoup4
15:24 Task 3.1: Thu thập đường dẫn trên 1 trang
19:32 Task 3.2: Chuyển hướng sang các trang tiếp theo và Lặp lại hành động
24:24 Task 4: Thu thập thông tin của 1 Profile, và Lưu thông tin vào file CSV
24:46 Task 4.1: Thu thập thông tin của 1 profileScrape the data of 1 Profile. Lặp lại hành động cho tất cả Profile đã thu thập được trước đó
28:33 Cài đặt & Import CSV module
28:49 Task 4.2: Lưu dữ liệu vào file CSV

SOURCE CODE:

WHY WE STARTED THIS?
We are a group of hiring managers from bluechip companies and high growth startups. Most of the time, when the candidate comes for an interview, they don’t seem to have the right skill sets or the right mindset to think about a real-world problem. There is a disconnect between what the industry needs and what the candidates are taught in school/ on MOOCs courses.

During Covid, millions of people losing their job. We’re uncertain what’s ahead of us. In the next 3-5 years, if you cannot catch up with the world movement and possess demanding skills, you will be out of a job in no time. Don’t wait until too late!

Follow us:

39 bình luận về “[Tin tức] [Web Scraping] Lập trình Bot kéo Dữ liệu Người dùng Linkedin (Python & BeautifulSoup) cực đơn giản!”

  1. 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ý: https://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

    Trả lời
  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!

    Trả lời
  3. 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

    Trả lời
  4. 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?

    Trả lời
  5. Dạ em bị stuck ở task 2, khi nhập giá trị vào ô tìm kiếm ạ – bị báo lỗi là ElementNotInteractableException. Dưới đây là vị trí em gán, mong mọi người giúp đỡ với ạ 😢. Em xin cảm ơn nhiều nhiều
    search_field = driver.find_element('xpath','//*[@class="search-global-typeahead__input always-show-placeholder"]')

    search_field.send_keys("Software Engineer People")

    Trả lời
  6. 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.

    Trả lời
  7. 1 URLs_all_page=GetURLPages()

    2 with open('output.csv', 'w', newline = '') as file_output:

    3 headers = ['Name', 'Job Title', 'Location']

    4 writer = csv.DictWriter(file_output, delimiter=',', lineterminator='n',fieldnames=headers)

    5 writer.writeheader()

    6 for linkedin_URL in URLs_all_page:

    7 browser.get(linkedin_URL)

    8 print('- Accessing profile: ', linkedin_URL)

    9 sleep(3)

    10 page_source = BeautifulSoup(browser.page_source, "html.parser")

    11 info_div = page_source.find('div',{'class':'mt5 relative'})

    12 info_loc=info_div.find_all('div',{'class':'pv-text-details__left-panel'})

    13 name = info_loc.find('h1', class_='text-heading-xlarge inline t-24 v-align-middle break-words').get_text().strip()

    14 print('— Profile name is: ', name)

    15 info_loc1=info_div.find_all('div',{'class':'pb2 pv-text-details__left-panel'})

    16 location = info_loc1.find('span', class_='text-body-small inline t-black–light break-words').get_text().strip()

    17 print('— Profile location is: ', location)

    18 title = info_loc.find('div', class_='text-body-medium break-words').get_text().strip()

    19 print('— Profile title is: ', title)

    20 print('n')

    21 writer.writerow({headers[0]:name, headers[1]:location, headers[2]:title})

    Chị ơi, html của Linkedln đã có thay đổi nên em đã chỉnh sửa nhưng code vẫn chỉ chạy đến print Linkedln_URL là dừng và báo lỗi rồi ạ, không biết làm thế nào cho đúng, mong chị phản hồi sớm ạ (em lấy bài này làm đề tài cho môn học nhưng đến đoạn này thì bí quá)!

    Trả lời
  8. 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ỉ?

    Trả lời

Viết một bình luận

bahis10bets.com betvole1.com casinomaxi-giris.com interbahis-giris1.com klasbahis1.com mobilbahisguncelgiris1.com piabetgiris1.com tipobettgiris.com tumbetgiris1.com betboro 1xbet giriş
bahis10bets.com betvole1.com casinomaxi-giris.com interbahis-giris1.com klasbahis1.com mobilbahisguncelgiris1.com piabetgiris1.com tipobettgiris.com tumbetgiris1.com betboro 1xbet giriş
antalya bayan escort
antalya bayan escort
antalya bayan escort