亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久

從零開(kāi)始基于Scrapy框架的網(wǎng)路爬蟲(chóng)開(kāi)發(fā)流程

優(yōu)采云 發(fā)布時(shí)間: 2020-07-06 08:01

  

  前節介紹了哪些網(wǎng)路爬蟲(chóng),什么是Scrapy框架并怎樣安裝

  本節介紹基于Scrapy框架的網(wǎng)路爬蟲(chóng)開(kāi)發(fā)流程

  安裝好Scrapy框架后,就可以基于Scrapy框架開(kāi)發(fā)爬蟲(chóng)項目了?;诳蚣荛_(kāi)發(fā)項目,不需要從零開(kāi)始編撰代碼,只須要把握怎樣使用框架,如何添加與自己應用相關(guān)的代碼即可。

  進(jìn)入準備新建爬蟲(chóng)項目的路徑中,使用命令:

  scrapy startproject project_name

  請用爬蟲(chóng)項目名稱(chēng)替換命令中的project_name爬蟲(chóng)軟件開(kāi)發(fā),例如,本文準備創(chuàng )建一個(gè)爬取新浪網(wǎng)的爬蟲(chóng),取名為sina_spider,則新建爬蟲(chóng)項目的命令為:

  scrapy startproject sina_spider

  命令運行結果,如下圖所示。

  

  新建爬蟲(chóng)項目

  “scrapy startproject sina_spider”命令會(huì )創(chuàng )建包含下述內容的sina_spider目錄,如圖13-5所示。

  

  爬蟲(chóng)文件夾結構

  新建好Scrapy爬蟲(chóng)項目后,接下來(lái)就是創(chuàng )建爬蟲(chóng)文件。請先步入sina_spider項目路徑,用命令:

  scrapy genspider spider_filename(爬蟲(chóng)文件名) (待爬取的網(wǎng)站域名)

  創(chuàng )建爬蟲(chóng)文件。例如,本文的爬蟲(chóng)文件名為:sinaSpider,待爬取的網(wǎng)站域名:,則創(chuàng )建爬蟲(chóng)文件sinaSpider的命令為:

  scrapy genspider sinaSpider

  現在好多網(wǎng)站都有防爬蟲(chóng)舉措,為了反網(wǎng)站的防爬蟲(chóng)舉措,需要添加user agent信息。請settings.py文件的第19行更改如下所示:

  18. # Crawl responsibly by identifying yourself (and your website) on the user-agent

19. import random

20. # user agent 列表

21. USER_AGENT_LIST = [

22. "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",

23. "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",

24. "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",

25. "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",

26. "Mozilla/4.76 [en_jp] (X11; U; SunOS 5.8 sun4u)",

27. "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",

28. "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:5.0) Gecko/20100101 Firefox/5.0",

29. "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0",

30. "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:16.0) Gecko/20120813 Firefox/16.0",

31. "Mozilla/4.77 [en] (X11; I; IRIX;64 6.5 IP30)",

32. "Mozilla/4.8 [en] (X11; U; SunOS; 5.7 sun4u)" ]

33. USER_AGENT = random.choice(USER_AGENT_LIST) # 隨機生成user agent

  網(wǎng)站的服務(wù)器中保存一個(gè)robots.txt 文件,其作用是,告訴搜索引擎爬蟲(chóng),本網(wǎng)站哪些目錄下的網(wǎng)頁(yè)不希望被爬取收錄。Scrapy啟動(dòng)后,會(huì )在第一時(shí)間訪(fǎng)問(wèn)網(wǎng)站的 robots.txt 文件,然后決定該網(wǎng)站的爬取范圍。

  由于本文的項目并非搜索引擎爬蟲(chóng),而且很有可能我們想要獲取的內容恰恰是被 robots.txt所嚴禁訪(fǎng)問(wèn)的,所以請把settings.py文件的ROBOTSTXT_OBEY值設置為False,表示拒絕遵循Robot合同,如下所示

  1. # Obey robots.txt rules

2. ROBOTSTXT_OBEY = False # False表示拒絕遵守Robot協(xié)議

  查看由Scrapy生成的sinaSpider.py文件,在SinaspiderSpider類(lèi)中,有一個(gè)parse()方法須要用戶(hù)編撰,如下圖所示

  

  編寫(xiě)parse()方法

  Scrapy框架把爬取出來(lái)的網(wǎng)頁(yè)源代碼儲存在response對象中爬蟲(chóng)軟件開(kāi)發(fā),我們只須要對response對象中的網(wǎng)頁(yè)源代碼做解析,提取想要的數據即可。本范例目標是抓取新浪網(wǎng)頁(yè)的新聞的標題和對應的鏈接,如下圖所示。

  

  HTML源代碼

  parse()方法的實(shí)現代碼,如下所示

  1. # -*- coding: utf-8 -*-

2. import scrapy

3.

4. class SinaspiderSpider(scrapy.Spider):

5. name = 'sinaSpider'

6. allowed_domains = ['www.sina.com.cn']

7. start_urls = ['http://www.sina.com.cn/']

8.

9. def parse(self, response):

10. data_list = [] #用于存儲解析到的數據

11. #解析HTML源代碼,定位新聞內容

12. lis = response.xpath("//div[@class='top_newslist']/ul[@class='list-a news_top']//li")

13. #將新聞主題和超鏈接解析出來(lái)并整理到列表中

14. for li in lis:

15. titles = li.xpath(".//a/text()")

16. linkes = li.xpath(".//a/@href")

17. for title, link in zip(titles, linkes):

18. #將新聞主題和對應的超鏈接組合成字典

19. data_dict = {'標題': title.extract(), '鏈接': link.extract()}

20. #將字典數據存儲到data_list這個(gè)列表中

21. data_list.append(data_dict)

22. return data_list

  parse()方法在解析HTML源代碼時(shí),使用了XPath路徑表達式。XPath是一門(mén)在HTML/XML文檔中查找信息的語(yǔ)言,常用于在網(wǎng)頁(yè)HTML源代碼中,查找特定標簽里的數據。在網(wǎng)絡(luò )爬蟲(chóng)中使用XPath,只須要把握 XPath路徑表達式即可。XPath 使用路徑表達式來(lái)選定 HTML/XML文檔中的節點(diǎn)或則節點(diǎn)集。

  parse()方法編撰好后,就可以運行爬蟲(chóng)程序并保存抓取數據了。用命令:

  scrapy crawl 爬蟲(chóng)文件名 –o 保存數據文件名.[csv|json|xml]

  保存數據的文件格式可以是csv 或 json 或 xml,本例的爬蟲(chóng)文件名為:sinaSpider.py,數據儲存選擇csv格式,命令為:

  scrapy crawl sinaSpider -o sinaNews.csv

  運行療效,如下圖所示

  

  運行爬蟲(chóng)

  到此,本例基于Scrapy框架從零開(kāi)始實(shí)現了一個(gè)網(wǎng)絡(luò )爬蟲(chóng)程序,爬取了新浪網(wǎng)頁(yè)并從中解析出新聞的標題和對應的超鏈接,最后把解析出的數據保存為csv文件供后續使用。

0 個(gè)評論

要回復文章請先登錄注冊


官方客服QQ群

微信人工客服

QQ人工客服


線(xiàn)

亚洲国产精品无码久久大片,亚洲AV无码乱码麻豆精品国产,亚洲品质自拍网站,少妇伦子伦精品无码STYLES,国产精久久久久久久