1. 程式人生 > >Python爬蟲——8-1.scrapy深度爬取案例—百思不得姐

Python爬蟲——8-1.scrapy深度爬取案例—百思不得姐

對於scrapy框架的使用,爬取資料,多次執行命令列也是比較頭疼和麻煩的,這裡建議Windows+R鍵輸入cmd進入命令列,切入至專案所在目錄後執行scrapy shell  url’命令,可以很直觀的檢測程式是否出錯,如xpath匹配路徑是否正確獲取資料,這是一個用於簡單測試的非常便捷的方法。

1.建立專案:scrapy startprojet budejie

2.定義資料模型檔案——items.py檔案:

# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# https://doc.scrapy.org/en/latest/topics/items.html import scrapy class BudejieItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() content=scrapy.Field()
3.爬蟲程式檔案——budejie.py檔案
# coding:utf-8
'''
使用scrapy框架進行深度爬蟲,爬取百思不得姐的內涵段子'''
# 引入需要的模組
import scrapy
from ..items import 
BudejieItem class BudejieSpider(scrapy.Spider): name='baisibudejie' allowed_domains=['budejie.com'] start_urls=['http://www.budejie.com/text/2'] def parse(self,response): ''' 在這個函式中不做任何資料處理,只是將第一個url加入到urljoin 並將請求物件交給parse_response進行資料處理 :param response: :return: '''
url=response.urljoin(self.start_urls[0]) yield scrapy.Request(url,callback=self.parse_response) def parse_response(self,response): ''' 在這個函式中才是真的資料處理,將篩選後的資料逐個交給pipelines管道模組進行儲存 :param response: :return: ''' # 1.將資料儲存在本地表格檔案,一般用於測試 # 定義一個列表,專門用於儲存段子內容 content_list=[] # 使用xpath對段子內容進行過濾、篩選 contents= response.xpath("//div[@class='j-r-list-c']/div[@class='j-r-list-c-desc']/a").xpath("string(.)").extract() for content in contents: new_item=BudejieItem() new_item['content']=content content_list.append(new_item) yield new_item # 將第一頁的資料爬取篩選完畢後,篩選頁面連結/a/@href,.extract()是將選擇器物件轉換成Unicode物件 page_list=response.xpath("//div[@class='m-page m-page-sr m-page-sm']/a/@href").extract() for page in page_list: # 將路由交由urljoin()管理,去重 url=response.urljoin(page) # 建立新的請求物件,交由自己處理,遞迴,依次篩選資料,並yield交給管道模組 yield scrapy.Request(url,callback=self.parse_response)
4.管道模組:pipelines.py檔案,記得在settngs.py檔案中將對應的pipeline型別新增
ITEM_PIPELINES = {
   'budejie.pipelines.BudejiePipeline': 300,
}
# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
import pymysql
pymysql.install_as_MySQLdb()
class BudejiePipeline(object):
    def __init__(self):
        '''
初始化函式,與資料庫建立連線        '''
self.engine=create_engine('mysql://root:[email protected]/python_spider?charset=utf8')
        Session=sessionmaker(bind=self.engine)
        self.session=Session()

    def close_spider(self,spider):
        '''
在爬蟲程式關閉呼叫的函式,關閉資料庫的連線
:param spider:
:return:
        '''
        # 在關閉與資料庫連線之前確保所有的sql語句已經提交
self.session.commit()
        self.session.close()
    def process_item(self, item, spider):
        '''
核心處理函式,專門處理爬蟲程式中已經封裝好的item物件
:param item:
:param spider:
:return:
        '''
print('正在儲存資料')
        sql="insert into budejie(content) values('%s')"%item['content']
        # 執行sql語句
self.session.execute(sql)



相關推薦

Python爬蟲——8-1.scrapy深度案例不得

對於scrapy框架的使用,爬取資料,多次執行命令列也是比較頭疼和麻煩的,這裡建議Windows+R鍵輸入cmd進入命令列,切入至專案所在目錄後執行scrapy shell  url’命令,可以很直觀的檢測程式是否出錯,如xpath匹配路徑是否正確獲取資料,這是一個用於簡單測

python爬蟲(16)使用scrapy框架頂點小說網

本文以scrapy 框架來爬取整個頂點小說網的小說 1.scrapy的安裝 這個安裝教程,網上有很多的例子,這裡就不在贅述了 2.關於scrapy scrapy框架 是一個非常好的東西,能夠實現非同步爬取,節省時間,其實本文純粹的按照之前的思維來做, 也不是不可以,但是感

大神教你如果學習Python爬蟲 如何才能高效地海量數據

Python 爬蟲 分布式 大數據 編程 Python如何才能高效地爬取海量數據我們都知道在互聯網時代,數據才是最重要的,而且如果把數據用用得好的話,會創造很大的價值空間。但是沒有大量的數據,怎麽來創建價值呢?如果是自己的業務每天都能產生大量的數據,那麽數據量的來源問題就解決啦,但是沒有數

Python爬蟲】從html裏中國大學排名

ext 排名 所有 一個 requests 空格 創建 .text request from bs4 import BeautifulSoupimport requestsimport bs4 #bs4.element.Tag時用的上#獲取網頁頁面HTMLdef

python爬蟲-20行代碼王者榮耀所有英雄圖片,小白也輕輕松松

需要 tis tca wcf 爬取 html eas request 有用 1.環境 python3.6 需要用到的庫: re、os、requests 2.簡介 王者榮耀可以算得上是比較受歡迎的手遊之一了,應該有不少的人都入坑過農藥,我們今天的目的就是要爬取王者榮耀的高

