使用Scrapy進行Python網頁抓取
在這篇文章中,我們將學習如何使用Python中可用的Scrapy模組進行網頁抓取技術。
什麼是網頁抓取?
網頁抓取用於藉助爬蟲/掃描器從網站獲取/獲取資料。對於那些不提供API功能的網頁,網頁抓取非常方便地提取資料。在Python中,可以使用Beautiful Soup、Scrapy和lxml等各種模組進行網頁抓取。
在這裡,我們將討論使用Scrapy模組進行網頁抓取。
為此,我們首先需要**安裝Scrapy**。
在終端或命令提示符中輸入
>>> pip install Scrapy
由於**Scrapy**是一個框架,我們需要執行一個初始化命令
>>> scrapy startproject tutpts
在這裡,我們建立一個**網頁爬蟲**來從網站提取資料。
為了構建爬蟲,我們建立一個名為**tutptscraw.py**的單獨指令碼。在這裡,我們宣告一個用於提取內容的類。在這裡,我們命名網頁爬蟲,並使用.requests從給定的URL獲取資料。
使用生成器函式,它會產生獲取的資料。
示例
import scrapy class ExtractUrls(scrapy.Spider): name = "fetch" # generator Function def start_requests(self): # enter the URL urls = ['https://tutorialspoint.tw/index.htm/', ] for url in urls: yield scrapy.Request(url = url, callback = self.parse)
這裡,使用request函式獲取封裝在錨標記中的所有資料。由於scrapy是一個小型框架,我們在scrapy shell中執行所有功能。
要啟用scrap shell,我們使用以下命令
scrapy shell https://tutorialspoint.tw/index.htm/
現在,我們使用選擇器(即CSS或xpath)從錨標記獲取資料。
response.css('a')
links = response.css('a').extract()為了獲取網頁上所有可用的連結,我們建立一個parse方法。Scrapy內部會繞過之前訪問過的URL,從而減少顯示結果時的渲染時間。
import scrapy
class ExtractUrls(scrapy.Spider):
name = "fetch"
# generator Function
def start_requests(self):
# enter the URL
urls = ['https://tutorialspoint.tw/index.htm/', ]
for url in urls:
yield scrapy.Request(url = url, callback = self.parse)
# Parse function
def parse(self, response):
title = response.css('title::text').extract_first()
# Get anchor tags
links = response.css('a::attr(href)').extract()
for link in links:
yield
{
'title': title,
'links': link
}
if 'tutorialspoint' in link:
yield scrapy.Request(url = link, callback = self.parse)結論
在本教程中,我們學習瞭如何在Python中使用Scrapy模組實現網頁爬蟲。
廣告
資料結構
網路
關係型資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP