Trang web cơ sở dữ liệu Pokemon
Bắt đầu, chúng tôi sẽ thử lấy cơ sở dữ liệu Pokemon trực tuyến [//pokemondb.net/pokedex/all].
Kiểm tra HTML
Trước khi tiến về phía trước, chúng ta cần hiểu cấu trúc của trang web mà chúng ta muốn cạo. Điều này có thể được thực hiện bằng cách nhấp vào nhấp chuột phải vào phần tử mà chúng tôi muốn cạo và sau đó nhấn vào kiểm tra. Với mục đích của chúng tôi, chúng tôi sẽ kiểm tra các yếu tố của bảng, như được minh họa dưới đây:right-clicking the element we wish to scrape and then hitting “Inspect”. For our purpose, we will inspect the elements of the table, as illustrated below:
Kiểm tra ô của bảng HTMLDựa trên mã HTML, dữ liệu được lưu trữ sau ... đây là thông tin hàng. Mỗi hàng có một thông tin tương ứng .. hoặc dữ liệu di động... . This is the row information. Each row has a corresponding .. or cell data information.
Nhập thư viện
Chúng tôi sẽ cần các yêu cầu để có được nội dung HTML của trang web và lxml.html để phân tích các trường liên quan. Cuối cùng, chúng tôi sẽ lưu trữ dữ liệu trên một khung dữ liệu gấu trúc.requests for getting the HTML contents of the website and lxml.html for parsing the relevant fields. Finally, we will store the data on a Pandas Dataframe.
import requests
import lxml.html as lh
import pandas as pd
Tế bào bảng cạo
Mã dưới đây cho phép chúng tôi lấy dữ liệu Pokemon StatS của bảng HTML.
url='//pokemondb.net/pokedex/all'#Create a handle, page, to handle the contents of the website
page = requests.get[url]#Store the contents of the website under doc
doc = lh.fromstring[page.content]#Parse data that are stored between.. of HTML
tr_elements = doc.xpath['//tr']
Để kiểm tra tỉnh táo, đảm bảo rằng tất cả các hàng có cùng chiều rộng. Nếu không, có lẽ chúng ta có một cái gì đó không chỉ là bảng.
#Check the length of the first 12 rows
[len[T] for T in tr_elements[:12]]
Đầu ra: [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10] [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
Có vẻ như tất cả các hàng của chúng tôi có chính xác 10 cột. Điều này có nghĩa là tất cả các dữ liệu được thu thập trên tr_elements là từ bảng.
Tiêu đề bảng phân tích cú pháp
Tiếp theo, hãy để phân tích cú pháp hàng đầu tiên là tiêu đề của chúng tôi.
tr_elements = doc.xpath['//tr']#Create empty list
col=[]
i=0#For each row, store each first element [header] and an empty list
for t in tr_elements[0]:
i+=1
name=t.text_content[]
print '%d:"%s"'%[i,name]
col.append[[name,[]]]
Đầu ra: 1: Tiết##2 ATK 9 9: SP sp. Def ”10: tốc độ”
1:”#”
2:”Name”
3:”Type”
4:”Total”
5:”HP”
6:”Attack”
7:”Defense”
8:”Sp. Atk”
9:”Sp. Def”
10:”Speed”
Tạo gấu trúc DataFrame
Mỗi tiêu đề được gắn vào một tuple cùng với một danh sách trống.
#Since out first row is the header, data is stored on the second row onwards
for j in range[1,len[tr_elements]]:
#T is our j'th row
T=tr_elements[j] #If row is not of size 10, the //tr data is not from our table
if len[T]!=10:
break
#i is the index of our column
i=0
#Iterate through each element of the row
for t in T.iterchildren[]:
data=t.text_content[]
#Check if row is empty
if i>0:
#Convert any numerical value to integers
try:
data=int[data]
except:
pass
#Append the data to the empty list of the i'th column
col[i][1].append[data]
#Increment i for the next column
i+=1
Chỉ cần chắc chắn, hãy để kiểm tra độ dài của mỗi cột. Lý tưởng nhất, tất cả họ nên giống nhau.
[len[C] for [title,C] in col]
Đầu ra: [800, 800, 800, 800, 800, 800, 800, 800, 800, 800] [800, 800, 800, 800, 800, 800, 800, 800, 800, 800]
Hoàn hảo! Điều này cho thấy mỗi 10 cột của chúng tôi có chính xác 800 giá trị.
Bây giờ chúng tôi đã sẵn sàng để tạo DataFrame:
Dict={title:column for [title,column] in col}
df=pd.DataFrame[Dict]
Nhìn vào 5 ô hàng đầu trên DataFrame:
df.head[]
Ở đó bạn có nó! Bây giờ bạn có một khung dữ liệu gấu trúc với tất cả các thông tin cần thiết!
thông tin thêm
Hướng dẫn này là một tập hợp con của chuỗi 3 phần:
Các loạt phim:
- Cạo một trang web Pokemon
- Phân tích dữ liệu
- Xây dựng Gui Pokedex
Là một nhà khoa học dữ liệu, dữ liệu là thực phẩm của chúng tôi và vì vậy chúng tôi cần tìm dữ liệu đó bất cứ nơi nào có thể. Hầu hết các lần, chúng tôi sẽ thấy một cái gì đó thú vị trên một trang web và muốn làm việc với nó, nếu bạn đã từng có cảm giác đó, thì đây là dành cho bạn. Hôm nay, chúng tôi sẽ loại bỏ trang web của NCDC, [Trung tâm kiểm soát dịch bệnh] trên Covid-19. Nhấn vào đây để truy cập trang web.
Bước 1: Tải xuống Python hoặc Anaconda
Nếu bạn ở đây, thì tôi sẽ cho rằng bạn đã cài đặt Python, nếu không, hãy kiểm tra ở đây. Nếu bạn không chắc chắn, thì bạn nên đơn giản mở dấu nhắc lệnh của mình, điều mà bạn có thể dễ dàng thực hiện bằng cách gõ 'CMD' vào khu vực tìm kiếm và bùng nổ, nó sẽ đưa ra một bật ra, sau đó bạn gõ 'python', nếu bạn Đã cài đặt Python, nó sẽ hiển thị một cái gì đó như thế này;
Bước 2: Cài đặt các thư viện cần thiết
Để thực hiện quét web, một số thư viện nhất định cần được cài đặt và công việc của bạn càng phức tạp, bạn càng có nhiều khả năng các thư viện khác, tuy nhiên, về cơ bản, bạn cần súp đẹp, yêu cầu và có thể bất kỳ trình phân tích cú pháp nào bạn chọn. Bạn có thể dễ dàng sử dụng Cài đặt PIP cho nó. Nó cho thấy một cái gì đó như thế này;
Bước 3: Mở sổ ghi chép Jupyter và bắt đầu bằng cách nhập tất cả các thư viện cần thiết ngay bây giờ
Bước 4: Tải lên URL của trang web
Bước 5: Nhận nội dung được tải lên. Ở đây, những gì bạn đang cố gắng làm là làm cho Jupyter Notebook có thể đọc qua trang URL mà bạn đã tải xuống. Đây là nơi thư viện xinh đẹp của bạn đến chơi. Những gì súp đẹp làm là có được nội dung của trang đó và phân tích thông qua nó; Vâng, và nhiều hơn nữa !!
Bước 6: Kiểm tra URL để chắc chắn về những gì bạn cần cạo và cách nó được mã hóa trong HTML. Đối với trang web covid này, chúng tôi dự định sẽ cạo bảng, do đó, tôi thú vị hơn trong việc mã hóa cho bảng. Để làm điều này, bạn đã nhấp chuột phải vào bất kỳ phần nào của trang web và nhấp vào kiểm tra, sau đó bạn sẽ quét qua để biết mã nào cho phần quan trọng bạn cần. Đối với bảng của chúng tôi, nó được coi là bảng. Nếu bạn không quen thuộc với bảng HTML, hãy đọc ví dụ này.
Phần được tô sáng ở bên phải cho thấy từ khóa là bảngBây giờ chúng tôi đã nhận ra rằng từ khóa là ‘bảng, chúng tôi sử dụng máy tính xách tay Jupyter để tìm từ khóa đó.
Điều này cho thấy tất cả các nội dung của bảng cũng như những gì chúng được mã hóa vớiBước 7: Trong mã nguồn HTML, mỗi hàng được mã hóa bằng 'tr', mỗi tiêu đề với 'thứ' và mỗi điểm dữ liệu với 'TD', thật thú vị khi lưu ý rằng cả th và TD thường có thể được tìm thấy trong một hàng, do đó, điều tiếp theo sẽ là để có được điều đó;
Bước 8: Bây giờ chúng tôi đã nhận được tất cả các nội dung từ trang web trên sổ ghi chép Jupyter của chúng tôi, sau đó chúng tôi có thể quyết định chuyển đổi nó thành CSV hoặc bất kỳ định dạng tệp nào khác mà chúng tôi chọn.
Và Voila! Bạn có một tệp CSV với bảng mà bạn vừa cạo. Chà, cũng hạnh phúc cào.