第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁(yè) 慕課教程 Scrapy 入門教程 Scrapy 入門教程 一個(gè)簡(jiǎn)單的爬蟲(chóng)實(shí)例:互動(dòng)出版網(wǎng)爬蟲(chóng)

一個(gè)簡(jiǎn)單的爬蟲(chóng)實(shí)例

今天我們來(lái)簡(jiǎn)單完成一個(gè)網(wǎng)站爬蟲(chóng)例子,體驗(yàn)下基本的爬蟲(chóng)工作流程。在有這個(gè)體驗(yàn)之后,才能更好地理解框架的重要性。

1. 網(wǎng)絡(luò)爬蟲(chóng)之網(wǎng)站分析

這一節(jié)我們來(lái)爬取一個(gè)圖書網(wǎng)站:互動(dòng)出版網(wǎng)。之所以選擇這個(gè)網(wǎng)站,主要是它的數(shù)據(jù)比較好爬取,沒(méi)有反爬蟲(chóng)機(jī)制,且網(wǎng)站的結(jié)構(gòu)也不復(fù)雜,比較適合作為菜鳥(niǎo)進(jìn)行練手。我們首先來(lái)分析網(wǎng)站及其相關(guān)的 HTML 元素,確定要爬取的內(nèi)容。

互動(dòng)出版網(wǎng)的網(wǎng)站首頁(yè)如下:

圖片描述

互動(dòng)出版網(wǎng)首頁(yè)

可以看到,這個(gè)網(wǎng)站沒(méi)有用到 https,依舊使用的是 http 協(xié)議,這個(gè)網(wǎng)站是極不安全的。我們現(xiàn)在要爬取的是這個(gè)網(wǎng)站的計(jì)算機(jī)類的圖書,我們可以點(diǎn)擊全部圖書分類那里,得到所有圖書的分類情況。
圖片描述

互動(dòng)出版網(wǎng)全部圖書分類

通過(guò) F12 可以看到,每個(gè)計(jì)算機(jī)的分類對(duì)應(yīng)著一個(gè)鏈接。我們點(diǎn)進(jìn)去看就會(huì)得到對(duì)應(yīng)分類下的圖書列表,還帶著分頁(yè)信息:

圖片描述

互動(dòng)出版網(wǎng)計(jì)算機(jī)分類圖書列表

從這個(gè)頁(yè)面中,我們可以分析到很多,首先對(duì)于一個(gè)圖書信息,我們想要提取的數(shù)據(jù)有:

  • 圖書標(biāo)題;
  • 圖書作者;
  • 出版社;
  • ISBN;
  • 出版時(shí)間;
  • 圖書價(jià)格。

至于圖書的詳情頁(yè)面我們就不再進(jìn)去看了,詳情頁(yè)中能到到更多信息,比如總頁(yè)數(shù)、圖書簡(jiǎn)介、目錄等等。此外,這里有一個(gè)分頁(yè)信息,通過(guò)多次點(diǎn)擊可以發(fā)現(xiàn),只是前面的 url 中的一個(gè)數(shù)字發(fā)生了變化,因此我們可以直接構(gòu)造出相應(yīng)頁(yè)數(shù)的 url 請(qǐng)求,獲取其他頁(yè)的圖書列表、還等什么呢?開(kāi)始激動(dòng)人心的圖書數(shù)據(jù)爬取流程吧?。?!

2. 網(wǎng)絡(luò)爬蟲(chóng)之爬取流程

根據(jù)上面的分析,我們來(lái)設(shè)計(jì)相應(yīng)的爬取流程,總體上有如下幾個(gè)步驟:

獲取計(jì)算機(jī)圖書下的分類列表,包括對(duì)應(yīng)的 URL。我們可以實(shí)現(xiàn)一個(gè)函數(shù)專門請(qǐng)求分類頁(yè)面,然后提取相應(yīng)的 URL 列表:

圖片描述

分類列表的HTML元素

專門完成一個(gè)函數(shù),讀取計(jì)算機(jī)分類下的圖書列表。通過(guò)不斷的分頁(yè)查詢將這個(gè)分類下的所有圖書信息全部抓取到。

http://product.china-pub.com/cache/browse2/59/{頁(yè)號(hào)}_1_59-{分類編號(hào)}_0.html

