Hướng dẫn crawl data with login python - thu thập dữ liệu bằng python đăng nhập

Gần đây tôi đã phải thực hiện một số trình cạo web từ một trang web yêu cầu đăng nhập. Đó là rất thẳng về phía trước vì tôi mong đợi vì vậy tôi đã quyết định viết một hướng dẫn cho nó.

Đối với hướng dẫn này, chúng tôi sẽ xóa một danh sách các dự án từ tài khoản Bitbucket của chúng tôi.

Mã từ hướng dẫn này có thể được tìm thấy trên github của tôi.

Chúng tôi sẽ thực hiện các bước sau:

  1. Trích xuất các chi tiết mà chúng tôi cần cho đăng nhập
  2. Thực hiện đăng nhập vào trang web
  3. Quét dữ liệu cần thiết

Đối với hướng dẫn này, tôi đã sử dụng các gói sau (có thể được tìm thấy trong các yêu cầu.txt):

requests
lxml

Bước 1: Nghiên cứu trang web

Mở trang đăng nhập

Truy cập trang sau Bitbucket.org/account/signin. Bạn sẽ thấy trang sau (thực hiện đăng xuất trong trường hợp bạn đã đăng nhập)

Hướng dẫn crawl data with login python - thu thập dữ liệu bằng python đăng nhập

