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

用python從零開始做一個最簡單的小說爬蟲帶GUI界面(2/3)

這篇具有很好參考價值的文章主要介紹了用python從零開始做一個最簡單的小說爬蟲帶GUI界面(2/3)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前一章博客

前言

主函數(shù)的代碼實現(xiàn)

逐行代碼解析

獲取鏈接

獲取標題

獲取網(wǎng)頁源代碼

獲取各個文章的鏈接

函數(shù)的代碼

導入庫文件

獲取文章的標題

獲取文章的源代碼

提取文章目錄的各個文章的鏈接

總代碼

下一章內容


前一章博客

用python從零開始做一個最簡單的小說爬蟲帶GUI界面(1/3)_木木em哈哈的博客-CSDN博客而且當時的爬蟲代碼有許多問題但是最近學了PyQt5想著搞個帶界面的爬蟲玩玩那就啥也不說開搞!??!https://blog.csdn.net/mumuemhaha/article/details/132394257?spm=1001.2014.3001.5501

前言

前一章博客我們講了怎么通過PyQt5來制作圖形化界面,并且進行一些基本設置

接下來兩章我們主要講核心爬蟲代碼的實現(xiàn)

用python從零開始做一個最簡單的小說爬蟲帶GUI界面(2/3),python,python,爬蟲,開發(fā)語言,服務器,算法,c++

主函數(shù)的代碼實現(xiàn)

?前一章中的代碼

self.Button_run.clicked.connect(self.F_run)

代表點擊按鈕執(zhí)行F_run函數(shù)(注意這里不要打括號)

那么我們就需要定義這個函數(shù)

思路大概就是這樣

    def F_run(self):
        link_1=self.line_link.text()
        title_1=F_gettitle(link_1)
        self.text_result.setText(f"標題獲取成功——{title_1}")
        # file_1=open(f'{title_1}.txt',mode='w',encoding='utf-8  ')
        test_1=F_getyuan(link_1)
        self.text_result.setText("提取源代碼成功")
        time.sleep(1)
        search_1=F_searchlink(test_1)
        self.text_result.append("提取文章鏈接成功")
        pachong(search_1,title_1)

逐行代碼解析

獲取鏈接

首先通過

self.line_link.text()

命令獲取在輸入框中輸入的鏈接

并且把它賦值到link_1中

獲取標題

同時我會通過爬取網(wǎng)頁鏈接的源代碼進行提取關鍵字獲得文章的標題

也就是小說的名字

title_1=F_gettitle(link_1)

獲取網(wǎng)頁源代碼

爬取小說文章目錄網(wǎng)頁的源代碼并且賦值為test_1(用于后續(xù)提取各個文章的鏈接)

test_1=F_getyuan(link_1)

獲取各個文章的鏈接

search_1=F_searchlink(test_1)

把得到的源代碼進行提取篩選獲得各個文章的鏈接

其中self.text_result.setText以及self.text_result.append是在下面紅圈中顯示的東西

(美觀用,可以不加)

用python從零開始做一個最簡單的小說爬蟲帶GUI界面(2/3),python,python,爬蟲,開發(fā)語言,服務器,算法,c++

函數(shù)的代碼

這里為了不讓代碼過于長,我自己有單獨新建了兩個python文件用于存放python函數(shù)

導入庫文件

import requests
import re
import numpy as np
from lxml import etree

? request用于網(wǎng)絡請求

re以及l(fā)xml用于過濾源代碼的信息

而numpy用于存儲元素

獲取文章的標題

def F_gettitle(link_0):
    head_qb={
        'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36'
    }
    test_1=requests.get(url=link_0,headers=head_qb)
    test_yuan=test_1.text
    dom=etree.HTML(test_yuan)
    test_2=dom.xpath('/html/body/article[1]/div[2]/div[2]/h1/text()')
    return test_2[0]

很簡單的一個的結構

由requests來獲取源代碼

之后用lxml中的tree來篩選源代碼