分類編號(hào)不用管,我們會(huì)自行提取 URL。而對(duì)于請(qǐng)求的頁(yè)號(hào),可以自行設(shè)定,從1開(kāi)始請(qǐng)求,每次加1,直到請(qǐng)求的 URL 返回 404 時(shí),表明這個(gè)分類下的圖書列表請(qǐng)求完畢,然后就可以進(jìn)行下一個(gè)分類的請(qǐng)求了。

圖片描述

請(qǐng)求不存在的頁(yè)號(hào)

最后完成一個(gè)簡(jiǎn)單的保存函數(shù),保存采集到的數(shù)據(jù)庫(kù)。這個(gè)就比較簡(jiǎn)單了,我們直接將采集到的圖書信息成批地保存到 MongoDB 數(shù)據(jù)庫(kù)中。

3. 圖書爬蟲(chóng)之代碼實(shí)現(xiàn)

根據(jù)上面的分析,我們來(lái)實(shí)現(xiàn)相應(yīng)的代碼。首先是完成獲取計(jì)算機(jī)的所有分類以及相應(yīng)的 URL 地址:

def get_all_computer_book_urls(page_url):
    """
    獲取所有計(jì)算機(jī)分類圖書的url地址
    :return:
    """
    response = requests.get(url=page_url, headers=headers)
    if response.status_code != 200:
        return [], []
    response.encoding = 'gbk'
    tree = etree.fromstring(response.text, etree.HTMLParser())
    # 提取計(jì)算機(jī)分類的文本列表
    c = tree.xpath("http://div[@id='wrap']/ul[1]/li[@class='li']/a/text()")
    # 提取計(jì)算機(jī)分類的url列表
    u = tree.xpath("http://div[@id='wrap']/ul[1]/li[@class='li']/a/@href")
    return c, u

我們簡(jiǎn)單測(cè)試下這個(gè)函數(shù):

[store@server2 chap06]$ python3
Python 3.6.8 (default, Apr  2 2020, 13:34:55) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from china_pub_crawler import get_all_computer_book_urls
>>> get_all_computer_book_urls('http://www.china-pub.com/Browse/')
(['IT圖書網(wǎng)絡(luò)出版 [59-00]', '計(jì)算機(jī)科學(xué)理論與基礎(chǔ)知識(shí) [59-01]', '計(jì)算機(jī)組織與體系結(jié)構(gòu) [59-02]', '計(jì)算機(jī)網(wǎng)絡(luò) [59-03]', '安全 [59-04]', '軟件與程序設(shè)計(jì) [59-05]', '軟件工程及軟件方法學(xué) [59-06]', '操作系統(tǒng) [59-07]', '數(shù)據(jù)庫(kù) [59-08]', '硬件與維護(hù) [59-09]', '圖形圖像、多媒體、網(wǎng)頁(yè)制作 [59-10]', '中文信息處理 [59-11]', '計(jì)算機(jī)輔助設(shè)計(jì)與工程計(jì)算 [59-12]', '辦公軟件 [59-13]', '專用軟件 [59-14]', '人工智能 [59-15]', '考試認(rèn)證 [59-16]', '工具書 [59-17]', '計(jì)算機(jī)控制與仿真 [59-18]', '信息系統(tǒng) [59-19]', '電子商務(wù)與計(jì)算機(jī)文化 [59-20]', '電子工程 [59-21]', '期刊 [59-22]', '游戲 [59-26]', 'IT服務(wù)管理 [59-27]', '計(jì)算機(jī)文化用品 [59-80]'], ['http://product.china-pub.com/cache/browse2/59/1_1_59-00_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-01_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-02_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-03_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-04_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-05_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-06_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-07_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-08_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-09_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-10_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-11_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-12_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-13_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-14_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-15_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-16_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-17_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-18_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-19_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-20_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-21_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-22_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-26_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-27_0.html', 'http://product.china-pub.com/cache/browse2/59/1_1_59-80_0.html'])

可以看到這個(gè)函數(shù)已經(jīng)實(shí)現(xiàn)了我們想要的結(jié)果。接下來(lái)我們要完成一個(gè)函數(shù)來(lái)獲取對(duì)應(yīng)分類下的所有圖書信息,不過(guò)在此之前,我們需要先完成解析單個(gè)圖書列表頁(yè)面的方法:

