Hướng dẫn how do you scrape dynamic content in python? - làm thế nào để bạn loại bỏ nội dung động trong python?

Vậy làm cách nào để cạo một trang web có nội dung động?

Để xóa nội dung động từ các trang web, chúng tôi được yêu cầu để trang web tải hoàn toàn, để dữ liệu có thể được đưa vào trang.

Chính xác thì sự khác biệt giữa nội dung động và tĩnh là gì?

Nội dung trong các trang web tĩnh là nội dung cố định không được xử lý trên máy chủ và được trả về trực tiếp bằng cách sử dụng các tệp mã nguồn prebuild. Các trang web động tải nội dung bằng cách xử lý chúng ở phía máy chủ trong thời gian chạy. Các trang web này có thể có dữ liệu khác nhau mỗi khi bạn tải trang hoặc khi dữ liệu được cập nhật.

Làm thế nào tôi biết rằng dữ liệu được tạo động?

Bạn có thể mở các công cụ Dev và mở tab Networks. Ở đó, một khi bạn làm mới trang, bạn có thể xem các yêu cầu hoặc yêu cầu XHR cho API. Nếu một số yêu cầu như những yêu cầu tồn tại, thì trang web là động, nếu không thì nó là tĩnh.

Làm cách nào để trích xuất thông tin khác như giá và hình ảnh từ trang web? Và làm thế nào để có được các lớp học cụ thể chẳng hạn như một mức giá?

Để trích xuất nội dung động từ các trang web, chúng tôi có thể sử dụng selenium [Python - một trong những tùy chọn tốt nhất]:

  • Selenium - Khung mô phỏng trình duyệt tự động Bạn có thể tải trang và sử dụng bộ chọn CSS để khớp dữ liệu trên trang. Sau đây là một ví dụ về cách bạn có thể sử dụng nó.
import time
from selenium import webdriver

driver = webdriver.Chrome[]

driver.get["//www.amazon.in/s?k=agatha+christie+books&crid=3MWRDVZPSKVG0&sprefix=agatha%2Caps%2C269&ref=nb_sb_ss_i_1_6"]
time.sleep[4]
titles = driver.find_elements_by_css_selector[
    ".a-size-medium.a-color-base.a-text-normal"]

print[titles[0].text]

Trong trường hợp bạn không muốn sử dụng Python, có các tùy chọn nguồn mở khác như Puppeteer và Playwright, cũng như các nền tảng quét hoàn chỉnh như dữ liệu sáng có khả năng tích hợp để trích xuất nội dung động.

Mục lục

  • Nội dung năng động của những gì?
  • Những thách thức của nội dung động quét web
  • Thời gian cạo - những gì bạn sẽ cần bắt đầu
  • Cạo nội dung động với Python và Selenium: Hướng dẫn từng bước
  • Sự kết luận

Đưa trang web của bạn đến cấp độ tiếp theo - Cạo nội dung động bằng Python

Internet đã thay đổi khá nhiều, phải không? Ngày nay, hầu hết mọi trang web phổ biến bạn truy cập đều phù hợp với nhu cầu cụ thể của bạn. Mục tiêu là làm cho trải nghiệm người dùng càng tốt càng tốt. Nghe có vẻ tuyệt vời đối với người dùng cuối, nhưng đối với một người nào đó đang cố gắng quét nội dung động, nó có thể chứng minh là một thách thức. Điều đó không có nghĩa là nó không thể làm được! & NBSP;

Trong bài đăng trên blog này, chúng tôi sẽ trải qua một hướng dẫn từng bước về cách xử lý nội dung năng động trên web với Python và Selenium. Mặc dù chúng tôi sẽ làm hết sức mình để làm cho hướng dẫn này rõ ràng nhất có thể, hướng dẫn này không chính xác là một cuộc đi bộ trong công viên. Vì vậy, nếu bạn mới sử dụng máy quét web, bạn có thể muốn có thêm kinh nghiệm cạo trước khi giải quyết nhiệm vụ này.

[about]


Tags:

change
deep-thoughts
thinking
world

Bước 3: Thêm phương thức và pprint

Chúng tôi đã thiết lập selen, nhưng chúng tôi cũng cần thêm phương thức từ thư viện Selenium Python để đơn giản hóa lựa chọn. Về cơ bản, phương pháp này cho bạn biết liệu các yếu tố nhất định có mặt hay không.

