摘要:寫在前面用寫爬蟲的人很多,的爬蟲框架也很多,諸如和,筆者還是筆記傾向于,本文就用寫一個(gè)小爬蟲。本文適用于有一定基礎(chǔ)的,并且對(duì)爬蟲有一定了解的開發(fā)者。
寫在前面
用python寫爬蟲的人很多,python的爬蟲框架也很多,諸如pyspider 和 scrapy,筆者還是筆記傾向于scrapy,本文就用python寫一個(gè)小爬蟲demo。
本文適用于有一定python基礎(chǔ)的,并且對(duì)爬蟲有一定了解的開發(fā)者。
檢查環(huán)境,python的版本為3.6.2,pip為9.0.1
F: echleepython>python --version Python 3.6.2 F: echleepython>pip --version pip 9.0.1 from d:program filespythonpython36-32libsite-packages (python 3.6)
安裝scrapy框架
F: echleepython>pip install scrapy Collecting scrapy Downloading Scrapy-1.4.0-py2.py3-none-any.whl (248kB) 100% |████████████████████████████████| 256kB 188kB/s // 漫長(zhǎng)的安裝過程 Successfully installed Twisted-17.9.0 scrapy-1.4.0
如果報(bào)錯(cuò):
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
請(qǐng)安裝Visual C++ 2015 Build Tools
http://landinghub.visualstudi...
安裝完成
F: echleepython>scrapy version Scrapy 1.4.0創(chuàng)建項(xiàng)目
F: echleepython>scrapy startproject scrapyDemo New Scrapy project "scrapyDemo", using template directory "d:program filespythonpython36-32libsite-packagesscrapy emplatesproject", created in: F: echleepythonscrapyDemo You can start your first spider with: cd scrapyDemo scrapy genspider example example.com
目錄結(jié)構(gòu)
scrapyDemo/ scrapy.cfg # 部署配置文件 scrapyDemo/ # python模塊 __init__.py items.py # 數(shù)據(jù)容器 pipelines.py # project pipelines file settings.py # 配置文件 spiders/ # Spider類定義了如何爬取某個(gè)(或某些)網(wǎng)站 __init__.py
創(chuàng)建執(zhí)行爬取的類ImoocSpider在 scrapyDemo/spiders中
# -*- coding: utf-8 -*- import scrapy from urllib import parse as urlparse # 慕課網(wǎng)爬取 class ImoocSpider(scrapy.Spider): # spider的名字定義了Scrapy如何定位(并初始化)spider,所以其必須是唯一的 name = "imooc" # URL列表 start_urls = ["http://www.imooc.com/course/list"] # 域名不在列表中的URL不會(huì)被爬取。 allowed_domains = ["www.imooc.com"] def parse(self, response): learn_nodes = response.css("a.course-card") for learn_node in learn_nodes : learn_url = learn_node.css("::attr(href)").extract_first() yield scrapy.Request(url=urlparse.urljoin(response.url,learn_url),callback=self.parse_learn) def parse_learn(self, response): title = response.xpath("http://h2[@class="l"]/text()").extract_first() content = response.xpath("http://div[@class="course-brief"]/p/text()").extract_first() url = response.url print ("標(biāo)題:" + title) print ("地址:" + url)開始爬取
F: echleepythonscrapyDemo>scrapy crawl imooc
如果出現(xiàn),則缺少win32api庫,選擇相應(yīng)的版本
下載地址:https://sourceforge.net/proje...
import win32api ModuleNotFoundError: No module named "win32api"大功告成
看到如下輸出,就說明爬取成功啦
F: echleepythonscrapyDemo>scrapy crawl imooc 2017-10-17 14:28:32 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: scrapyDemo) …… 2017-10-17 14:28:32 [scrapy.core.engine] INFO: Spider opened 2017-10-17 14:28:32 [scrapy.extensions.logstats] INFO: Crawled 0 pages (at 0 pages/min), scraped 0 items (at 0 items/min) 2017-10-17 14:28:32 [scrapy.extensions.telnet] DEBUG: Telnet console listening on 127.0.0.1:6023 2017-10-17 14:28:32 [scrapy.core.engine] DEBUG: Crawled (200)(referer: None) 2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200) (referer: None) 2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:集成MultiDex項(xiàng)目實(shí)戰(zhàn) 地址:http://www.imooc.com/learn/876 2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:阿里D2前端技術(shù)論壇——2016初心 地址:http://www.imooc.com/learn/893 2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:Hadoop進(jìn)階 地址:http://www.imooc.com/learn/890 標(biāo)題:Javascript實(shí)現(xiàn)二叉樹算法 地址:http://www.imooc.com/learn/888 2017-10-17 14:28:33 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:Fragment應(yīng)用上 地址:http://www.imooc.com/learn/894 2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:PHP-面向?qū)ο?地址:http://www.imooc.com/learn/887 2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:Sketch的基礎(chǔ)實(shí)例應(yīng)用 地址:http://www.imooc.com/learn/900 標(biāo)題:ElasticSearch入門 地址:http://www.imooc.com/learn/889 標(biāo)題:使用Google Guice實(shí)現(xiàn)依賴注入 地址:http://www.imooc.com/learn/901 2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:Docker入門 地址:http://www.imooc.com/learn/867 2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:Android圖表繪制之直方圖 地址:http://www.imooc.com/learn/878 2017-10-17 14:28:34 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:UI版式設(shè)計(jì) 地址:http://www.imooc.com/learn/892 2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:RxJava與RxAndroid基礎(chǔ)入門 地址:http://www.imooc.com/learn/877 標(biāo)題:iOS開發(fā)之Audio特輯 地址:http://www.imooc.com/learn/886 2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:基于Websocket的火拼俄羅斯(基礎(chǔ)) 地址:http://www.imooc.com/learn/861 2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 2017-10-17 14:28:35 [scrapy.core.engine] DEBUG: Crawled (200) (referer: http://www.imooc.com/course/list) 標(biāo)題:2017AWS 技術(shù)峰會(huì)——大數(shù)據(jù)技術(shù)專場(chǎng) 地址:http://www.imooc.com/learn/895 標(biāo)題:基于websocket的火拼俄羅斯(單機(jī)版) 地址:http://www.imooc.com/learn/882
原文 https://www.tech1024.cn/origi...
保存數(shù)據(jù)到mysql數(shù)據(jù)庫 https://www.tech1024.cn/origi...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/40948.html
摘要:時(shí)間永遠(yuǎn)都過得那么快,一晃從年注冊(cè),到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時(shí)候把他們整理一下了。那是因?yàn)槭詹貖A太亂,橡皮擦給設(shè)置私密了,不收拾不好看呀。 ...
摘要:坦克大戰(zhàn)上簡(jiǎn)介上的坦克大戰(zhàn)相信大家都玩過有逃學(xué)玩坦克的可以自己默默的扣一個(gè)了我們現(xiàn)在長(zhǎng)大了,學(xué)習(xí)游戲開發(fā)了。 寫在前面 上一篇(https://www.tech1024.cn/origi... )說了如何創(chuàng)建項(xiàng)目,并爬去網(wǎng)站內(nèi)容,下面我們說一下如何保存爬去到的數(shù)據(jù) 開始爬取 創(chuàng)建Spider,上一篇我們已經(jīng)創(chuàng)建了ImoocSpider,我們做一下修改,可以連續(xù)下一頁爬取。scrapyD...
摘要:用例運(yùn)行爬蟲命令基本語法是否需要項(xiàng)目存在當(dāng)然是不需要咯貌似這個(gè)命令是不依托一個(gè)項(xiàng)目而直接運(yùn)行一個(gè)爬蟲的命令。用例我終于寫完了,喜歡的就收藏推薦一下吧,這樣我就會(huì)更有動(dòng)力寫新的教程了,哇哈哈 0. 基本環(huán)境說明 本文截圖及運(yùn)行環(huán)境均在Win8上實(shí)現(xiàn)(是的,我放假回家了,家里的機(jī)器是win8的沒有辦法),但基本步驟與win 7環(huán)境基本相同。(應(yīng)該把~)ps:我后來換了臺(tái)win7的電腦,所...
摘要:幾個(gè)朋友對(duì)爬蟲很感興趣,他們也都是開發(fā)人員,一個(gè)開發(fā)兩個(gè)開發(fā),都沒有過項(xiàng)目開發(fā)經(jīng)驗(yàn),正好其中一個(gè)最近要爬一個(gè)網(wǎng)店的產(chǎn)品信息,所以希望我能拿這網(wǎng)站當(dāng)寫一個(gè)爬蟲來給他們參考學(xué)習(xí)。我們就在這個(gè)文件里開發(fā)爬蟲的相關(guān)邏輯。 幾個(gè)朋友對(duì)爬蟲很感興趣,他們也都是開發(fā)人員,一個(gè)PHP開發(fā)兩個(gè)JAVA開發(fā),都沒有過python項(xiàng)目開發(fā)經(jīng)驗(yàn),正好其中一個(gè)最近要爬一個(gè)網(wǎng)店的產(chǎn)品信息,所以希望我能拿這網(wǎng)站當(dāng)d...
摘要:所以如果對(duì)爬蟲有一定基礎(chǔ),上手框架是一種好的選擇。缺少包,使用安裝即可缺少包,使用安裝即可上一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)爬取相關(guān)庫的安裝的安裝下一篇文章網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)爬蟲框架的安裝 上一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---9、APP爬取相關(guān)庫的安裝:Appium的安裝下一篇文章:Python3網(wǎng)絡(luò)爬蟲實(shí)戰(zhàn)---11、爬蟲框架的安裝:ScrapySplash、ScrapyRedis 我們直接...
閱讀 797·2021-10-14 09:42
閱讀 2025·2021-09-22 15:04
閱讀 1666·2019-08-30 12:44
閱讀 2212·2019-08-29 13:29
閱讀 2789·2019-08-29 12:51
閱讀 605·2019-08-26 18:18
閱讀 777·2019-08-26 13:43
閱讀 2872·2019-08-26 13:38