(用xpath路徑時最后要加text()輸出文本形式,不然出不了源代碼)

xpath路徑可以通過按f12控制臺來提取

用python從零開始做一個最簡單的小說爬蟲帶GUI界面(2/3),python,python,爬蟲,開發(fā)語言,服務器,算法,c++

獲取文章的源代碼

應該很好理解,就直接寫代碼了

def F_getyuan(link_1):
    head_qb={
        'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36'
    }
    test_1=requests.get(url=link_1,headers=head_qb)
    test_yuan=test_1.text
    test_yuan=str(test_yuan)
    return test_yuan

提取文章目錄的各個文章的鏈接

def F_searchlink(link_2):
    re_1='<a id="haitung" href="(.*?)" rel="chapter">'
    re_1=re.compile(re_1)
    link_3=re.findall(re_1,link_2)
    link_max=np.array([])
    for link_1 in link_3:
        link_4=f'http://www.biquge66.net{link_1}'
        link_max=np.append(link_max,link_4)

    return link_max

這里我直接用re庫的正則來進行匹配了匹配的鏈接

注意由于匹配的鏈接不是完整鏈接

所以還需要進行拼接

用python從零開始做一個最簡單的小說爬蟲帶GUI界面(2/3),python,python,爬蟲,開發(fā)語言,服務器,算法,c++

?拼接完成后便可以直接打開

在這里我先存儲到數(shù)組中方便之后爬取各個文章的源代碼

然后進行返回

總代碼

main.py

import sys
# PyQt5中使用的基本控件都在PyQt5.QtWidgets模塊中
from PyQt5.QtWidgets import QApplication, QMainWindow
# 導入designer工具生成的login模塊
from win import Ui_MainWindow
from test_1 import *
import time
class MyMainForm(QMainWindow, Ui_MainWindow):
    def __init__(self, parent=None):
        super(MyMainForm, self).__init__(parent)
        self.setupUi(self)
        self.Button_close.clicked.connect(self.close)
        self.Button_run.clicked.connect(self.F_run)

    def F_run(self):
        link_1=self.line_link.text()
        title_1=F_gettitle(link_1)
        self.text_result.setText(f"標題獲取成功——{title_1}")
        # file_1=open(f'{title_1}.txt',mode='w',encoding='utf-8  ')
        test_1=F_getyuan(link_1)
        self.text_result.append("提取源代碼成功")
        time.sleep(1)
        search_1=F_searchlink(test_1)
        self.text_result.append("提取文章鏈接成功")
        pachong(search_1,title_1)

if __name__ == "__main__":
    # 固定的,PyQt5程序都需要QApplication對象。sys.argv是命令行參數(shù)列表,確保程序可以雙擊運行
    app = QApplication(sys.argv)
    # 初始化
    myWin = MyMainForm()
    # 將窗口控件顯示在屏幕上
    myWin.show()
    # 程序運行,sys.exit方法確保程序完整退出。
    sys.exit(app.exec_())

test_1.py

import requests
import re
import numpy as np
from lxml import etree
#獲取文章標題
def F_gettitle(link_0):
    head_qb={
        'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36'
    }
    test_1=requests.get(url=link_0,headers=head_qb)
    test_yuan=test_1.text
    dom=etree.HTML(test_yuan)
    test_2=dom.xpath('/html/body/article[1]/div[2]/div[2]/h1/text()')
    return test_2[0]


#提取源代碼
def F_getyuan(link_1):
    head_qb={
        'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36'
    }
    test_1=requests.get(url=link_1,headers=head_qb)
    test_yuan=test_1.text
    test_yuan=str(test_yuan)
    return test_yuan


#查詢所有小說章節(jié)鏈接
def F_searchlink(link_2):
    re_1='<a id="haitung" href="(.*?)" rel="chapter">'
    re_1=re.compile(re_1)
    link_3=re.findall(re_1,link_2)
    link_max=np.array([])
    for link_1 in link_3:
        link_4=f'http://www.biquge66.net{link_1}'
        link_max=np.append(link_max,link_4)

    return link_max


