Mô-đun Python cho Web Scraping
Trong chương này, chúng ta hãy tìm hiểu các mô-đun Python khác nhau mà chúng ta có thể sử dụng để quét web.
Môi trường phát triển Python sử dụng virtualenv
Virtualenv là một công cụ để tạo môi trường Python cô lập. Với sự trợ giúp của virtualenv, chúng tôi có thể tạo một thư mục chứa tất cả các tệp thực thi cần thiết để sử dụng các gói mà dự án Python của chúng tôi yêu cầu. Nó cũng cho phép chúng tôi thêm và sửa đổi các mô-đun Python mà không cần quyền truy cập vào cài đặt toàn cầu.
Bạn có thể sử dụng lệnh sau để cài đặt virtualenv -
(base) D:\ProgramData>pip install virtualenv
Collecting virtualenv
Downloading
https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c3
5d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl
(1.9MB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 1.9MB 86kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0
Bây giờ, chúng ta cần tạo một thư mục đại diện cho dự án với sự trợ giúp của lệnh sau:
(base) D:\ProgramData>mkdir webscrap
Bây giờ, hãy nhập vào thư mục đó với sự trợ giúp của lệnh sau:
(base) D:\ProgramData>cd webscrap
Bây giờ, chúng ta cần khởi tạo thư mục môi trường ảo mà chúng ta chọn như sau:
(base) D:\ProgramData\webscrap>virtualenv websc
Using base prefix 'd:\\programdata'
New python executable in D:\ProgramData\webscrap\websc\Scripts\python.exe
Installing setuptools, pip, wheel...done.
Bây giờ, kích hoạt môi trường ảo bằng lệnh dưới đây. Sau khi kích hoạt thành công, bạn sẽ thấy tên của nó ở bên trái trong ngoặc.
(base) D:\ProgramData\webscrap>websc\scripts\activate
Chúng tôi có thể cài đặt bất kỳ mô-đun nào trong môi trường này như sau:
(websc) (base) D:\ProgramData\webscrap>pip install requests
Collecting requests
Downloading
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (9
1kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 148kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Downloading
https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca
55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133
kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 369kB/s
Collecting certifi>=2017.4.17 (from requests)
Downloading
https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee6364
4d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl
(147kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 153kB 527kB/s
Collecting urllib3<1.24,>=1.21.1 (from requests)
Downloading
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133k
B)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 517kB/s
Collecting idna<2.8,>=2.5 (from requests)
Downloading
https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746
a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 61kB 339kB/s
Installing collected packages: chardet, certifi, urllib3, idna, requests
Successfully installed certifi-2018.8.24 chardet-3.0.4 idna-2.7 requests-2.19.1
urllib3-1.23
Để hủy kích hoạt môi trường ảo, chúng ta có thể sử dụng lệnh sau:
(websc) (base) D:\ProgramData\webscrap>deactivate
(base) D:\ProgramData\webscrap>
Bạn có thể thấy rằng (websc) đã bị vô hiệu hóa.
Mô-đun Python cho Web Scraping
Lướt web là quá trình xây dựng một tác nhân có thể trích xuất, phân tích cú pháp, tải xuống và sắp xếp thông tin hữu ích từ web một cách tự động. Nói cách khác, thay vì lưu dữ liệu từ các trang web theo cách thủ công, phần mềm quét web sẽ tự động tải và trích xuất dữ liệu từ nhiều trang web theo yêu cầu của chúng tôi.
Trong phần này, chúng ta sẽ thảo luận về các thư viện Python hữu ích cho việc tìm kiếm web.
Yêu cầu
Nó là một thư viện tìm kiếm web python đơn giản. Nó là một thư viện HTTP hiệu quả được sử dụng để truy cập các trang web. Với sự giúp đỡ củaRequests, chúng ta có thể lấy HTML thô của các trang web sau đó có thể được phân tích cú pháp để truy xuất dữ liệu. Trước khi sử dụngrequests, hãy cho chúng tôi hiểu cài đặt của nó.
Yêu cầu cài đặt
Chúng tôi có thể cài đặt nó trong môi trường ảo của chúng tôi hoặc trên cài đặt toàn cầu. Với sự giúp đỡ củapip , chúng ta có thể dễ dàng cài đặt nó như sau:
(base) D:\ProgramData> pip install requests
Collecting requests
Using cached
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl
Requirement already satisfied: idna<2.8,>=2.5 in d:\programdata\lib\sitepackages
(from requests) (2.6)
Requirement already satisfied: urllib3<1.24,>=1.21.1 in
d:\programdata\lib\site-packages (from requests) (1.22)
Requirement already satisfied: certifi>=2017.4.17 in d:\programdata\lib\sitepackages
(from requests) (2018.1.18)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in
d:\programdata\lib\site-packages (from requests) (3.0.4)
Installing collected packages: requests
Successfully installed requests-2.19.1
Thí dụ
Trong ví dụ này, chúng tôi đang thực hiện một yêu cầu GET HTTP cho một trang web. Đối với điều này, trước tiên chúng ta cần nhập thư viện yêu cầu như sau:
In [1]: import requests
Trong dòng mã sau đây, chúng tôi sử dụng các yêu cầu để thực hiện yêu cầu GET HTTP cho url: https://authoraditiagarwal.com/ bằng cách đưa ra yêu cầu GET.
In [2]: r = requests.get('https://authoraditiagarwal.com/')
Bây giờ chúng ta có thể truy xuất nội dung bằng cách sử dụng .text tài sản như sau -
In [5]: r.text[:200]
Quan sát rằng trong đầu ra sau đây, chúng tôi có 200 ký tự đầu tiên.
Out[5]: '<!DOCTYPE html>\n<html lang="en-US"\n\titemscope
\n\titemtype="http://schema.org/WebSite" \n\tprefix="og: http://ogp.me/ns#"
>\n<head>\n\t<meta charset
="UTF-8" />\n\t<meta http-equiv="X-UA-Compatible" content="IE'
Urllib3
Nó là một thư viện Python khác có thể được sử dụng để truy xuất dữ liệu từ các URL tương tự như requeststhư viện. Bạn có thể đọc thêm về điều này tại tài liệu kỹ thuật của nó tạihttps://urllib3.readthedocs.io/en/latest/.
Cài đặt Urllib3
Sử dụng pip lệnh, chúng ta có thể cài đặt urllib3 trong môi trường ảo của chúng tôi hoặc trong cài đặt toàn cầu.
(base) D:\ProgramData>pip install urllib3
Collecting urllib3
Using cached
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl
Installing collected packages: urllib3
Successfully installed urllib3-1.23
Ví dụ: Scraping bằng Urllib3 và BeautifulSoup
Trong ví dụ sau, chúng tôi đang tìm kiếm trang web bằng cách sử dụng Urllib3 và BeautifulSoup. Chúng tôi đang sử dụngUrllib3tại vị trí của thư viện yêu cầu để lấy dữ liệu thô (HTML) từ trang web. Sau đó, chúng tôi đang sử dụngBeautifulSoup để phân tích cú pháp dữ liệu HTML đó.
import urllib3
from bs4 import BeautifulSoup
http = urllib3.PoolManager()
r = http.request('GET', 'https://authoraditiagarwal.com')
soup = BeautifulSoup(r.data, 'lxml')
print (soup.title)
print (soup.title.text)
Đây là đầu ra bạn sẽ quan sát được khi chạy mã này -
<title>Learn and Grow with Aditi Agarwal</title>
Learn and Grow with Aditi Agarwal
Selen
Nó là một bộ kiểm tra tự động mã nguồn mở cho các ứng dụng web trên các trình duyệt và nền tảng khác nhau. Nó không phải là một công cụ đơn lẻ mà là một bộ phần mềm. Chúng tôi có các liên kết selen cho Python, Java, C #, Ruby và JavaScript. Ở đây, chúng ta sẽ thực hiện thao tác quét web bằng cách sử dụng selen và các liên kết Python của nó. Bạn có thể tìm hiểu thêm về Selenium với Java trên liên kết Selenium .
Các liên kết Python của Selenium cung cấp một API thuận tiện để truy cập Selenium WebDrivers như Firefox, IE, Chrome, Remote, v.v. Các phiên bản Python được hỗ trợ hiện tại là 2.7, 3.5 trở lên.
Cài đặt Selenium
Sử dụng pip lệnh, chúng ta có thể cài đặt urllib3 trong môi trường ảo của chúng tôi hoặc trong cài đặt toàn cầu.
pip install selenium
Vì selen yêu cầu trình điều khiển để giao diện với trình duyệt đã chọn, chúng tôi cần tải xuống. Bảng sau đây cho thấy các trình duyệt khác nhau và các liên kết tải xuống giống nhau của chúng.
Chrome |
https://sites.google.com/a/chromium.org/ |
Edge |
https://developer.microsoft.com/ |
Firefox |
https://github.com/ |
Safari |
https://webkit.org/ |
Thí dụ
Ví dụ này cho thấy việc tìm kiếm trên web bằng cách sử dụng selen. Nó cũng có thể được sử dụng để thử nghiệm được gọi là thử nghiệm selen.
Sau khi tải xuống trình điều khiển cụ thể cho phiên bản trình duyệt được chỉ định, chúng ta cần lập trình bằng Python.
Đầu tiên, cần nhập webdriver từ selen như sau -
from selenium import webdriver
Bây giờ, cung cấp đường dẫn của trình điều khiển web mà chúng tôi đã tải xuống theo yêu cầu của chúng tôi -
path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
browser = webdriver.Chrome(executable_path = path)
Bây giờ, hãy cung cấp url mà chúng tôi muốn mở trong trình duyệt web đó hiện được điều khiển bởi tập lệnh Python của chúng tôi.
browser.get('https://authoraditiagarwal.com/leadershipmanagement')
Chúng tôi cũng có thể loại bỏ một phần tử cụ thể bằng cách cung cấp xpath như được cung cấp trong lxml.
browser.find_element_by_xpath('/html/body').click()
Bạn có thể kiểm tra trình duyệt, được điều khiển bởi tập lệnh Python, để biết đầu ra.
Trị liệu
Scrapy là một khung thu thập dữ liệu web mã nguồn mở, nhanh chóng được viết bằng Python, được sử dụng để trích xuất dữ liệu từ trang web với sự trợ giúp của các bộ chọn dựa trên XPath. Scrapy được phát hành lần đầu tiên vào ngày 26 tháng 6 năm 2008 được cấp phép theo BSD, với mốc 1.0 được phát hành vào tháng 6 năm 2015. Nó cung cấp cho chúng tôi tất cả các công cụ chúng tôi cần để trích xuất, xử lý và cấu trúc dữ liệu từ các trang web.
Cài đặt Scrapy
Sử dụng pip lệnh, chúng ta có thể cài đặt urllib3 trong môi trường ảo của chúng tôi hoặc trong cài đặt toàn cầu.
pip install scrapy
Để biết thêm chi tiết nghiên cứu về Scrapy, bạn có thể vào liên kết Scrapy