Pandas python web cạo

Khi trích xuất dữ liệu web, có những trường hợp bạn cần trích xuất thông tin dạng bảng từ các trang web. Cách thông thường để thực hiện là viết một trình quét web bằng Python Beautifulsoup, Selenium, Scrapy hoặc thứ gì đó khác


Tuy nhiên, có một cách dễ dàng để lấy thông tin dạng bảng từ các trang web chỉ bằng cách sử dụng Pandas và trong vòng chưa đầy một phút và năm dòng mã Python


Trong ví dụ của chúng tôi, chúng tôi sẽ làm việc với dữ liệu bệnh thủy đậu có sẵn tại đây. May mắn thay, chỉ có một bảng trên trang web chứa dữ liệu nhiễm bệnh thủy đậu. Một điểm cần lưu ý là phương pháp của chúng tôi sẽ hoạt động bất kể có bao nhiêu bảng trên trang


Bước 1 - Cài đặt gấu trúc


Nếu bạn chưa cài đặt pandas - hãy cài đặt nó bằng lệnh bên dưới trong thiết bị đầu cuối của bạn


pip install pandas


Bước 2 Hãy bắt đầu cạo


Mã bên dưới chuyển dữ liệu từ trang thành tệp CSV. Xem phần giải thích bên dưới để hiểu cách mã hoạt động


import pandas as pd

url = 'https://www.monkeypox.global.health/'

df_list = pd.read_html(url)

monkeypox = df_list[0]

monkeypox.to_csv('monkeypox.csv')


Ở dòng đầu tiên - chúng ta đã nhập thư viện pandas. Trong dòng tiếp theo, chúng tôi đang thông báo cho trình thu thập thông tin - dữ liệu hoặc bảng mà chúng tôi muốn thu thập có tại URL 'https. //www. bệnh đậu khỉ. toàn cầu. sức khỏe/'


Dòng sau là quan trọng nhất. Chúng tôi đang yêu cầu thư viện pandas sử dụng hàm read_html để lấy tất cả các bảng trên trang web. read_html() trả về một danh sách chứa các khung dữ liệu của tất cả các bảng có sẵn trên trang


Chỉ có một bảng trong trường hợp của chúng tôi; . Chúng tôi truy cập nó bằng chỉ mục bằng liên kết mã sau



monkeypox = df_list[0]


Bước tiếp theo là chuyển đổi dữ liệu thành tệp CSV và chúng tôi sử dụng hàm to_csv để chuyển đổi khung dữ liệu bệnh thủy đậu thành tệp CSV


monkeypox.to_csv('monkeypox.csv')


Đó là nó. Đó là cách chúng tôi trích xuất dữ liệu dạng bảng từ trang web sang CSV chỉ với năm dòng mã và chưa đầy một phút


Trong hướng dẫn này, chúng tôi đã giới thiệu cách sử dụng Python và pandas để thu thập dữ liệu bệnh thủy đậu từ trang web Global Health. Chúng tôi đã chỉ cho bạn cách bắt đầu với việc quét web, sử dụng công cụ nào, cách định dạng mã của bạn và trích xuất thông tin phù hợp


Quét web là một cách tuyệt vời để tiết kiệm thời gian và tiền bạc trong doanh nghiệp của bạn bằng cách tự động hóa các tác vụ mà nếu không sẽ mất hàng giờ hoặc hàng ngày để hoàn thành thủ công. Với chuyên môn của Datahut trong việc quét web ở quy mô lớn, chúng tôi có thể giúp bạn bắt đầu và chạy với giải pháp quét web tốt nhất cho nhu cầu của bạn

Cạo và làm sạch dữ liệu cũng như lưu trữ dữ liệu trong bảng tính để thao tác và phân tích thêm bằng gấu trúc

Quét web là một phương pháp tuyệt vời để thu thập thông tin nằm rải rác trên web và đưa nó đến một nơi lưu trữ duy nhất. Python có các công cụ cạo tuyệt vời như BeautifulSoup, Selenium và Pandas có thể được sử dụng cho mục đích này. BeautifulSoup và Selenium là các gói cao cấp hơn trong khi Pandas chủ yếu được sử dụng để làm sạch và thao tác dữ liệu