def parse_books_page(html_data):
    books = []
    tree = etree.fromstring(html_data, etree.HTMLParser())
    result_tree = tree.xpath("http://div[@class='search_result']/table/tr/td[2]/ul")
    for result in result_tree:
        try:
            book_info = {}
            book_info['title'] = result.xpath("./li[@class='result_name']/a/text()")[0]
            book_info['book_url'] = result.xpath("./li[@class='result_name']/a/@href")[0]
            info = result.xpath("./li[2]/text()")[0]
            book_info['author'] = info.split('|')[0].strip()
            book_info['publisher'] = info.split('|')[1].strip()
            book_info['isbn'] = info.split('|')[2].strip()
            book_info['publish_date'] = info.split('|')[3].strip()
            book_info['vip_price'] = result.xpath("./li[@class='result_book']/ul/li[@class='book_dis']/text()")[0]
            book_info['price'] = result.xpath("./li[@class='result_book']/ul/li[@class='book_price']/text()")[0]
            # print(f'解析出的圖書信息為:{book_info}')
            books.append(book_info)
        except Exception as e:
            print("解析數(shù)據(jù)出現(xiàn)異常,忽略!")
    return books

上面的函數(shù)主要解析的是一頁(yè)圖書列表數(shù)據(jù),同樣基于 xpath 定位相應(yīng)的元素,然后提取我們想要的數(shù)據(jù)。其中由于部分信息合在一起,我們?cè)谔崛?shù)據(jù)后還要做相關(guān)的處理,分別提取對(duì)應(yīng)的信息。我們可以從網(wǎng)頁(yè)中直接樣 HTML 拷貝下來(lái),然后對(duì)該函數(shù)進(jìn)行測(cè)試:

圖片描述

提取圖書列表的網(wǎng)頁(yè)數(shù)據(jù)

我們把保存的網(wǎng)頁(yè)命名為 test.html,放到與該代碼同級(jí)的目錄下,然后進(jìn)入命令行操作:

>>> from china_pub_crawler import parse_books_page
>>> f = open('test.html', 'r+')
>>> html_content = f.read()
>>> parse_books_page(html_content)
[{'title': '(特價(jià)書)零基礎(chǔ)學(xué)ASP.NET 3.5', 'book_url': 'http://product.china-pub.com/216269', 'author': '王向軍;王欣惠 (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111261414', 'publish_date': '2009-02-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥58.00'}, {'title': 'Objective-C 2.0 Mac和iOS開(kāi)發(fā)實(shí)踐指南(原書第2版)', 'book_url': 'http://product.china-pub.com/3770704', 'author': '(美)Robert Clair (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111484561', 'publish_date': '2015-01-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥79.00'}, {'title': '(特價(jià)書)ASP.NET 3.5實(shí)例精通', 'book_url': 'http://product.china-pub.com/216272', 'author': '王院峰 (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111259794', 'publish_date': '2009-01-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥55.00'}, {'title': '(特價(jià)書)CSS+HTML語(yǔ)法與范例詳解詞典', 'book_url': 'http://product.china-pub.com/216275', 'author': '符旭凌 (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111263647', 'publish_date': '2009-02-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥39.00'}, {'title': '(特價(jià)書)Java ME 游戲編程(原書第2版)', 'book_url': 'http://product.china-pub.com/216296', 'author': '(美)Martin J. Wells; John P. Flynt (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111264941', 'publish_date': '2009-03-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥49.00'}, {'title': '(特價(jià)書)Visual Basic實(shí)例精通', 'book_url': 'http://product.china-pub.com/216304', 'author': '柴相花 (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111263296', 'publish_date': '2009-04-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥59.80'}, {'title': '高性能電子商務(wù)平臺(tái)構(gòu)建:架構(gòu)、設(shè)計(jì)與開(kāi)發(fā)[按需印刷]', 'book_url': 'http://product.china-pub.com/3770743', 'author': 'ShopNC產(chǎn)品部 (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111485643', 'publish_date': '2015-01-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥79.00'}, {'title': '[套裝書]Java核心技術(shù) 卷Ⅰ 基礎(chǔ)知識(shí)(原書第10版)+Java核心技術(shù) 卷Ⅱ高級(jí)特性(原書第10版)', 'book_url': 'http://product.china-pub.com/7008447', 'author': '(美)凱S.霍斯特曼(Cay S. Horstmann)????(美)凱S. 霍斯特曼(Cay S. Horstmann) (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787007008447', 'publish_date': '2017-08-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥258.00'}, {'title': '(特價(jià)書)Dojo構(gòu)建Ajax應(yīng)用程序', 'book_url': 'http://product.china-pub.com/216315', 'author': '(美)James E.Harmon (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111266648', 'publish_date': '2009-05-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥45.00'}, {'title': '(特價(jià)書)編譯原理第2版.本科教學(xué)版', 'book_url': 'http://product.china-pub.com/216336', 'author': '(美)Alfred V. Aho;Monica S. Lam;Ravi Sethi;Jeffrey D. Ullman (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111269298', 'publish_date': '2009-05-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥55.00'}, {'title': '(特價(jià)書)用Alice學(xué)編程(原書第2版)', 'book_url': 'http://product.china-pub.com/216354', 'author': '(美)Wanda P.Dann;Stephen Cooper;Randy Pausch (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111274629', 'publish_date': '2009-07-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥39.00'}, {'title': 'Java語(yǔ)言程序設(shè)計(jì)(第2版)', 'book_url': 'http://product.china-pub.com/50051', 'author': '趙國(guó)玲;王宏;柴大鵬 (著)', 'publisher': '機(jī)械工業(yè)出版社*', 'isbn': '9787111297376', 'publish_date': '2010-03-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥32.00'}, {'title': '從零開(kāi)始學(xué)Python程序設(shè)計(jì)', 'book_url': 'http://product.china-pub.com/7017939', 'author': '吳惠茹 (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111583813', 'publish_date': '2018-01-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥79.00'}, {'title': '(特價(jià)書)匯編語(yǔ)言', 'book_url': 'http://product.china-pub.com/216385', 'author': '鄭曉薇 (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111269076', 'publish_date': '2009-09-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥29.00'}, {'title': '(特價(jià)書)Visual Basic.NET案例教程', 'book_url': 'http://product.china-pub.com/216388', 'author': '馬玉春;劉杰民;王鑫 (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111272571', 'publish_date': '2009-09-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥30.00'}, {'title': '小程序從0到1:微信全棧工程師一本通', 'book_url': 'http://product.china-pub.com/7017943', 'author': '石橋碼農(nóng) (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111584049', 'publish_date': '2018-01-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥59.00'}, {'title': '深入分布式緩存:從原理到實(shí)踐', 'book_url': 'http://product.china-pub.com/7017945', 'author': '于君澤 (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111585190', 'publish_date': '2018-01-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥99.00'}, {'title': '(特價(jià)書)ASP.NET AJAX服務(wù)器控件高級(jí)編程(.NET 3.5版)', 'book_url': 'http://product.china-pub.com/216397', 'author': '(美)Adam Calderon;Joel Rumerman (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111270966', 'publish_date': '2009-09-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥65.00'}, {'title': 'PaaS程序設(shè)計(jì)', 'book_url': 'http://product.china-pub.com/3770830', 'author': '(美)Lucas Carlson (著)', 'publisher': '機(jī)械工業(yè)出版社', 'isbn': '9787111482451', 'publish_date': '2015-01-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥39.00'}, {'title': 'Visual C++數(shù)字圖像處理[按需印刷]', 'book_url': 'http://product.china-pub.com/2437', 'author': '何斌 馬天予 王運(yùn)堅(jiān) 朱紅蓮 (著)', 'publisher': '人民郵電出版社', 'isbn': '711509263X', 'publish_date': '2001-04-01出版', 'vip_price': 'VIP會(huì)員價(jià):', 'price': '¥72.00'}]

是不是能正確提取圖書列表的相關(guān)信息?這也說(shuō)明我們的函數(shù)的正確性,由于也可能在解析中存在一些異常,比如某個(gè)字段的缺失,我們需要捕獲異常并忽略該條數(shù)據(jù),讓程序能繼續(xù)走下去而不是停止運(yùn)行。

在完成了上述的工作后,我們來(lái)通過(guò)對(duì)頁(yè)號(hào)的 URL 構(gòu)造,實(shí)現(xiàn)采集多個(gè)分頁(yè)下的數(shù)據(jù),最后達(dá)到讀取完該分類下的所有圖書信息的目的。完整代碼如下:

def get_category_books(category, url):
    """
    獲取類別圖書,下面會(huì)有分頁(yè),我們一直請(qǐng)求,直到分頁(yè)請(qǐng)求返回404即可停止
    :return:
    """
    books = []

    page = 1
    regex = "(http://.*/)([0-9]+)_(.*).html"
    pattern = re.compile(regex)
    m = pattern.match(url)
    if not m:
        return []
    prefix_path = m.group(1)

    current_page = m.group(2)
    if current_page != 1:
        print("提取數(shù)據(jù)不是從第一行開(kāi)始,可能存在問(wèn)題")

    suffix_path = m.group(3)
    current_page = page

    while True:
        # 構(gòu)造分頁(yè)請(qǐng)求的URL
        book_url = f"{prefix_path}{current_page}_{suffix_path}.html"
        response = requests.get(url=book_url, headers=headers)
        print(f"提取分類[{category}]下的第{current_page}頁(yè)圖書數(shù)據(jù)")
        if response.status_code != 200:
            print(f"[{category}]該分類下的圖書數(shù)據(jù)提取完畢!")
            break
        response.encoding = 'gbk'
        # 將該分頁(yè)的數(shù)據(jù)加到列表中
        books.extend(parse_books_page(response.text))
        current_page += 1
        # 一定要緩一緩,避免對(duì)對(duì)方服務(wù)造成太大壓力
        time.sleep(0.5)
        
    return books

最后保存數(shù)據(jù)到 MongoDB 中,這一步非常簡(jiǎn)單,我們前面已經(jīng)操作過(guò) MongoDB 的文檔插入,直接搬用即可:

client = pymongo.MongoClient(host='MongoDB的服務(wù)地址', port=27017)
client.admin.authenticate("admin", "shencong1992")
db = client.scrapy_manual
collection = db.china_pub

# ...

def save_to_mongodb(data):
    try:
        collection.insert_many(data)
    except Exception as e:
        print("批量插入數(shù)據(jù)異常:{}".format(str(e)))

正是由于我們前面生成了批量的 json 數(shù)據(jù),這里直接使用集合的 insert_many() 方法即可對(duì)采集到的數(shù)據(jù)批量插入 MongoDB 中。代碼的最后我們加上一個(gè) main 函數(shù)即可:

# ...

if __name__ == '__main__':
    page_url = "http://www.china-pub.com/Browse/"
    categories, urls = get_all_computer_book_urls(page_url)
    # print(categories)
    books_total = {}
    for i in range(len(urls)):
        books_category_data = get_category_books(categories[i], urls[i])
        print(f"保存[{categories[i]}]圖書數(shù)據(jù)到mongodb中")
        save_to_mongodb(books_category_data)
    print("爬取互動(dòng)出版網(wǎng)的計(jì)算機(jī)分類數(shù)據(jù)完成")

這樣一個(gè)簡(jiǎn)單的爬蟲(chóng)就完成了,還等什么,開(kāi)始跑起來(lái)吧!!

4. 圖書爬蟲(chóng)之代碼運(yùn)行

這是一個(gè)簡(jiǎn)單的爬蟲(chóng),代碼全在一個(gè) python 文件中,我們直接單機(jī)運(yùn)行即可,下面看在我本機(jī)上的演示效果:

最后我們從互動(dòng)出版網(wǎng)上一共獲取了9010條圖書記錄。這是我們的第一次嘗試,是不是覺(jué)得爬蟲(chóng)很簡(jiǎn)單,很有趣?只不過(guò)我們爬取的這個(gè)網(wǎng)站會(huì)比較簡(jiǎn)單,而且沒(méi)有設(shè)置相應(yīng)的反爬蟲(chóng)機(jī)制。后面我們會(huì)實(shí)戰(zhàn)更多更有難度的網(wǎng)站,讓這門課程更加有趣和有用。

圖片描述

最后獲取的數(shù)據(jù)記錄數(shù)

5. 小結(jié)

本小節(jié)我們以互動(dòng)出版網(wǎng)為例,分析了手工爬取一個(gè)網(wǎng)站所需要進(jìn)行的步驟,并完成了互動(dòng)出版網(wǎng)上計(jì)算機(jī)類的圖書的數(shù)據(jù)爬取。接下來(lái)我們會(huì)用 scrapy 框架來(lái)實(shí)現(xiàn)這樣一個(gè)簡(jiǎn)易的爬蟲(chóng),體驗(yàn) Scrapy 框架給我們帶來(lái)的高效的開(kāi)發(fā)模式和優(yōu)異的性能。

圖片描述