Web scraper

      16

Đặt vấn đề

khi nghiên cứu, học tập về khoa học so với dữ liệu, bằng hữu sẽ đề xuất nguồn dữ liệu rất đầy đủ nhằm thực hành. thường thì đồng đội đang tìm kiếm bên trên Internet hồ hết tập tin CSV hoặc các trang share API nhằm bọn họ truy vấn. Tuy nhiên thỉnh thoảng những tài liệu đồng đội mong mỏi lại chỉ cần nhỏng 1 phần của website. Lúc đó bọn họ sẽ buộc phải cho những chuyên môn rút trích văn bản trang web để lấy tài liệu từ bỏ trang web mình yêu cầu.

Bạn đang xem: Web scraper

OK chính là thời điểm họ yêu cầu hiểu phần tiếp theo sau dưới đây. Tuy nhiên để ý nội dung bài viết này các bạn phải bao gồm kỹ năng và kiến thức cơ bạn dạng về HTML, CSS đang nhé.


Trước hết, họ phải thiết đặt Python thả bên trên máy vi tính. Hoặc chúng ta có thể áp dụng Jupyter Notebook thì sẽ càng tiện thể. Trong bài này mình ko kể lại phương pháp setup hai mẫu bên trên nữa.

Bài này thực hành thực tế cách crawl tài liệu phlặng tự IMDB


*

1. Chuẩn bị thư viện

Chúng ta vẫn thực hiện thư viện request để mang toàn bộ tài liệu 1 trang web về, tiếp đến thực hiện Beautifulsoup để định hình, chuẩn hóa với trích xuất những văn bản mình đề nghị. Cuối thuộc là áp dụng pandas nhằm trình bày tài liệu và giữ ra tập tin csv Giao hàng đến công nghệ tài liệu.

Xem thêm: Xem 37 Nốt Ruồi Trên Cơ Thể Nhân Tướng Học Biết Ngay Tính Cách

Ta thiết lập thỏng viện để sử dụng cho bài xích này bởi lệnh sau:

pip install pandas requests bs4

2. Import thỏng viện

Sau Lúc cài đặt ta import thỏng viện nhằm sử dụng

import bs4import pandasimport requests

3. scrape dữ liệu của IMDb

Ta áp dụng hàm request.get để lấy dữ liệu tự trang IMDb về. Tlỗi viện request sẽ tạo một thử dùng GET mang lại sever web để cài đặt xuống văn bản HTML của một website nhất định cho họ.

url = 'https://www.imdb.com/search/title/?count=100&groups=top_1000&sort=user_rating%27' # chúng ta thay liên kết của trang bản thân cần mang tài liệu trên đâydef get_page_content(url): page = requests.get(url,headers="Accept-Language":"en-US") return bs4.BeautifulSoup(page.text,"html.parser")soup = get_page_content(url)

*

*

Sau khi hoàn toàn, họ sẽ có được một đối tượng người sử dụng Response. Đối tượng này còn có thuộc tính status_code để bằng hữu khám nghiệm coi bài toán tải về tài liệu thành công xuất sắc hay là không.

Khi mã status_code trả về hiệu quả 200 thì anh em rất có thể in ra câu chữ HTML bằng phương pháp sử dụng nằm trong tính content

4. Trích xuất từng tài liệu thô

Ta đã trích xuất từng dữ liệu thô của trang như: tên phyên, năm xây dựng, điểm đánh giá, số lượt bình chọn…

Việc bọn họ mong mang trường làm sao trong số dữ liệu crawl về được thì các bạn bè chỉ cần chuột buộc phải vào website → chọn Inspect element. Sau đó tìm đến ở trong tính khớp ứng.


*

*

Phần crawl data runtime, certificate cùng genre rất có thể ko lâu dài yêu cầu đang dẫn đến lỗi ko sản xuất đc pandas DataFrame. Mình góp code chỉnh lại như sau nhằm bảo đảm an toàn data crawl đến từng trường ko bị lộn:

certificate = <>runtime = <>genre = <>for movie in soup.findAll('p',class_='text-muted'):if ((not movie.findAll('span',class_='certificate')) &(not movie.findAll('span',class_='runtime')) &(not movie.findAll('span',class_='genre'))):continuecertificate.append('' if not else<0>)runtime.append('' if not else<0>)genre.append('' if not else<0>)— Updated: Đoạn code tiếp sau đây có thể ko chuyển động trong không ít tình huống, vậy hãy sử dụng đoạn code trên. Thanks

movies = soup.findAll('h3', class_='lister-item-header')titles = release = rate = movie.find('div', 'inline-blochồng ratings-imdb-rating')<'data-value'>certificate = runtime = genre = rates = for rate in soup.findAll('div',class_='inline-bloông xã ratings-imdb-rating')>

5. Trình bày tài liệu với Pandas

Chúng ta sử dụng pandas để biểu hiện tài liệu chú ý mang đến trực quan liêu. Đơn giản chỉ cần pandas.DataFrame() là đủ

pandas.DataFrame('titles':titles, 'release':release, 'certificate':certificate, 'runtime':runtime, 'genre': genre, 'rates': rates)
Hy vọng đông đảo chiếc viết bên trên đây để giúp được một số trong những bạn vào bài toán tiếp cận Pyeo hẹp và tích lũy dữ liệu dễ dàng.


Đang nghiên cứu về Pykhông lớn và Machine Learning. Rất ao ước được Bàn bạc thêm với các bạn cùng lĩnh vực