Trong bài viết này, Pandas được sử dụng để thu thập và làm sạch dữ liệu cũng như lưu trữ dữ liệu trong bảng tính để thao tác và phân tích thêm

Python truyền đạt tất cả các chức năng thông qua các gói của nó. Dưới đây là các gói được sử dụng cho dự án này

import pandas as pdfrom openpyxl import Workbookfrom datetime import datetime

Pandas là một gói python mã nguồn mở và chủ yếu được sử dụng để thao tác và phân tích dữ liệu. Đó là một công cụ tuyệt vời, dễ sử dụng và gói gọn rất nhiều chức năng. Ở đây chúng tôi sẽ sử dụng nó để cạo một bảng từ trang Wikipedia và sau đó sử dụng nó để thao tác dữ liệu

Openpyxl là một thư viện nguồn mở khác được sử dụng để đọc cũng như ghi các tệp Excel

Datetime là một mô-đun Python rất linh hoạt được sử dụng để làm việc với các định dạng ngày và giờ

Sau đây là URL của trang web chứa bảng sẽ được loại bỏ. Hãy lưu trữ nó trong một wiki biến

wiki = "https://en.wikipedia.or/wiki/List_of_films_based_on_Marvel_Comics"

URL trên chứa hơn 20 bảng và bảng cần được loại bỏ được hiển thị bên dưới (hình. 1)

The table from wikipedia about Marvel movies

quả sung. 1

các pd. hàm read-html trả về một danh sách được lưu trữ trong biến df_marvel_site và đối số khớp giúp thu hẹp các bảng chứa văn bản “phòng vé”, bảng cụ thể của chúng tôi

Hàm len(df_marvel) cho biết có bao nhiêu bảng được lưu trữ trong danh sách. Đầu ra cho thấy một bảng duy nhất được lưu trữ trong danh sách, sau đó được lưu trữ dưới dạng khung dữ liệu mới df_marvel

df_marvel_site=pd.read_html(wiki,match=’Box office’)len(df_marvel_site)df_marvel = df_marvel_site[0]

Để kiểm tra xem bảng bên phải đã được cạo hay chưa cũng như các tiêu đề và kiểu dữ liệu của chúng và số đếm, chúng tôi sử dụng các chức năng được hiển thị bên dưới

df_marvel.head()df_marvel.info())

Đầu ra được đưa ra dưới đây (hình. 2)

quả sung. 2

Kiểm tra đầu ra cho thấy có 8 cột, tuy nhiên, tiêu đề dường như được lặp lại hai lần cũng như tên cột dường như có một số dấu cách và dấu gạch nối giữa chúng. Các cột được đặt tên bằng cách sử dụng quy ước đặt tên trường hợp Pascal. Cột ngân sách chỉ có 65 mục cho thấy có một giá trị bị thiếu. Hai hàng cuối cùng cũng hiển thị một bản tóm tắt sẽ bị xóa (hình. 3). Tất cả các cột có cột tiền tệ đều có dấu phẩy giữa các số cũng như ký hiệu đô la bị xóa để thao tác thêm

quả sung. 3____8

Cột Dtype trong đầu ra cho thấy rằng tất cả các giá trị được lưu trữ dưới dạng đối tượng kiểu. Để chuyển đổi tất cả các cột thành kiểu dữ liệu phù hợp. Sử dụng các biểu thức regex để xóa các ký hiệu đô la khỏi dữ liệu và chuyển đổi chúng thành kiểu dữ liệu float

