成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

小白爬蟲scrapy第三篇

laznrbfe / 1593人閱讀

摘要:基于的樹狀結(jié)構(gòu),提供在數(shù)據(jù)結(jié)構(gòu)樹中找尋節(jié)點的能力。起初的提出的初衷是將其作為一個通用的介于與間的語法模型。

在你的spiders目錄下創(chuà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 = ""

    # 這個方法是必須有不然你的爬蟲跑不起來(同等java中的main方法)
    def parse(self, response):
        
        pass

在寫代碼之前呢咱們要去做點大事,具體看下面,嘿嘿!
咱們要首先定義集合就是items.py中用來存放的數(shù)據(jù)
咱們看看網(wǎng)頁吧,在具體說需要哪些東西.

上面呢我們需要網(wǎng)站地址用戶名稱視頻圖片視頻地址
下載視頻的話我這兒就不做講解了我們就獲取這幾個參數(shù)為例子
首先,我們需要愛奇藝網(wǎng)站用戶地址做分析

http://www.iqiyi.com/u/141242...
http://www.iqiyi.com/u/用戶ID 這一段是找到用戶網(wǎng)站首頁
/v 這個是該用戶下的視頻
這樣我們就了解到了如何去手動指定用戶并且爬取他下面的視頻了
廢話不多說,先上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()
    # 視頻時間
    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ù)第一個是地址,第二個是調(diào)用的方法
        yield Request(url, self.max_page)
        #yield Request("http://www.iqiyi.com/u/1412422046/v?page=2", self.parse)

    # 非空驗證
    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()
        # 注釋代碼塊用來做測試的,小伙伴可以拿出來一個一個測試
        """
        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é)肯定會問("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é)點的能力。 
起初XPath的提出的初衷是將其作為一個通用的、介于XPointer與XSL間的語法模型。

在這篇中是要有點XPath的基礎(chǔ)的可以先去看看這個教程配合這個教程一起寫提高XPath熟練度.
教程鏈接:XPath教程
接下來就是如何保存這些數(shù)據(jù)了
介紹兩種一個是直接保存為文件,另外一個是保存到數(shù)據(jù)庫
請看下篇

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/41084.html

相關(guān)文章

  • 小白爬蟲scrapy第一篇

    摘要:如果想先學(xué)習(xí)的話推薦看下基礎(chǔ)教學(xué)菜鳥教程這個網(wǎng)站的教程里面的內(nèi)容還是挺不錯的非常適合小白學(xué)習(xí)好了廢話不多說開始學(xué)習(xí)如何安裝吧安裝我上篇小白爬蟲篇簡介下面的鏈接安裝包后在或者在中輸入命令過程中可能會問你是否安裝其他擴展包選按回車就好了安裝完成 如果想先學(xué)習(xí)python的話推薦看下Python基礎(chǔ)教學(xué)|菜鳥教程這個網(wǎng)站的教程,里面的內(nèi)容還是挺不錯的非常適合小白學(xué)習(xí)好了廢話不多說開始學(xué)習(xí)如何...

    beanlam 評論0 收藏0
  • 小白爬蟲scrapy第四篇

    摘要:沒有做具體數(shù)據(jù)處理了直接把他們保存為數(shù)據(jù)了很長很長一段眼花下一篇是如何去保存在數(shù)據(jù)庫中 在上篇中沒有說到啟動如何去啟動,scrapy是使用cmd命令行去啟動的咱們用scrapy的cmdline去啟動命名point.py # 導(dǎo)入cmdline 中的execute用來執(zhí)行cmd命令 from scrapy.cmdline import execute # 執(zhí)行cmd命令參數(shù)為[ scra...

    cnio 評論0 收藏0
  • 小白爬蟲scrapy第二篇

    摘要:創(chuàng)建爬蟲項目我創(chuàng)建的項目名稱為用打開項目可以看到目錄結(jié)構(gòu)如下根目錄有個是他的配置文件用來存放你的爬蟲文件我就不做解釋了存放集合中間件用來自定義插件在這里咱們用不到這玩意用來存儲數(shù)據(jù)這個還用解釋嗎你可以在中看到這個他們的具體介紹就去看入門到奔 創(chuàng)建爬蟲項目 scrapy startproject (projectName) 我創(chuàng)建的項目名稱為AIQuery scrapy startpro...

    booster 評論0 收藏0
  • 非計算機專業(yè)小白自學(xué)爬蟲全指南(附資源)

    摘要:爬蟲是我接觸計算機編程的入門。練練練本文推薦的資源就是以項目練習(xí)帶動爬蟲學(xué)習(xí),囊括了大部分爬蟲工程師要求的知識點。拓展閱讀一文了解爬蟲與反爬蟲最后,請注意,爬蟲的工作機會相對較少。 爬蟲是我接觸計算機編程的入門。哥當(dāng)年寫第一行代碼的時候別提有多痛苦。 本文旨在用一篇文章說透爬蟲如何自學(xué)可以達到找工作的要求。 爬蟲的學(xué)習(xí)就是跟著實際項目去學(xué),每個項目會涉及到不同的知識點,項目做多了,自然...

    CarlBenjamin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<