国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中

這篇具有很好參考價(jià)值的文章主要介紹了Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一個(gè)比較基礎(chǔ)且常見的爬蟲,寫下來用于記錄和鞏固相關(guān)知識(shí)。

一、前置條件

本項(xiàng)目采用scrapy框架進(jìn)行爬取,需要提前安裝

pip install scrapy

# 國內(nèi)鏡像
pip install scrapy -i https://pypi.douban.com/simple

由于需要保存數(shù)據(jù)到數(shù)據(jù)庫,因此需要下載pymysql進(jìn)行數(shù)據(jù)庫相關(guān)的操作

pip install pymysql

# 國內(nèi)鏡像
pip install pymysql -i https://pypi.douban.com/simple

同時(shí)在數(shù)據(jù)庫中創(chuàng)立對應(yīng)的表

create database spider01 charset utf8;

use spider01;

# 這里簡單創(chuàng)建name和src
create table book(
  id int primary key auto_increment,
  name varchar(188),
  src varchar(188) 
);

二、項(xiàng)目創(chuàng)建

在終端進(jìn)入準(zhǔn)備存放項(xiàng)目的文件夾中

1、創(chuàng)建項(xiàng)目

scrapy startproject scrapy_book

創(chuàng)建成功后,結(jié)構(gòu)如下:

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

2、跳轉(zhuǎn)到spiders路徑

cd scrapy_book\scrapy_book\spiders

3、生成爬蟲文件

由于涉及鏈接的提取,這里生成CrawlSpider文件

scrapy genspider -t crawl read Www.dushu.com

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

注意:先將第11行中follow的值改為False,否則會(huì)跟隨從當(dāng)前頁面提取的鏈接繼續(xù)爬取,避免過度下載

4、項(xiàng)目結(jié)構(gòu)說明

接下來我們一共要修改4個(gè)文件完成爬取功能:

  • read.py: 自定義的爬蟲文件,完成爬取的功能
  • items.py: 定義數(shù)據(jù)結(jié)構(gòu)的地方,是一個(gè)繼承自scrapy.Item的類
  • pipelines.py: 管道文件,里面只有一個(gè)類,用于處理下載數(shù)據(jù)的后續(xù)處理
  • setings.py: 配置文件 比如:是否遵循robots協(xié)議,User-Agent協(xié)議

三、網(wǎng)頁分析

1、圖書分析

讀書網(wǎng)主頁:

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

在讀書網(wǎng)中,隨便選取一個(gè)分類,這里以外國小說為例進(jìn)行分析

這里我們簡單爬取它的圖片和書名,當(dāng)然也可擴(kuò)展

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

使用xpath語法對第一頁的圖片進(jìn)行分析

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

由上圖可以知道

書名://div[@class="bookslist"]//img/@alt

書圖片地址://div[@class="bookslist"]//img/@data-original 不是src屬性是因?yàn)轫撁鎴D片使用懶加載

2、頁碼分析

第一頁:外國小說 - 讀書網(wǎng)|dushu.com 或 https://www.dushu.com/book/1176_1.html

第二頁:外國小說 - 讀書網(wǎng)|dushu.com

第三頁:外國小說 - 讀書網(wǎng)|dushu.com

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

發(fā)現(xiàn)規(guī)律,滿足表達(dá)式:r"/book/1176_\d+\.html"

四、項(xiàng)目完成

1、修改items.py文件

自己定義下載數(shù)據(jù)的結(jié)構(gòu)

# Define here the models for your scraped items
#
# See documentation in:
# https://docs.scrapy.org/en/latest/topics/items.html

import scrapy


class ScrapyBookItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()

    # 書名
    name = scrapy.Field()
    # 圖片地址
    src = scrapy.Field()

2、修改settings.py文件

將第65行的ITEM_PIPELINES的注釋去掉,并在下面新增自己數(shù)據(jù)庫的相關(guān)配置

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

