摘要:基于的樹狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點(diǎn)的能力。起初的提出的初衷是將其作為一個(gè)通用的介于與間的語法模型。
在你的spiders目錄下創(chuàng)建自己第一個(gè)爬蟲項(xiàng)目,我我這兒命名為AiquerSpider.py
然后編輯文件
# !/usr/bin/python # -*- coding: UTF-8 -*- import scrapy from scrapy.http import Request
以上是我所需要導(dǎo)入使用的包,你也可以自定義別的包.
接下來咱們創(chuàng)建類:
# !/usr/bin/python # -*- coding: UTF-8 -*- import scrapy from scrapy.http import Request class AiquerSpider(scrapy.Spider): # name 定義爬蟲名稱 name = "" # allowed_domains定義訪問域 allowed_domains = [] # bash_url定義要爬取的網(wǎng)站 bash_url = "" # 這個(gè)方法是必須有不然你的爬蟲跑不起來(同等java中的main方法) def parse(self, response): pass
在寫代碼之前呢咱們要去做點(diǎn)大事,具體看下面,嘿嘿!
咱們要首先定義集合就是items.py中用來存放的數(shù)據(jù)
咱們看看網(wǎng)頁吧,在具體說需要哪些東西.
上面呢我們需要網(wǎng)站地址用戶名稱視頻圖片視頻地址
下載視頻的話我這兒就不做講解了我們就獲取這幾個(gè)參數(shù)為例子
首先,我們需要愛奇藝網(wǎng)站用戶地址做分析
http://www.iqiyi.com/u/141242...
http://www.iqiyi.com/u/用戶ID 這一段是找到用戶網(wǎng)站首頁
/v 這個(gè)是該用戶下的視頻
這樣我們就了解到了如何去手動(dòng)指定用戶并且爬取他下面的視頻了
廢話不多說,先上items的代碼
# -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # http://doc.scrapy.org/en/latest/topics/items.html import scrapy class AiquerItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() # 視頻名稱 video_name = scrapy.Field() # 視頻時(shí)間 video_time = scrapy.Field() # 視頻圖片路徑 video_imgurl = scrapy.Field() # 視頻路徑 video_url = scrapy.Field() pass
我們的items就寫完了
再回到咱們的爬蟲上面,具體解釋都在里面的注釋中了
# !/usr/bin/python # -*- coding: UTF-8 -*- # 這里是自己導(dǎo)入的包 import scrapy from scrapy.http import Request from AiQuer.items import AiquerItem # 定義類 class AiquerSpider(scrapy.Spider): # http://www.iqiyi.com/u/1412422046/v?page=1&video_type=1 # name 定義爬蟲名稱 name = "AiquerSpider" # allowed_domains定義訪問域 allowed_domains = ["iqiyi.com"] # bash_url定義要爬取的網(wǎng)站 bash_url = "http://www.iqiyi.com/u/" # 做拼接地址的結(jié)尾 bashurl = "/v?page=1" user_id = None # 用來獲取輸入的用戶編號返回拼接地址 def start(self): self.user_id = self.validateIsNull(input(u"請輸入用戶編號:")) if self.user_id: url = self.bash_url + self.user_id + self.bashurl return url def start_requests(self): # 首先獲取用戶首頁地址 url = self.start() # Request函數(shù)第一個(gè)是地址,第二個(gè)是調(diào)用的方法 yield Request(url, self.max_page) #yield Request("http://www.iqiyi.com/u/1412422046/v?page=2", self.parse) # 非空驗(yàn)證 def validateIsNull(self, user_id): if user_id.strip() == "": return None else: return user_id # 獲取最大頁數(shù) def max_page(self, response): max_num = int(response.xpath("http://div//a[last()-1]/text()").extract()[0]) for i in range(1, max_num + 1): url = self.bash_url + self.user_id + "/v?page=" + str(i) + "&video_type=1" # print(url) yield Request(url, self.parse) # 獲取頁面需要的數(shù)據(jù) def parse(self, response): item = AiquerItem() # 注釋代碼塊用來做測試的,小伙伴可以拿出來一個(gè)一個(gè)測試 """ names = response.xpath("http://ul/li//div//p//a/@title").extract() times = response.xpath("http://div//span[@class="mod-listTitle_right"]/text()").extract() imgurls = response.xpath("http://div[@class="site-piclist_pic"]//a//img/@src").extract() urls = response.xpath("http://div[@class="site-piclist_pic"]//a/@href").extract() print(names) print(times) print(imgurls) print(urls) """ # 通過xpath去尋找HTML頁面中指定數(shù)據(jù)封裝在items類中 item["video_name"] = response.xpath("http://ul/li//div//p//a/@title").extract() item["video_time"] = response.xpath("http://div//span[@class="mod-listTitle_right"]/text()").extract() item["video_imgurl"] = response.xpath("http://div[@class="site-piclist_pic"]//a//img/@src").extract() item["video_url"] = response.xpath("http://div[@class="site-piclist_pic"]//a/@href").extract() return item
有同學(xué)肯定會(huì)問("http://div[@class="site-piclist_pic"]//a/@href")這是啥玩意
Xpath:
XPath即為XML路徑語言(XML Path Language),它是一種用來確定XML文檔中某部分位置的語言。 XPath基于XML的樹狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點(diǎn)的能力。 起初XPath的提出的初衷是將其作為一個(gè)通用的、介于XPointer與XSL間的語法模型。
在這篇中是要有點(diǎn)XPath的基礎(chǔ)的可以先去看看這個(gè)教程配合這個(gè)教程一起寫提高XPath熟練度.
教程鏈接:XPath教程
接下來就是如何保存這些數(shù)據(jù)了
介紹兩種一個(gè)是直接保存為文件,另外一個(gè)是保存到數(shù)據(jù)庫
請看下篇
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/41084.html
摘要:如果想先學(xué)習(xí)的話推薦看下基礎(chǔ)教學(xué)菜鳥教程這個(gè)網(wǎng)站的教程里面的內(nèi)容還是挺不錯(cuò)的非常適合小白學(xué)習(xí)好了廢話不多說開始學(xué)習(xí)如何安裝吧安裝我上篇小白爬蟲篇簡介下面的鏈接安裝包后在或者在中輸入命令過程中可能會(huì)問你是否安裝其他擴(kuò)展包選按回車就好了安裝完成 如果想先學(xué)習(xí)python的話推薦看下Python基礎(chǔ)教學(xué)|菜鳥教程這個(gè)網(wǎng)站的教程,里面的內(nèi)容還是挺不錯(cuò)的非常適合小白學(xué)習(xí)好了廢話不多說開始學(xué)習(xí)如何...
摘要:沒有做具體數(shù)據(jù)處理了直接把他們保存為數(shù)據(jù)了很長很長一段眼花下一篇是如何去保存在數(shù)據(jù)庫中 在上篇中沒有說到啟動(dòng)如何去啟動(dòng),scrapy是使用cmd命令行去啟動(dòng)的咱們用scrapy的cmdline去啟動(dòng)命名point.py # 導(dǎo)入cmdline 中的execute用來執(zhí)行cmd命令 from scrapy.cmdline import execute # 執(zhí)行cmd命令參數(shù)為[ scra...
摘要:創(chuàng)建爬蟲項(xiàng)目我創(chuàng)建的項(xiàng)目名稱為用打開項(xiàng)目可以看到目錄結(jié)構(gòu)如下根目錄有個(gè)是他的配置文件用來存放你的爬蟲文件我就不做解釋了存放集合中間件用來自定義插件在這里咱們用不到這玩意用來存儲(chǔ)數(shù)據(jù)這個(gè)還用解釋嗎你可以在中看到這個(gè)他們的具體介紹就去看入門到奔 創(chuàng)建爬蟲項(xiàng)目 scrapy startproject (projectName) 我創(chuàng)建的項(xiàng)目名稱為AIQuery scrapy startpro...
摘要:爬蟲是我接觸計(jì)算機(jī)編程的入門。練練練本文推薦的資源就是以項(xiàng)目練習(xí)帶動(dòng)爬蟲學(xué)習(xí),囊括了大部分爬蟲工程師要求的知識點(diǎn)。拓展閱讀一文了解爬蟲與反爬蟲最后,請注意,爬蟲的工作機(jī)會(huì)相對較少。 爬蟲是我接觸計(jì)算機(jī)編程的入門。哥當(dāng)年寫第一行代碼的時(shí)候別提有多痛苦。 本文旨在用一篇文章說透爬蟲如何自學(xué)可以達(dá)到找工作的要求。 爬蟲的學(xué)習(xí)就是跟著實(shí)際項(xiàng)目去學(xué),每個(gè)項(xiàng)目會(huì)涉及到不同的知識點(diǎn),項(xiàng)目做多了,自然...
閱讀 1442·2023-04-25 19:00
閱讀 4135·2021-11-17 17:00
閱讀 1753·2021-11-11 16:55
閱讀 1511·2021-10-14 09:43
閱讀 3108·2021-09-30 09:58
閱讀 850·2021-09-02 15:11
閱讀 2118·2019-08-30 12:56
閱讀 1399·2019-08-30 11:12