欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python爬蟲入門【19】:B站博人傳評論數(shù)據(jù)抓取scrapy

1. B站博人傳評論數(shù)據(jù)爬取簡介

今天想了半天不知道抓啥,去B站看跳舞的×××姐,忽然看到了評論,那就抓取一下B站的評論數(shù)據(jù),視頻動畫那么多,也不知道抓取哪個,選了一個博人傳跟火影相關(guān)的,抓取看看。網(wǎng)址: https://www.bilibili.com/bangumi/media/md5978/?from=search&seid=16013388136765436883#short
在這個網(wǎng)頁看到了18560條短評,數(shù)據(jù)量也不大,抓取看看,使用的還是scrapy。

堅守“ 做人真誠 · 做事靠譜 · 口碑至上 · 高效敬業(yè) ”的價值觀,專業(yè)網(wǎng)站建設(shè)服務(wù)10余年為成都搬家公司小微創(chuàng)業(yè)公司專業(yè)提供成都定制網(wǎng)站營銷網(wǎng)站建設(shè)商城網(wǎng)站建設(shè)手機網(wǎng)站建設(shè)小程序網(wǎng)站建設(shè)網(wǎng)站改版,從內(nèi)容策劃、視覺設(shè)計、底層架構(gòu)、網(wǎng)頁布局、功能開發(fā)迭代于一體的高端網(wǎng)站建設(shè)服務(wù)。

Python爬蟲入門【19】: B站博人傳評論數(shù)據(jù)抓取 scrapy

Python爬蟲入門【19】: B站博人傳評論數(shù)據(jù)抓取 scrapy

2. B站博人傳評論數(shù)據(jù)案例---獲取鏈接

從開發(fā)者工具中你能輕易的得到如下鏈接,有鏈接之后就好辦了,如何創(chuàng)建項目就不在啰嗦了,我們直接進入主題。

Python爬蟲入門【19】: B站博人傳評論數(shù)據(jù)抓取 scrapy

我在代碼中的parse函數(shù)中,設(shè)定了兩個yield一個用來返回items 一個用來返回requests
然后實現(xiàn)一個新的功能,每次訪問切換UA,這個點我們需要使用到中間件技術(shù)。


class BorenSpider(scrapy.Spider):
    BASE_URL = "https://bangumi.bilibili.com/review/web_api/short/list?media_id=5978&folded=0&page_size=20&sort=0&cursor={}"
    name = 'Boren'
    allowed_domains = ['bangumi.bilibili.com']

    start_urls = [BASE_URL.format("76742479839522")]

    def parse(self, response):
        print(response.url)
        resdata = json.loads(response.body_as_unicode())

        if resdata["code"] == 0:
            # 獲取最后一個數(shù)據(jù)
            if len(resdata["result"]["list"]) > 0:
                data = resdata["result"]["list"]
                cursor = data[-1]["cursor"]
                for one in data:
                    item = BorenzhuanItem()

                    item["author"]  = one["author"]["uname"]
                    item["content"] = one["content"]
                    item["ctime"] = one["ctime"]
                    item["disliked"] = one["disliked"]
                    item["liked"] = one["liked"]
                    item["likes"] = one["likes"]
                    item["user_season"] = one["user_season"]["last_ep_index"] if "user_season" in one else ""
                    item["score"] = one["user_rating"]["score"]
                    yield item

            yield scrapy.Request(self.BASE_URL.format(cursor),callback=self.parse)
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學(xué)習(xí)視頻,這里是Python學(xué)習(xí)者的聚集地,零基礎(chǔ),進階,都歡迎

3. B站博人傳評論數(shù)據(jù)案例---實現(xiàn)隨機UA

第一步, 在settings文件中添加一些UserAgent,我從互聯(lián)網(wǎng)找了一些

USER_AGENT_LIST=[
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1",
    "Mozilla/5.0 (X11; CrOS i686 2268.111.0) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.0 Safari/536.6",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1090.0 Safari/536.6",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/19.77.34.5 Safari/537.1",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.9 Safari/536.5",
    "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.36 Safari/536.5",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1063.0 Safari/536.3",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1062.0 Safari/536.3",
    "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
    "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.1 Safari/536.3",
    "Mozilla/5.0 (Windows NT 6.2) AppleWebKit/536.3 (KHTML, like Gecko) Chrome/19.0.1061.0 Safari/536.3",
    "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24",
    "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/535.24 (KHTML, like Gecko) Chrome/19.0.1055.1 Safari/535.24"
]

第二步,在settings文件中設(shè)置 “DOWNLOADER_MIDDLEWARES”

# Enable or disable downloader middlewares
# See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {
   #'borenzhuan.middlewares.BorenzhuanDownloaderMiddleware': 543,
    'borenzhuan.middlewares.RandomUserAgentMiddleware': 400,
}

第三步,在 middlewares.py 文件中導(dǎo)入 settings模塊中的 USER_AGENT_LIST 方法

from borenzhuan.settings import USER_AGENT_LIST # 導(dǎo)入中間件
import random

class RandomUserAgentMiddleware(object):
    def process_request(self, request, spider):
        rand_use  = random.choice(USER_AGENT_LIST)
        if rand_use:
            request.headers.setdefault('User-Agent', rand_use)