Trong phần này, chúng tôi sẽ xây dựng một từ điển sẽ chứa các chi tiết của chúng tôi để thực hiện đăng nhập:

  1. Nhấp chuột phải vào trường người dùng trên mạng hoặc email email và chọn phần tử kiểm tra. Chúng tôi sẽ sử dụng giá trị của thuộc tính tên của tên gọi cho đầu vào này là tên người dùng. Tên người dùng trực tuyến sẽ là chìa khóa và tên người dùng / email của chúng tôi sẽ là giá trị (trên các trang web khác, đây có thể là email của email
    Hướng dẫn crawl data with login python - thu thập dữ liệu bằng python đăng nhập
    Hướng dẫn crawl data with login python - thu thập dữ liệu bằng python đăng nhập
  2. Nhấp chuột phải vào trường mật khẩu của người Viking và chọn phần tử kiểm tra. Trong tập lệnh, chúng ta sẽ cần sử dụng giá trị của thuộc tính tên của tên gọi cho đầu vào này là mật khẩu mật khẩu. Mật khẩu mật khẩu sẽ là chìa khóa trong từ điển và mật khẩu của chúng tôi sẽ là giá trị (trên các trang web khác, đây có thể là user user_password,
    Hướng dẫn crawl data with login python - thu thập dữ liệu bằng python đăng nhập
    Hướng dẫn crawl data with login python - thu thập dữ liệu bằng python đăng nhập
  3. Trong nguồn trang, tìm kiếm một thẻ đầu vào ẩn có tên là CSRFMiddleWaretoken. CSRFMiddleWaretoken, sẽ là chìa khóa và giá trị sẽ là giá trị đầu vào ẩn (trên các trang web khác, đây có thể là một đầu vào ẩn với tên là CSRF_Token, thì xác thực_token, v.v.). Ví dụ, Vy00pe3ra6aiswkbrpn72sfml00icuv8.
    Hướng dẫn crawl data with login python - thu thập dữ liệu bằng python đăng nhập
    Hướng dẫn crawl data with login python - thu thập dữ liệu bằng python đăng nhập

Chúng ta sẽ kết thúc với một dict sẽ trông như thế này:

payload = {
	"username": "", 
	"password": "", 
	"csrfmiddlewaretoken": ""
}

Hãy nhớ rằng đây là trường hợp cụ thể cho trang web này. Mặc dù biểu mẫu đăng nhập này rất đơn giản, các trang web khác có thể yêu cầu chúng tôi kiểm tra nhật ký yêu cầu của trình duyệt và tìm các khóa và giá trị có liên quan mà chúng tôi nên sử dụng cho bước đăng nhập.

Bước 2: Thực hiện đăng nhập vào Trang web

Đối với tập lệnh này, chúng tôi sẽ chỉ cần nhập những điều sau:

import requests
from lxml import html

Đầu tiên, chúng tôi muốn tạo đối tượng phiên của chúng tôi. Đối tượng này sẽ cho phép chúng tôi tiếp tục phiên đăng nhập trên tất cả các yêu cầu của chúng tôi.

session_requests = requests.session()

Thứ hai, chúng tôi muốn trích xuất mã thông báo CSRF từ trang web, mã thông báo này được sử dụng trong quá trình đăng nhập. Trong ví dụ này, chúng tôi đang sử dụng LXML và XPath, chúng tôi có thể đã sử dụng biểu thức chính quy hoặc bất kỳ phương pháp nào khác sẽ trích xuất dữ liệu này.

login_url = "https://bitbucket.org/account/signin/?next=/"
result = session_requests.get(login_url)

tree = html.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='csrfmiddlewaretoken']/@value")))[0]

** Thông tin thêm về XPath và LXML có thể được tìm thấy ở đây.

Tiếp theo, chúng tôi muốn thực hiện giai đoạn đăng nhập. Trong giai đoạn này, chúng tôi gửi một yêu cầu bài đăng đến URL đăng nhập. Chúng tôi sử dụng tải trọng mà chúng tôi đã tạo trong bước trước làm dữ liệu. Chúng tôi cũng sử dụng tiêu đề cho yêu cầu và thêm khóa giới thiệu cho nó cho cùng một URL.

result = session_requests.post(
	login_url, 
	data = payload, 
	headers = dict(referer=login_url)
)

Bước 3: Nội dung cạo

Bây giờ, chúng tôi đã có thể đăng nhập thành công

url = 'https://bitbucket.org/dashboard/overview'
result = session_requests.get(
	url, 
	headers = dict(referer = url)
)

Để kiểm tra điều này, hãy để loại bỏ danh sách các dự án từ trang Bảng điều khiển Bitbucket. Một lần nữa, chúng tôi sẽ sử dụng XPath để tìm các yếu tố đích và in ra kết quả. Nếu mọi thứ đều ổn, đầu ra sẽ là danh sách các nhóm / dự án có trong tài khoản Bitbucket của bạn.

tree = html.fromstring(result.content)
bucket_names = tree.xpath("//div[@class='repo-list--repo']/a/text()")

print(bucket_names)

Bạn cũng có thể xác nhận kết quả yêu cầu bằng cách kiểm tra mã trạng thái được trả về từ mỗi yêu cầu. Nó đã giành chiến thắng luôn luôn cho bạn biết rằng giai đoạn đăng nhập đã thành công nhưng nó có thể được sử dụng làm chỉ số.

Ví dụ:

result.ok # Will tell us if the last request was ok
result.status_code # Will give us the status from the last request

Đó là nó.

Mẫu mã đầy đủ có thể được tìm thấy trên GitHub.

Bạn có thể cạo một trang web yêu cầu đăng nhập không?

Có, đó là màn hình đăng nhập. Đôi khi, bạn có thể đặt mục tiêu của mình vào dữ liệu cạo bạn chỉ có thể truy cập sau khi đăng nhập vào tài khoản. Nó có thể là phân tích kênh của bạn, lịch sử người dùng của bạn hoặc bất kỳ loại thông tin nào khác bạn cần. Trong trường hợp này, trước tiên hãy kiểm tra xem công ty có cung cấp API cho mục đích này không.. Sometimes, you might set your sights on scraping data you can access only after you log into an account. It could be your channel analytics, your user history, or any other type of information you need. In this case, first check if the company provides an API for the purpose.

Làm thế nào để bạn cạo một trang web yêu cầu đăng nhập với Python selenium?

Làm thế nào để bạn cạo một trang web yêu cầu đăng nhập với Python selenium ?..
Bước 1 - Cài đặt và nhập khẩu. pip cài đặt selen ..
Bước 2 - Cài đặt và truy cập WebDriver. ....
Bước 3 - Trang web truy cập qua Python ..
Bước 4, định vị thông tin cụ thể mà bạn đang cạo ..
Bước 5 - Áp dụng cho mỗi năm có sẵn và gắn kết mọi thứ lại với nhau ..

Làm thế nào để bạn thu thập dữ liệu từ một trang web trong Python?

Để trích xuất dữ liệu bằng cách sử dụng máy quét web với Python, bạn cần làm theo các bước cơ bản sau:..
Tìm URL mà bạn muốn cạo ..
Kiểm tra trang ..
Tìm dữ liệu bạn muốn trích xuất ..
Viết mã ..
Chạy mã và trích xuất dữ liệu ..
Lưu trữ dữ liệu theo định dạng cần thiết ..

Làm thế nào để bạn tự động hóa việc mở và đăng nhập vào các trang web trong Python?

Mục lục..
Tạo thư mục mới ..
Tải xuống Chromedriver ..
Cài đặt Thư viện Selen cho Python ..
Tạo tập lệnh Python và tệp yaml ..
Viết tập lệnh Python và tệp yaml ..
Giải thích phần cào web ..
Chạy nó!.