Python爬蟲初探 - selenium+beautifulsoup4+chromedriver需要登錄的網頁信息

-- pro tag bug gui 結果 .com 工作 ges 目標 之前的自動答復機器人需要從一個內部網頁上獲取的消息用於回復一些問題,但是沒有對應的查詢api,於是想到了用腳本模擬瀏覽器訪問網站爬取內容返回給用戶。詳細介紹了第一次探索python爬蟲的坑。 準備工作

Python爬蟲實戰專案一】大眾點評團購詳情及團購評論

1 專案簡介 從大眾點評網收集北京市所有美髮、健身類目的團購詳情以及團購評論,儲存為本地txt檔案。 技術:Requests+BeautifulSoup 以美髮為例:http://t.dianping.com/list/beijing?q=美髮 爬取內容包括: 【團購詳情】團購名稱、原

Python爬蟲實習筆記 | Week3 資料和正則再學習

2018/10/29 1.所思所想:雖然自己的考試在即,但工作上不能有半點馬虎,要認真努力,不辜負期望。中午和他們去吃飯,算是吃飯創新吧。下午爬了雞西的網站,還有一些欄位沒爬出來,正則用的不熟悉,此時終於露出端倪,心情不是很好。。明天上午把正則好好看看。 2.工作: [1].哈爾濱:html p

Python爬蟲系列之小說網

今日爬蟲—小說網 再次宣告所有爬蟲僅僅為技術交流,沒有任何惡意,若有侵權請☞私信☚ 此次爬取由主頁爬取到各本小說地址,然後通過這些地址獲取到小說目錄結構,在通過目錄結構獲取章節內容,同時以小說名字為資料夾,每一個章節為txt文字儲存到本地。 話不多說,直接上程式碼

Python爬蟲實戰 requests+beautifulsoup+ajax 半次元Top100的cos美圖

1.Python版本以及庫說明 Python3.7.1 Python版本urlencode 可將字串以URL編碼,用於編碼處理bs4 解析html的利器re 正則表示式,用於查詢頁面的一些特定內容requests 得到網頁html、jpg等資源的

Python爬蟲入門之豆瓣短評

採用工具pyCharm,python3,工具的安裝在這就不多說了,之所以採用python3是因為python2只更新維護到2020年。 新建python專案 File-Settings-project interpreter,點右上角+號,安裝requests,lx

Python爬蟲-利用正則表示式貓眼電影

利用正則來爬去貓眼電影 =================================== ===================================================== 1 ''' 2 利用正則來爬去貓眼電影 3 1. url: http://maoya

Python爬蟲(二十)_動態影評信息

type 8.0 out span none function title hot output 本案例介紹從JavaScript中采集加載的數據。更多內容請參考:Python學習指南 #-*- coding:utf-8 -*- import requests imp

python爬蟲建立代理池,5000個代理IP並進行驗證!

前面已經介紹了urllib+正則表示式和BeautifulSoup進行爬取資料的方法,今天再解決一個實際問題——構建自己的代理池。     通過爬蟲在網上進行資料的獲取,由於效率很快,換言之,訪問的速度過快,導致一段時間內的流量過大,會使得對方的伺服器壓力過

python爬蟲學習筆記分析Ajax果殼網文章

有時在使用requests抓取頁面會遇到得到的結果與在瀏覽器 中看到的結果不一樣,在瀏覽器檢查元素中可以看到的正常的顯示的網頁資料,但是requests請求得到的結果卻沒有。這是因為requests請求得到的時原始的html文件,而瀏覽器中的介面確實經過JavaScript處理資料生成的結果

推薦|23個Python爬蟲開源專案程式碼:微信、淘寶、豆瓣、知乎、微博等

今天為大家整理了23個Python爬蟲專案。整理的原因是,爬蟲入門簡單快速,也非常適合新入門的小夥伴培養信心。所有連結指向GitHub,祝大家玩的愉快 1、WechatSogou [1]– 微信公眾號爬蟲。 基於搜狗微信搜尋的微信公眾號爬蟲介面,可以擴充套件成基於搜狗搜尋的爬

python爬蟲——模擬登入教務系統成績

主要思路 1.模擬登入到教務處,獲取登入的cookie值,用獲取到的cookie值,訪問成績的網址,分析成績頁面,獲取成績資訊。 2.打包成exe檔案,方便使用 ,我們可以用自己寫的程式快速查詢我們的成績,速度要比正常登入教務處網址查詢快很多,也比超級課程表

Python爬蟲分享(一天可500萬以上的視訊)

PornHubBot原始碼地址:https://github.com/xiyouMc/WebHubBotPornHubBot專案主要是爬取全球最大成人網站PornHub的視訊標題、時長、mp4連結、封面URL和具體的PornHub連結專案爬的是PornHub.com,結構簡單

PYTHON爬蟲——必應圖片關鍵詞

這段時間在實習,在做一些各大網站圖片爬取的工作,基本告一段落,現在分別對百度圖片,google圖片,並應(Bing)圖片三個網站的圖片搜尋結果進行爬取和下載。 首先通過爬蟲過程中遇到的問題,總結如下: 1、一次頁面載入的圖片數量各個網站是

Python爬蟲學習_多程序58同城

思路:有多個頻道(類別),每個頻道下有多個商品連結,每個商品都有詳情頁。先將頻道連結中的多個商品連結爬下來放入資料庫中,再從資料庫中取出來每一個商品詳情頁連結,進行詳情頁中的資訊爬取 首先是channel_extact.py,爬取不同頻道的連結 from bs4 impo