3、修改pipnelines.py文件

進(jìn)行下載數(shù)據(jù)的相關(guān)處理

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html


# useful for handling different item types with a single interface
from itemadapter import ItemAdapter

# 加載settings文件
from scrapy.utils.project import get_project_settings
import pymysql


class ScrapyBookPipeline:
    # 最開始執(zhí)行
    def open_spider(self,spider):
        settings = get_project_settings()
        # 獲取配置信息
        self.host = settings['DB_HOST']
        self.port = settings['DB_PORT']
        self.user = settings['DB_USER']
        self.password = settings['DB_PASSWROD']
        self.name = settings['DB_NAME']
        self.charset = settings['DB_CHARSET']

        self.connect()

    def connect(self):
        self.conn = pymysql.connect(
            host=self.host,
            port=self.port,
            user=self.user,
            password=self.password,
            db=self.name,
            charset=self.charset
        )
        self.cursor = self.conn.cursor()

    # 執(zhí)行中
    def process_item(self, item, spider):
        # 根據(jù)自己的表結(jié)構(gòu)進(jìn)行修改,我的是book表
        sql = 'insert into book(name,src) values("{}","{}")'.format(item['name'], item['src'])

        # 執(zhí)行sql語句
        self.cursor.execute(sql)
        # 提交
        self.conn.commit()

    # 結(jié)尾執(zhí)行
    def close_spider(self, spider):
        self.cursor.close()
        self.conn.close()

4、修改read.py

import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule

# 導(dǎo)入時(shí)可能有下劃線報(bào)錯(cuò),是編譯器問題,可以正常使用
from scrapy_book.items import ScrapyBookItem


class ReadSpider(CrawlSpider):
    name = "read"
    allowed_domains = ["www.dushu.com"]

    # 改為第一頁的網(wǎng)址,這樣都能滿足allow的規(guī)則,不遺漏
    start_urls = ["https://www.dushu.com/book/1176_1.html"]

    # allow屬性提取指定鏈接,下面是正則表達(dá)式    callback回調(diào)函數(shù)   follow是否跟進(jìn)就是按照提取連接規(guī)則進(jìn)行提取這里選擇False
    rules = (Rule(LinkExtractor(allow=r"/book/1176_\d+\.html"), callback="parse_item", follow=False),)

    def parse_item(self, response):
        item = {}
        # item["domain_id"] = response.xpath('//input[@id="sid"]/@value').get()
        # item["name"] = response.xpath('//div[@id="name"]').get()
        # item["description"] = response.xpath('//div[@id="description"]').get()

        # 獲取當(dāng)前頁面的所有圖片
        img_list = response.xpath('//div[@class="bookslist"]//img')
        for img in img_list:
            name = img.xpath('./@alt').extract_first()
            src = img.xpath('./@data-original').extract_first()
            book = ScrapyBookItem(name=name, src=src)

            # 進(jìn)入pipelines管道進(jìn)行下載
            yield book

5、下載

終端進(jìn)入spiders文件夾,運(yùn)行命令:scrapy crawl read

其中readspiders文件夾下read.pyname的值

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

6、結(jié)果

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

一共下載了40(每一頁的數(shù)據(jù)) * 13(頁) = 520條數(shù)據(jù)

read.py中的follow改為True即可下載該類書籍的全部數(shù)據(jù),總共有100頁,如果用流量的話謹(jǐn)慎下載,預(yù)防話費(fèi)不足。

Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中,爬蟲,數(shù)據(jù)庫,爬蟲,python

5、結(jié)語

這個(gè)爬蟲項(xiàng)目應(yīng)該可以適用于挺多場景的,不是特別多, 跟著寫一下也沒啥壞處。如果有代碼的需求的話,日后會(huì)把項(xiàng)目的代碼地址給出。因?yàn)樽约簩W(xué)爬蟲沒多久,記錄一下梳理下思路,也可以為以后有需要的時(shí)候做參考。文章來源地址http://www.zghlxwxcb.cn/news/detail-737792.html