好了,隨機的UA已經(jīng)實現(xiàn),你可以在parse函數(shù)中編寫如下代碼進行測試

print(response.request.headers)

4. B站博人傳評論數(shù)據(jù)----完善item

這個操作相對簡單,這些數(shù)據(jù)就是我們要保存的數(shù)據(jù)了。!

   author = scrapy.Field()
    content = scrapy.Field()
    ctime = scrapy.Field()
    disliked = scrapy.Field()
    liked = scrapy.Field()
    likes = scrapy.Field()
    score = scrapy.Field()
    user_season = scrapy.Field()

5. B站博人傳評論數(shù)據(jù)案例---提高爬取速度

在settings.py中設(shè)置如下參數(shù):


# Configure maximum concurrent requests performed by Scrapy (default: 16)
CONCURRENT_REQUESTS = 32
# Configure a delay for requests for the same website (default: 0)
# See https://doc.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
DOWNLOAD_DELAY = 1
# The download delay setting will honor only one of:
CONCURRENT_REQUESTS_PER_DOMAIN = 16
CONCURRENT_REQUESTS_PER_IP = 16
# Disable cookies (enabled by default)
COOKIES_ENABLED = False

解釋說明

一、降低下載延遲

DOWNLOAD_DELAY = 0

將下載延遲設(shè)為0,這時需要相應(yīng)的防ban措施,一般使用user agent輪轉(zhuǎn),構(gòu)建user agent池,輪流選擇其中之一來作為user agent。

二、多線程

CONCURRENT_REQUESTS = 32
CONCURRENT_REQUESTS_PER_DOMAIN = 16
CONCURRENT_REQUESTS_PER_IP = 16

scrapy網(wǎng)絡(luò)請求是基于Twisted,而Twisted默認支持多線程,而且scrapy默認也是通過多線程請求的,并且支持多核CPU的并發(fā),我們通過一些設(shè)置提高scrapy的并發(fā)數(shù)可以提高爬取速度。

三、禁用cookies

COOKIES_ENABLED = False

6. B站博人傳評論數(shù)據(jù)案例---保存數(shù)據(jù)

最后在pipelines.py 文件中,編寫保存代碼即可

import os
import csv

class BorenzhuanPipeline(object):

    def __init__(self):
        store_file = os.path.dirname(__file__)+'/spiders/bore.csv'
        self.file = open(store_file,"a+",newline="",encoding="utf-8")
        self.writer = csv.writer(self.file)

    def process_item(self, item, spider):
        try:

            self.writer.writerow((
                item["author"],
                item["content"],
                item["ctime"],
                item["disliked"],
                item["liked"],
                item["likes"],
                item["score"],
                item["user_season"]
            ))

        except Exception as e:
            print(e.args)

        def close_spider(self, spider):
            self.file.close()
Python資源分享qun 784758214 ,內(nèi)有安裝包,PDF,學(xué)習(xí)視頻,這里是Python學(xué)習(xí)者的聚集地,零基礎(chǔ),進階,都歡迎

運行代碼之后,發(fā)現(xiàn)過了一會報錯了

Python爬蟲入門【19】: B站博人傳評論數(shù)據(jù)抓取 scrapy

去看了一眼,原來是數(shù)據(jù)爬取完畢<sub>!?。?lt;/sub>

名稱欄目:Python爬蟲入門【19】:B站博人傳評論數(shù)據(jù)抓取scrapy
網(wǎng)址分享:http://chinadenli.net/article6/joeiog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣、網(wǎng)站導(dǎo)航、網(wǎng)站收錄品牌網(wǎng)站設(shè)計、營銷型網(wǎng)站建設(shè)建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
日韩一区二区三区久久| 91天堂免费在线观看| 久久精品蜜桃一区二区av| 精品日韩中文字幕视频在线| 青青操视频在线观看国产| 91日韩在线视频观看| 黑丝袜美女老师的小逼逼| 国产日韩欧美综合视频| 国产精品十八禁亚洲黄污免费观看| 日韩一区二区免费在线观看| 免费大片黄在线观看日本| 国产一区二区在线免费| 亚洲精品成人福利在线| 国产丝袜女优一区二区三区| 成年人视频日本大香蕉久久| 99秋霞在线观看视频| 成人日韩视频中文字幕| 日本午夜免费观看视频| 成年午夜在线免费视频| 国产不卡最新在线视频| 国产欧美精品对白性色| 欧美久久一区二区精品| 少妇在线一区二区三区| 中文字幕亚洲在线一区| 中日韩免费一区二区三区| 欧美一区二区三区五月婷婷| 好吊日成人免费视频公开| 国产精品二区三区免费播放心| 国产精品亚洲精品亚洲| 东京热一二三区在线免| 国产精品熟女乱色一区二区| 可以在线看的欧美黄片| 日韩精品人妻少妇一区二区| 国产成人高清精品尤物| 亚洲国产欧美精品久久| 草草夜色精品国产噜噜竹菊| 91精品国产品国语在线不卡| 亚洲欧美日韩国产自拍| 开心久久综合激情五月天| 国产日产欧美精品视频| 色综合久久超碰色婷婷|