from selenium import webdriver
from selenium_python import get_driver_settings, smartproxy
# using By to simplify selection
from selenium.webdriver.common.by import By

Chúng tôi cũng sẽ cần pprint - nó sẽ định dạng kết quả theo một cách gọn gàng. Bạn có thể thêm nó bằng cách nhập dòng mã như trong ví dụ xuống bên dưới

#pprint to make console output look nice
import pprint

Bước 4: Chọn trình duyệt và chỉ định Target & NBSP;

Bạn hoàn toàn có thể để lại thiết lập trình điều khiển như trong ví dụ, chỉ cần đảm bảo thêm chọn Trình duyệt mà bạn sẽ được cạo. Đối với mục tiêu [//quotes.toscrape.com], nó nên được gõ chính xác như trong ví dụ.

def webdriver_example[]:
driver get_driver_settings[]
if driver['DRIVER'] == 'FIREFOX':
browser =
webdriver.Firefox[executable_path=r'{driver_path}'.format[driver_path=driver['DRIVER_PATH']], proxy=smartproxy[]]
elif driver ['DRIVER'] == 'CHROME':
browser =
webdriver.Chrome[executable_path=r'{driver_path}'.format[driver_path=driver['DRIVER_PATH']], desired_capabilities=smartproxy[]]
browser.get['//quotes.toscrape.com/']

Bây giờ, hãy để Lừa cũng thiết lập một biến số chúng ta muốn cạo bao nhiêu trang. Hãy nói rằng, chúng tôi sẽ muốn 5. Đầu ra cạp sẽ là danh sách các đối tượng JSON trích dẫn_list chứa thông tin về các trích dẫn mà chúng tôi sẽ cạo.

browser.get['//quotes.toscrape.com/']
pages = 5
quotes_list = []

Bước 5: Chọn bộ chọn

Bạn có thể chọn từ một loạt các bộ chọn, nhưng đối với hướng dẫn này, chúng tôi đã sử dụng lớp. Hãy để Lừa quay trở lại Thư viện Selenium Python một chút. Chúng tôi sẽ định vị các yếu tố của chúng tôi bằng cách sử dụng bộ chọn lớp trong trường hợp này [by.class_name]. & Nbsp;

Bây giờ chúng tôi có bộ chọn của mình lên và chạy, điều đầu tiên chúng tôi phải làm là mở trang web mục tiêu trong selen. Dòng lệnh sẽ làm điều đó. Đó là thời gian để có được thông tin mà chúng ta cần.

browser.get['//quotes.toscrape.com/']

Bước 6: Cạo

Cuối cùng, thời gian để bắt đầu thực hiện một số cào. Đừng lo lắng, vâng, sẽ có khá nhiều mã để giải quyết, nhưng chúng tôi sẽ đưa ra các ví dụ và giải thích từng bước của quy trình. Bằng cách này, chúng tôi sẽ chia nó thành các bit nhỏ hơn, dễ hiểu hơn và bạn sẽ phá vỡ nội dung động ngay lập tức.

     for i in range [pages] :
quotes = browser.find_elements[By.CLASS_NAME, 'quote']
for quote in quotes:
tags = quote.find_elements[By.CLASS_NAME, 'tag'],
tag_list = []
for tag_in tags:
tag_list.append[tag.text]
quotes_list.append[{
"author' : quote.find_element[By.CLASS_NAME, 'author'].text,
'text' : quote.find_element[By.CLASS_NAME, 'text'].text,
'tags' : tag_list,
}]
next_page_btn = browser.find_element[By.PARTIAL_LINK_TEXT, 'Next'].click[]

Vòng lặp sẽ chạy nhiều lần như chúng tôi đã chọn trong biến trang. Chúng tôi đã đi cho 5 trang.

quotes = browser.find_elements[By.CLASS_NAME, ‘quote’]

Với dòng này, chúng tôi sẽ nhận được tất cả các yếu tố lớp trích dẫn từ trang. Như trong ví dụ dưới đây:


“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking."
by Albert Einstein
[about]


Tags:

change
deep-thoughts
thinking
world

Dòng mã trên đi qua tất cả các yếu tố báo giá nhiều lần.


“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking."
by Albert Einstein
[about]


Tags:

change
deep-thoughts
thinking
world

0

Bằng cách chọn lớp thẻ, chúng tôi sẽ nhận được tất cả các thẻ cho một báo giá đã cho. Sau đó, chúng tôi sẽ lặp lại thông qua chúng để đưa chúng vào một danh sách - TAG_LIST.tag class we will get all of the tags for a given quote. Then we will iterate through them to put them in a list – tag_list.

Thêm đầu ra vào danh sách trích dẫn_list đã được đề cập trước đó. Danh sách sẽ chứa các phần tử JSON cho mỗi báo giá.quotes_list list that was mentioned earlier. The list will contain JSON elements for each quote.


“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking."
by Albert Einstein
[about]


Tags:

change
deep-thoughts
thinking
world

1

Ở đây, chúng tôi chọn chính văn bản báo giá cũng như tác giả. Chỉ có thể có một trong số đó, vì vậy, không cần phải lặp lại. Các giá trị được gán cho các khóa ‘tác giả và‘ văn bản tương ứng.‘author’ and ‘text’ keys respectively.

Gán TAG_List cho khóa ‘Thẻ.tag_list to the ‘tags’ key.


“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking."
by Albert Einstein
[about]


Tags:

change
deep-thoughts
thinking
world

2

Chúng tôi đang tìm nút trang tiếp theo [sử dụng bộ chọn Partial_Link_Text] và nhấp vào nó để chuyển sang trang tiếp theo. Một lần lặp vòng mới bắt đầu sau đó và trang được lấy lại để báo giá.PARTIAL_LINK_TEXT selector] and clicking on it to go to the next page. A new loop iteration starts after that and the page is scraped for quotes again.