# #輸出文章內容
# def F_edittxt(link_3):
#     head_qb={
#         'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Mobile Safari/537.36'
#     }
#     trytimes = 3
#     for i in range(trytimes):
#         try:
#             proxies = None
#             test_1=requests.get(url=link_3,headers=head_qb, verify=False, proxies=None, timeout=3)
#             if test_1.status_code == 200:
#                 break
#         except:
#             print(f'requests failed {i} time')
#     #提取文章鏈接
#     re_2='<p>(.*?)</p>'
#     re_2=re.compile(re_2)
#     #提取文章標題
#     re_3='<h1 class="bookname">(.*?)</h1>'
#     re.compile(re_3)
#     test_2=np.array([])
#     test_3=np.array([])
#     test_2=re.findall(re_2,test_1.text)
#     test_3 = re.findall(re_3, test_1.text)
#     #放在數(shù)組的最后一個
#     test_2=np.append(test_3,test_2)
#     return test_2


下一章內容

最后獲取了所有的章節(jié)鏈接了,接下來就要爬取文章了

本來可以一起寫的(可以看到我test_1.py中注釋掉的部分),但是后面發(fā)現(xiàn)出了一些問題

才有了下一章內容

下一章會詳細說明的文章來源地址http://www.zghlxwxcb.cn/news/detail-670343.html