到了這里,關(guān)于Python爬取讀書網(wǎng)的圖片鏈接和書名并保存在數(shù)據(jù)庫中的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 利用爬蟲爬取圖片并保存

    1 問題 在工作中,有時(shí)會(huì)遇到需要相當(dāng)多的圖片資源,可是如何才能在短時(shí)間內(nèi)獲得大量的圖片資源呢? 2 方法 我們知道,網(wǎng)頁中每一張圖片都是一個(gè)連接,所以我們提出利用爬蟲爬取網(wǎng)頁圖片并下載保存下來。 首先通過網(wǎng)絡(luò)搜索找到需要的圖片集,將其中圖片鏈接復(fù)制然

    2024年02月13日
    瀏覽(19)
  • 利用ISBN/書名爬取“全國圖書館參考咨詢聯(lián)盟”網(wǎng)站從而得到圖書學(xué)科、中圖分類號(hào)、主題等信息

    先把代碼的坑說一下哈哈,盡管代碼做了很多異常處理相對健壯,仍然有一個(gè)問題就是每次抓取八十條左右的數(shù)據(jù)時(shí)就會(huì)彈出驗(yàn)證碼,代碼經(jīng)過微調(diào)從原來的一次性抓取十幾條到八十多條,差不多半小時(shí)G一次。如果介意的話慎重訂閱哈,也可私信聯(lián)系我 利用ISBN/書名抓取“全

    2024年02月05日
    瀏覽(20)
  • 掌握Python 機(jī)器學(xué)習(xí) 讀書筆記 9 (流水線 && 算法保存)

    在機(jī)器學(xué)習(xí)里可以看到有一些必要的步驟, 這些步驟是可以作為workflow 自動(dòng)化的。 而且流水線可以對每個(gè)fold來進(jìn)行處理, 這樣很大程度避免了數(shù)據(jù)泄露。 這也是為什么使用流水線的原因。 使用機(jī)器學(xué)習(xí)的時(shí)候很容易落入一個(gè)陷阱, 就是泄露你的訓(xùn)練數(shù)據(jù)到測試數(shù)據(jù)。 為

    2024年03月09日
    瀏覽(26)
  • 使用Python爬取給定網(wǎng)頁的所有鏈接(附完整代碼)

    使用Python爬取給定網(wǎng)頁的所有鏈接(附完整代碼)

    ?? 個(gè)人網(wǎng)站:【海擁】【摸魚游戲】【神級(jí)源碼資源網(wǎng)】 ?? 前端學(xué)習(xí)課程:??【28個(gè)案例趣學(xué)前端】【400個(gè)JS面試題】 ?? 想尋找共同學(xué)習(xí)交流、摸魚劃水的小伙伴,請點(diǎn)擊【摸魚學(xué)習(xí)交流群】 此腳本從給定的網(wǎng)頁中檢索所有鏈接,并將其保存為 txt 文件。(文末有完整源

    2024年02月08日
    瀏覽(20)
  • python爬取招聘網(wǎng)信息并保存為csv文件

    python爬取招聘網(wǎng)信息并保存為csv文件

    我們以獵聘網(wǎng)為例 一、打開網(wǎng)站查找信息 進(jìn)入后搜索想要爬取的崗位信息,右鍵選擇 “檢查” 進(jìn)入開發(fā)者界面 點(diǎn)擊右上角的network,選擇doc 然后點(diǎn)擊圖中的搜索按鈕,輸入想要爬取的崗位名稱,然后刷新頁面,選擇搜索下邊的第二個(gè) 這個(gè)時(shí)候我們看到有我們需要的url,從

    2024年02月09日
    瀏覽(21)
  • Python多線程爬取鏈家房源,保存表格,實(shí)現(xiàn)數(shù)據(jù)可視化分析!

    使用Python來爬取二手房源數(shù)據(jù),并保存表格,實(shí)現(xiàn)數(shù)據(jù)分析! Python 3.8 Pycharm 模塊 ? 創(chuàng)建文件 ? 發(fā)送請求, 模擬瀏覽器 對于 url地址 發(fā)送請求 模擬瀏覽器 ? 請求網(wǎng)址/網(wǎng)站 ? 發(fā)送請求 ? 獲取數(shù)據(jù), 獲取網(wǎng)頁源代碼 獲取服務(wù)器返回響應(yīng)數(shù)據(jù) 解析數(shù)據(jù), 提取我們想要的數(shù)據(jù)內(nèi)容

    2024年02月05日
    瀏覽(28)
  • Python爬蟲-爬取文檔內(nèi)容,如何去掉文檔中的表格,并保存正文內(nèi)容

    Python爬蟲-爬取文檔內(nèi)容,如何去掉文檔中的表格,并保存正文內(nèi)容

    前言 本文是該專欄的第58篇,后面會(huì)持續(xù)分享python爬蟲干貨知識(shí),記得關(guān)注。 做過爬蟲項(xiàng)目的同學(xué),可能或多或少爬取過文檔數(shù)據(jù),比如說“政務(wù)網(wǎng)站,新聞網(wǎng)站,小說網(wǎng)站”等平臺(tái)的文檔數(shù)據(jù)。爬取文檔數(shù)據(jù),筆者這里就不過多詳述,而本文, 筆者將主要介紹在爬取文檔

    2024年02月08日
    瀏覽(28)
  • 【python】爬取斗魚直播照片保存到本地目錄【附源碼+文末免費(fèi)送書】

    【python】爬取斗魚直播照片保存到本地目錄【附源碼+文末免費(fèi)送書】

    英杰社區(qū) https://bbs.csdn.net/topics/617804998 ??? 這篇博客將介紹如何使用Python編寫一個(gè)爬蟲程序,從斗魚直播網(wǎng)站上獲取圖片信息并保存到本地。我們將使用 request s 模塊發(fā)送HTTP請求和接收響應(yīng),以及 os 模塊處理文件和目錄操作。 ??????? 如果出現(xiàn)模塊報(bào)錯(cuò) ??????? 進(jìn)入控

    2024年02月04日
    瀏覽(17)
  • 【python】爬取知乎熱榜Top50保存到Excel文件中【附源碼】

    【python】爬取知乎熱榜Top50保存到Excel文件中【附源碼】

    歡迎來到英杰社區(qū) https://bbs.csdn.net/topics/617804998 ??? 這篇博客將介紹如何使用Python編寫一個(gè)爬蟲程序,從斗魚直播網(wǎng)站上獲取圖片信息并保存到本地。我們將使用 request s 模塊發(fā)送HTTP請求和接收響應(yīng),以及 os 模塊處理文件和目錄操作。 ??????? 如果出現(xiàn)模塊報(bào)錯(cuò) ?????

    2024年02月03日
    瀏覽(43)
  • 【Python爬蟲實(shí)戰(zhàn)】1.爬取A股上市公司年報(bào)鏈接并存入Excel

    【Python爬蟲實(shí)戰(zhàn)】1.爬取A股上市公司年報(bào)鏈接并存入Excel

    ?數(shù)據(jù)來源:巨潮資訊 ?項(xiàng)目需求:按照股票代碼,公司名稱,年報(bào)全稱,年份,下載鏈接等要素寫入excel表 ?使用語言:python ?第三方庫:requests, re , time等 成品展示:? 廢話就到這里,直接開干! 1.尋找接口 眾所周知,爬取網(wǎng)頁數(shù)據(jù)一般可以通過尋找網(wǎng)頁結(jié)構(gòu)規(guī)律和爬取接

    2024年02月04日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包