“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking."
by Albert Einstein
[about]


Tags:

change
deep-thoughts
thinking
world

3

Bước 7: Định dạng kết quả

Chúng tôi gần đến vạch đích. Tất cả những gì còn lại bây giờ là thêm dòng mã cuối cùng sẽ in ra kết quả yêu cầu cạo của bạn vào cửa sổ bảng điều khiển sau khi các trang kết thúc cào.


“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking."
by Albert Einstein
[about]


Tags:

change
deep-thoughts
thinking
world

4

Càng và chúng tôi đã hoàn thành! Sau này, bạn sẽ thấy một cái gì đó tương tự như ví dụ dưới đây. Bây giờ, nhớ bạn, kết quả khá rộng hơn một chút so với được hiển thị ở đây, nhưng, tốt, bạn có được điểm.


“The world as we have created it is a process of our thinking. It cannot be changed without changing our thinking."
by Albert Einstein
[about]


Tags:

change
deep-thoughts
thinking
world

5

Sự kết luận

Những ngày này ngày càng trở nên phổ biến hơn. Có rất nhiều kiến ​​thức mà bạn có thể có được với phương pháp thu thập dữ liệu này. Chưa kể nhiều cách bạn có thể sử dụng thông tin này để lợi thế của bạn. Chúng tôi đã chọn một trang web khá đơn giản để cạo, vì vậy nó có thể yêu cầu nhiều công việc hơn để cạo một trang web tinh vi hơn. Nhưng ít nhất bây giờ bạn có một ví dụ tốt về cách làm việc với các trang web năng động!

James Keenan

Nhà văn nội dung cao cấp

Nhà truyền giáo tự động hóa và ẩn danh tại SmartProxy. Anh ta tin vào sự tự do dữ liệu và mọi người có quyền trở thành một người tự khởi nghiệp. James ở đây để chia sẻ kiến ​​thức và giúp bạn thành công với các proxy dân cư.

Các câu hỏi thường gặp

Làm thế nào một trang web năng động khác với nội dung động?

Một trang web năng động không đảm bảo rằng nội dung được hiển thị trên đó sẽ là động. Nó có liên quan nhiều hơn đến cách trang web được xây dựng bất kể nội dung của nó. Mặt khác, nội dung động sẽ luôn động. & NBSP;

Hãy để lấy các cửa hàng điện tử làm ví dụ-chúng là các trang web năng động. Nếu bạn đang tìm kiếm bồn rửa tốt nhất, trang web sẽ đảm bảo cho bạn thấy những lựa chọn tốt nhất dựa trên mức độ phổ biến chung và tiêu chí lọc của bạn [nếu bạn đang tìm kiếm một số bồn rửa cụ thể]. & NBSP;