到了這里,關于用python從零開始做一個最簡單的小說爬蟲帶GUI界面(2/3)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • Python實戰(zhàn)之小說下載神器(完結)今天教你如何白拿一款代碼版資源豐富的小說下載器GUI界面編程,海量資源免費看~(追書必備神器)

    Python實戰(zhàn)之小說下載神器(完結)今天教你如何白拿一款代碼版資源豐富的小說下載器GUI界面編程,海量資源免費看~(追書必備神器)

    愛看小伙伴想要一款資源豐富,好用的看小說的軟件。 所以為大家做了一款Python版的小程序,這個系列內容已經到尾聲了,上一期爬了小說排行榜 的所有小說內容采集,這一期的話終于到最后的階段啦~ 這一期的代碼有點兒多,本來是分為兩個內容文章的,想了下閱讀量不行

    2024年02月09日
    瀏覽(29)
  • 從零開始,搭建一個簡單的UVM驗證平臺(四)

    從零開始,搭建一個簡單的UVM驗證平臺(四)

    UVM前置基礎: 1.UVM基礎-factory機制、phase機制 2.UVM基礎-組件(driver、monitor、agent...) 3.UVM基礎-TLM通信機制(一) 4.UVM基礎-TLM通信機制(二) ...還在更新 從零搭建一個UVM驗證平臺: 從零開始,搭建一個簡單的UVM驗證平臺(一) 從零開始,搭建一個簡單的UVM驗證平臺(二) 從

    2023年04月14日
    瀏覽(34)
  • 從零開始學python(十六)爬蟲集群部署

    從零開始學python(十六)爬蟲集群部署

    今天講述Python框架源碼專題最后一個部分,爬蟲集群部署,前面更新了十五個從零開始學python的系列文章,分別是 : 1.編程語法必修篇 2.網(wǎng)絡編程篇 3.多線程/多進程/協(xié)程篇 4.MySQL數(shù)據(jù)庫篇 5.Redis數(shù)據(jù)庫篇 6.MongoDB數(shù)據(jù)庫篇 7.機器學習篇 8.全棧開發(fā)篇 9.Numpy/pandas/matplotlib篇 10.H

    2024年02月13日
    瀏覽(25)
  • 【簡單】使用ChatGPT和QT從零開始構建一個計算器應用

    【簡單】使用ChatGPT和QT從零開始構建一個計算器應用

    在這篇博文中,我將向大家展示如何使用ChatGPT和Qt來構建一個完整的計算器應用。我們將從零開始,逐步引導您完成整個項目,包括需求分析、軟件設計、代碼編寫等環(huán)節(jié)。該項目代碼全部由GPT編寫,10分鐘完成。 本項目旨在使用ChatGPT和Qt技術構建一個功能完備的計算器應用。

    2024年02月11日
    瀏覽(26)
  • PySimpleGUI:使用 Python 輕松制作一個圖形界面(GUI)

    PySimpleGUI:使用 Python 輕松制作一個圖形界面(GUI)

    大家好,GUI(圖形用戶界面),顧名思義就是用圖形的方式,來顯示計算機操作的界面,更加方便且直觀。 一個好看又好用的GUI,可以大大提高大家的使用體驗,提高效率。比如你想開發(fā)一個計算器,如果只是一個程序輸入,輸出窗口的話,是沒有用戶體驗的。所以開發(fā)一個圖

    2024年02月16日
    瀏覽(17)
  • 從零開始搭建游戲服務器 第一節(jié) 創(chuàng)建一個簡單的服務器架構

    從零開始搭建游戲服務器 第一節(jié) 創(chuàng)建一個簡單的服務器架構

    由于現(xiàn)在java web太卷了,所以各位同行可以考慮換一個賽道,做游戲還是很開心的。 本篇教程給新人用于學習游戲服務器的基本知識,給新人們一些學習方向,有什么錯誤的地方歡迎各位同行進行討論。 本篇教程預計使用Java+Redis+Mongo 本著先完成再完美的原則,從最簡單的

    2024年02月10日
    瀏覽(19)
  • 從零開始學習Python爬蟲技術,并應用于市場競爭情報收集

    在當今信息爆炸的時代,市場競爭情報收集對企業(yè)的發(fā)展至關重要。Python爬蟲技術可以幫助我們高效地收集網(wǎng)絡上的有價值信息。本文將從零開始介紹Python爬蟲技術,并探討如何將其應用于市場競爭情報收集。 一、Python爬蟲技術基礎 安裝Python環(huán)境 首先,確保您已經安裝了

    2024年02月10日
    瀏覽(21)
  • 從零開始學python(十三)爬蟲工程師自動化和抓包

    從零開始學python(十三)爬蟲工程師自動化和抓包

    回顧之前講述了python語法編程 必修入門基礎和網(wǎng)絡編程,多線程/多進程/協(xié)程等方面的內容,后續(xù)講到了數(shù)據(jù)庫編程篇MySQL,Redis,MongoDB篇,和機器學習,全棧開發(fā),數(shù)據(jù)分析,爬蟲數(shù)據(jù)采集前面沒看的也不用往前翻,系列文已經整理好了: 1.跟我一起從零開始學python(一)

    2024年02月14日
    瀏覽(29)
  • Python創(chuàng)建一個GUI(Tkinter)選擇文件的界面獲取文件路徑

    Python創(chuàng)建一個GUI(Tkinter)選擇文件的界面獲取文件路徑

    1、點擊【選擇路徑可以選擇文件】 2、【確定(開始執(zhí)行)】 這個按鈕沒有綁定函數(shù),大家可以根據(jù)自己的需求綁定函數(shù)

    2024年02月11日
    瀏覽(24)
  • 用Python做一個下載器,從獲取數(shù)據(jù)到編寫GUI界面

    用Python做一個下載器,從獲取數(shù)據(jù)到編寫GUI界面

    前言 嗨嘍,大家好呀~這里是愛看美女的茜茜吶 對于廣大書蟲而言,沒有小說看是最痛苦的,你身邊有這樣的人嗎? 今天咱們分享一個小說下載器代碼,打包成exe后,發(fā)給你的小伙伴也能直接使用… 案例基本實現(xiàn)思路? 一、數(shù)據(jù)來源分析 明確需求: 采集的網(wǎng)站是什么? 采集的

    2024年02月09日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領取紅包

二維碼2

領紅包