df_marvel.columns = [“Title”, “Distributor”, “ReleaseDateUS”, “Budget”,”OpeningWeekendNorthAmerica”,”NorthAmerica”,”OtherTerritories”,”Worldwide”]
df_marvel[‘OpeningWeekendNorthAmerica’] = df_marvel[‘OpeningWeekendNorthAmerica’].str.replace(r’\D+’, ‘’).astype(‘float’)
df_marvel[‘Budget’] = df_marvel[‘Budget’].str.replace(r’\D+’, ‘’).astype(‘float’)
df_marvel[‘Budget’] = df_marvel[‘Budget’]*1000000.00
df_marvel[‘NorthAmerica’] = df_marvel[‘NorthAmerica’].str.replace(r’\D+’, ‘’).astype(‘float’)
df_marvel[‘OtherTerritories’] = df_marvel[‘OtherTerritories’].str.replace(r’\D+’, ‘’).astype(‘float’)
df_marvel[‘Worldwide’] = df_marvel[‘Worldwide’].str.replace(r’\D+’, ‘’).astype(‘float’)

Chúng ta có thể chạy các chức năng thông tin và đầu trên khung dữ liệu để xem các thay đổi được thực hiện

import pandas as pd

url = 'https://www.monkeypox.global.health/'

df_list = pd.read_html(url)

monkeypox = df_list[0]

monkeypox.to_csv('monkeypox.csv')
0

quả sung. 4

Để chuyển đổi cột “ReleaseDateUS” thành đối tượng kiểu ngày và cột “Tiêu đề” và “Nhà phân phối” thành chuỗi

import pandas as pd

url = 'https://www.monkeypox.global.health/'

df_list = pd.read_html(url)

monkeypox = df_list[0]

monkeypox.to_csv('monkeypox.csv')
1

Kiểm tra đầu ra (hình. 5) cho thấy chúng tôi có một hàng tiêu đề duy nhất, tất cả các cột đã thay đổi thành loại dữ liệu phù hợp và không có giá trị nào bị thiếu trong toàn bộ khung dữ liệu

quả sung. 5

Để lưu trữ cái này dưới dạng tệp excel (hình. 6) có thể được lưu trữ và sau đó được sử dụng để phân tích và thao tác dữ liệu

import pandas as pd

url = 'https://www.monkeypox.global.health/'

df_list = pd.read_html(url)

monkeypox = df_list[0]

monkeypox.to_csv('monkeypox.csv')
2

quả sung. 6

Dữ liệu excel được trích xuất từ ​​trang web có thể được kết hợp với các tệp dữ liệu khác để tiếp tục khám phá và phân tích của bạn

Hy vọng bạn thích bài viết hiện tại và nó hữu ích. Hẹn gặp lại bạn trong lần tiếp theo. Đề xuất được chào đón

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter và LinkedIn. Tham gia cộng đồng của chúng tôi

Pandas có được sử dụng để quét web không?

Pandas giúp dễ dàng cạo bảng (thẻ . Sau khi lấy nó dưới dạng DataFrame, tất nhiên có thể thực hiện nhiều xử lý khác nhau và lưu nó dưới dạng tệp Excel hoặc tệp csv. Trong bài viết này, bạn sẽ học cách trích xuất một bảng từ bất kỳ trang web nào.

Quét web bằng Python có hợp pháp không?

Từ tất cả các cuộc thảo luận ở trên, có thể kết luận rằng Web Scraping thực sự không phải là bất hợp pháp nhưng người ta phải có đạo đức khi thực hiện . Nếu được thực hiện theo cách tốt, Quét web có thể giúp chúng tôi tận dụng tốt nhất trang web, ví dụ lớn nhất là Công cụ tìm kiếm của Google.

Làm cách nào để trích xuất dữ liệu từ trang web bằng gấu trúc?

Từng bước. .
Nhập thư viện
Nhận url
Biết HTML của url này
tìm bàn
Bảng HTML -----> Pandas DataFrame
Hoàn thành mã

Python có tốt nhất để quét web không?

Python là một lựa chọn tuyệt vời cho các nhà phát triển để xây dựng trình quét web vì nó bao gồm các thư viện gốc được thiết kế dành riêng cho việc quét web. Dễ hiểu- Đọc mã Python tương tự như đọc một câu lệnh tiếng Anh, làm cho cú pháp Python trở nên đơn giản để học.