這段時間一直在學爬蟲,做了一些簡單的專案,爬取資料的過程中,被封過ip,需要翻牆,為了大規模的資料採集,開始學習scrapy框架。參照的是靜覓大神的《python3網路爬蟲開發實戰》 本次爬取的**是scrapy官網
建議使用anaconda的一鍵安裝,我的電腦上同時有anaconda和pycham,一般pycam使用的anaconda的環境,anaconda的prompt輸入命令 conda install scrapy
建立專案
專案檔案可以直接用scrapy命令生成,scrapy startproject tutorial(加檔名)。專案生成之後,會有以下檔案目錄。
建立spider
在命令列建立spider,執行命令如下:
cd tutorial(對應專案名)
scrapy genspider quotes(spider的名稱) quotes.toscrape.com(**網域名稱)
執行之後,spiders資料夾中多了乙個quotes.py,這個檔案就是剛剛建立的spider。
parse是spider的乙個方法,預設情況下,被呼叫時start_urls裡面的鏈結完全請求,返回的相應作為唯一的引數傳遞給函式。該方法複雜返回響應,提取資料或者進一步處理請求。
解析response
parse()的方法引數response是start_urls的鏈結爬取後的結果,在parse()方法中。可以直接對response變數中包含的內容進行解析,比如解析源**,或者根據網頁中的鏈結得到下乙個請求。
import scrapy
from tutorial.items import quoteitem
class quotesspider(scrapy.spider):
name = 'quotes'
allowed_domains = ['quotes.toscrape.com']
start_urls = ['/']
def parse(self, response):
quotes = response.css(".quote")
for quote in quotes:
item = quoteitem()
text = quote.css(".text::text").extract_first()
author = quote.css(".author::text").extract_first()
tags = quote.css(".tags .tag::text").extract()
item["text"] = text
item["author"] = author
item["tags"] = tags
yield item
next = response.css(".pager .next a::attr('href')").extract_first()
url = response.urljoin(next)
yield scrapy.request(url = url,callback=self.parse)
Python爬蟲框架scrapy入門
寫好,程式開始執行.spider 老大要我處理 x.com。引擎 你把第乙個需要處理的url給我吧。spider 給你,第乙個url是 x.com。引擎 hi!排程器,我這有request請求你幫我排序入隊一下。排程器 好的,正在處理你等一下。引擎 hi!排程器,把你處理好的request請求給我。...
scrapy爬蟲框架(一) scrapy框架簡介
開啟命令列輸入如下命令 pip install scrapy安裝完成後,python會自動將 scrapy命令新增到環境變數中去,這時我們就可以使用 scrapy命令來建立我們的第乙個 scrapy專案了。開啟命令列,輸入如下命令 scrapy startproject yourproject這裡的...
爬蟲入門六(非同步的爬蟲框架scrapy)
非同步的爬蟲框架。高效能的資料解析,持久化儲存,全棧資料的爬取,中介軟體,分布式 框架 就是乙個整合好了各種功能且具有很強通用性的乙個專案模板。linux pip3 install scrapy windows a.pip3 install wheel d.pip3 install pywin32 ...