Sự khác biệt giữa một trang web động và nội dung động ở đây là tất cả khách truy cập sẽ nhận được kết quả giống nhau cho cùng một bộ lọc. Nội dung động trong bối cảnh này sẽ là một số thỏa thuận hoặc đề xuất được cá nhân hóa. & NBSP;

Tôi có thể sử dụng một bộ chọn phần tử khác không?

Có nhiều bộ chọn, vì vậy bạn có thể chọn bất cứ điều gì bạn muốn và cảm thấy thoải mái nhất. Những người được biết đến nhiều hơn sẽ là XPath và CSS. Bạn có thể đọc về chúng trong bài viết blog khác của chúng tôi.

Có cách nào để loại bỏ nội dung không di động mà không có kiến ​​thức công nghệ không?

Tất nhiên! Nhiều nhà cung cấp khác nhau cung cấp phần mềm như vậy, nhưng vì bạn đã ở đây trên trang của chúng tôi, tại sao không thử cái cạp không mã hóa của chúng tôi? Công cụ này rất mạnh mẽ, cho phép bạn tiếp cận bất kỳ trang web trên toàn thế giới nào chỉ bằng một vài cú nhấp chuột.

Với máy quét không có mã, bạn có thể lên lịch các tác vụ cạo của mình, sử dụng các mẫu cạo được tạo sẵn và nhận dữ liệu được định dạng tốt qua email hoặc webhook. Và phần tốt nhất - nó không yêu cầu bất kỳ kỹ năng mã hóa nào. Amazin, phải không? Bạn có thể kiểm tra máy cạo không có mã trong một bản dùng thử miễn phí 3 ngày hoặc lấy một phần mở rộng máy quét không có mã giới hạn nhưng vẫn mạnh mẽ trên cửa hàng Chrome. Chỉ cần nhớ rằng cái này không hỗ trợ lập lịch nhiệm vụ, mẫu, lưu trữ dữ liệu và phân tích cú pháp.

Làm thế nào để bạn cạo dữ liệu động?

Có hai cách tiếp cận để cạo một trang web động: Xóa nội dung trực tiếp từ JavaScript. Quét trang web khi chúng tôi xem nó trong trình duyệt của chúng tôi - sử dụng các gói Python có khả năng thực hiện JavaScript.Scrape the content directly from the JavaScript. Scrape the website as we view it in our browser — using Python packages capable of executing the JavaScript.

Đẹp có thể quét nội dung động?

Đó là lý tưởng là không thể vì BeautifulSoup chỉ là một trình phân tích cú pháp HTML.Vì vậy, trong các kịch bản đó, tốt hơn là sử dụng selenium để kéo nội dung động.Có nếu chúng ta không thể nhìn thấy các bảng trong thân HTML thì chúng được tạo động thông qua các tập lệnh. because BeautifulSoup is just an HTML parser. So in those scenarios it is better to use Selenium to pull dynamic content. Yes if we cant see tables in the HTML body then those are dynamically generated through scripts.

Dynamic Web Scraping là gì?

Các trang web động được dựa trên mã được hiển thị khi chúng được tải trên trình duyệt.Do đó, nội dung được cạo về mặt kỹ thuật không tồn tại trước khi trang được tải.Điều này yêu cầu quy trình cạo web để bao gồm một bước để hiển thị nội dung trang trên trình duyệt.based on code that is rendered once they are loaded on a browser. Therefore, the content to be scraped technically does not exist before the page is loaded. This requires the web scraping process to include a step for rendering the page content on a browser.

Làm cách nào để thu thập dữ liệu trang web động?

Web Crawling là một quá trình theo chu kỳ trong đó bạn bắt đầu với các URL hạt giống, trước tiên tìm nạp nội dung của các URL này, phân tích nội dung [lấy văn bản để lập chỉ mục cũng như Overlinks], lập chỉ mục nội dung.Các Overlink mới được tìm thấy sau đó được bò lại và các chu kỳ tương tự được lặp lại và nhiều nội dung được tìm nạp.

Bài Viết Liên Quan

Chủ Đề