最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用python實現(xiàn)查看溧陽的攝影圈

 更新時間:2022年05月17日 11:56:05   作者:??夢想橡皮擦????  
這篇文章主要介紹了利用python實現(xiàn)查看溧陽的攝影圈,文章基于BeautifulSoup的相關(guān)資料展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下

前言:

本篇博客繼續(xù)學(xué)習(xí)BeautifulSoup,目標(biāo)站點選取“溧陽攝影圈”,這一地方論壇。

目標(biāo)站點分析

本次要采集的目標(biāo)站點分頁規(guī)則如下:

http://www.jsly001.com/thread-htm-fid-45-page-{頁碼}.html

代碼采用多線程 threading 模塊+requests 模塊+BeautifulSoup 模塊編寫。

采取規(guī)則依據(jù)列表頁 → 詳情頁:

溧陽攝影圈圖片采集代碼

本案例屬于實操案例,先展示完整代碼,然后基于注釋與重點函數(shù)進(jìn)行說明。

主要實現(xiàn)步驟如下所示:

  • 設(shè)置日志輸出級別
  • 聲明一個 LiYang 類,其繼承自 threading.Thread
  • 實例化多線程對象
  • 每個線程都去獲取全局資源
  • 調(diào)用html解析函數(shù)
  • 獲取板塊主題分割區(qū)域,主要為防止獲取置頂?shù)闹黝}
  • 使用 lxml 進(jìn)行解析
  • 解析出標(biāo)題與數(shù)據(jù)
  • 解析圖片地址
  • 保存圖片
import random
import threading
import logging
from bs4 import BeautifulSoup
import requests
import lxml
logging.basicConfig(level=logging.NOTSET) # 設(shè)置日志輸出級別
# 聲明一個 LiYang 類,其繼承自 threading.Thread
class LiYangThread(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self) # 實例化多線程對象
        self._headers = self._get_headers() # 隨機獲取 ua
        self._timeout = 5 # 設(shè)置超時時間

    # 每個線程都去獲取全局資源
    def run(self):
        # while True: # 此處為多線程開啟位置
        try:
            res = requests.get(url="http://www.jsly001.com/thread-htm-fid-45-page-1.html", headers=self._headers,
                               timeout=self._timeout) # 測試獲取第一頁數(shù)據(jù)
        except Exception as e:
            logging.error(e)
        if res is not None:
            html_text = res.text
            self._format_html(html_text) # 調(diào)用html解析函數(shù)

    def _format_html(self, html):
        # 使用 lxml 進(jìn)行解析
        soup = BeautifulSoup(html, 'lxml')

        # 獲取板塊主題分割區(qū)域,主要為防止獲取置頂?shù)闹黝}
        part_tr = soup.find(attrs={'class': 'bbs_tr4'})

        if part_tr is not None:
            items = part_tr.find_all_next(attrs={"name": "readlink"}) # 獲取詳情頁地址
        else:
            items = soup.find_all(attrs={"name": "readlink"})
        # 解析出標(biāo)題與數(shù)據(jù)
        data = [(item.text, f'http://www.jsly001.com/{item["href"]}') for item in items]
        # 進(jìn)入標(biāo)題內(nèi)頁
        for name, url in data:
            self._get_imgs(name, url)

    def _get_imgs(self, name, url):
        """解析圖片地址"""
        try:
            res = requests.get(url=url, headers=self._headers, timeout=self._timeout)
        except Exception as e:
            logging.error(e)
		# 圖片提取邏輯
        if res is not None:
            soup = BeautifulSoup(res.text, 'lxml')
            origin_div1 = soup.find(attrs={'class': 'tpc_content'})
            origin_div2 = soup.find(attrs={'class': 'imgList'})
            content = origin_div2 if origin_div2 else origin_div1

            if content is not None:
                imgs = content.find_all('img')

                # print([img.get("src") for img in imgs])
                self._save_img(name, imgs) # 保存圖片
    def _save_img(self, name, imgs):
        """保存圖片"""
        for img in imgs:
            url = img.get("src")
            if url.find('http') < 0:
                continue
            # 尋找父標(biāo)簽中的 id 屬性
            id_ = img.find_parent('span').get("id")

            try:
                res = requests.get(url=url, headers=self._headers, timeout=self._timeout)
            except Exception as e:
                logging.error(e)

            if res is not None:
                name = name.replace("/", "_")
                with open(f'./imgs/{name}_{id_}.jpg', "wb+") as f: # 注意在 python 運行時目錄提前創(chuàng)建 imgs 文件夾
                    f.write(res.content)
    def _get_headers(self):
        uas = [
            "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)",
        ]
        ua = random.choice(uas)
        headers = {
            "user-agent": ua
        }
        return headers
if __name__ == '__main__':
    my_thread = LiYangThread()
    my_thread.run()

本次案例采用中,BeautifulSoup 模塊采用 lxml 解析器 對 HTML 數(shù)據(jù)進(jìn)行解析,后續(xù)多采用此解析器,在使用前注意先導(dǎo)入 lxml 模塊。

數(shù)據(jù)提取部分采用 soup.find() 與 soup.find_all() 兩個函數(shù)進(jìn)行,代碼中還使用了 find_parent() 函數(shù),用于采集父級標(biāo)簽中的 id 屬性。

# 尋找父標(biāo)簽中的 id 屬性
id_ = img.find_parent('span').get("id")

代碼運行過程出現(xiàn) DEBUG 信息,控制 logging 日志輸出級別即可。![用python看溧陽攝影圈,里面照片非常真

到此這篇關(guān)于利用python實現(xiàn)查看溧陽的攝影圈的文章就介紹到這了,更多相關(guān)python查看攝影圈內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python編寫判斷真實文件類型工具

    Python編寫判斷真實文件類型工具

    常在河邊走,哪能不濕鞋,網(wǎng)上獲取的各種文件后綴真真假假,甚至一不小心就會中招,所以本文就來用Python編寫一個判斷真實文件類型工具吧
    2025-01-01
  • python?用matplotlib繪制折線圖詳情

    python?用matplotlib繪制折線圖詳情

    這篇文章主要講訴了python?用matplotlib繪制折線圖的詳細(xì)內(nèi)容,眾所周知,matplotlib?是一款功能強大開源的數(shù)據(jù)可視化模塊,憑借著強大的擴展性構(gòu)建出更高級別的繪圖工具接口如seaborn、ggplot,下面我們就根據(jù)之前兩篇文章基礎(chǔ)掌握折線圖的繪制,需要的朋友可以參考一下
    2021-12-12
  • Django用內(nèi)置方法實現(xiàn)簡單搜索功能的方法

    Django用內(nèi)置方法實現(xiàn)簡單搜索功能的方法

    這篇文章主要介紹了Django用內(nèi)置方法實現(xiàn)簡單搜索功能的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Python獲取Redis所有Key以及內(nèi)容的方法

    Python獲取Redis所有Key以及內(nèi)容的方法

    今天小編就為大家分享一篇Python獲取Redis所有Key以及內(nèi)容的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Pandas中inf值替換的方法

    Pandas中inf值替換的方法

    本文主要介紹了Pandas中inf值替換的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 基于logstash實現(xiàn)日志文件同步elasticsearch

    基于logstash實現(xiàn)日志文件同步elasticsearch

    這篇文章主要介紹了基于logstash實現(xiàn)日志文件同步elasticsearch,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • python 統(tǒng)計代碼耗時的幾種方法分享

    python 統(tǒng)計代碼耗時的幾種方法分享

    本文實例講述了Python中統(tǒng)計代碼片段、函數(shù)運行耗時的幾種方法,分享給大家,僅供參考。
    2021-04-04
  • Python入門基本操作列表排序用法詳解

    Python入門基本操作列表排序用法詳解

    本篇文中主要介紹列表的基本的組成,怎么訪問列表、列表的切片、列表的排序、列表的添加、列表的刪除等內(nèi)容,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09
  • 使用Python3實現(xiàn)判斷函數(shù)的圈復(fù)雜度

    使用Python3實現(xiàn)判斷函數(shù)的圈復(fù)雜度

    編寫函數(shù)最重要的原則就是:別寫太復(fù)雜的函數(shù),那什么樣的函數(shù)才能算是過于復(fù)雜?一般會通過兩個標(biāo)準(zhǔn)來判斷,長度和圈復(fù)雜度,下面我們就來看看如何使用Python判斷函數(shù)的圈復(fù)雜度吧
    2024-04-04
  • Python使用htpasswd實現(xiàn)基本認(rèn)證授權(quán)的例子

    Python使用htpasswd實現(xiàn)基本認(rèn)證授權(quán)的例子

    這篇文章主要介紹了Python使用htpasswd實現(xiàn)基本認(rèn)證授權(quán)的例子,服務(wù)器使用的是mini_httpd,需要的朋友可以參考下
    2014-06-06

最新評論

清河县| 华容县| 乌鲁木齐市| 普定县| 漳浦县| 乌兰察布市| 克东县| 汉阴县| 颍上县| 六枝特区| 江油市| 枞阳县| 彩票| 全椒县| 格尔木市| 成都市| 类乌齐县| 高淳县| 蓝山县| 荥经县| 安岳县| 拉萨市| 巴东县| 思南县| 邻水| 温宿县| 安国市| 舟山市| 阳原县| 广灵县| 康马县| 格尔木市| 温泉县| 荔波县| 灵山县| 建瓯市| 秦安县| 嘉黎县| 邵阳市| 武强县| 布拖县|