狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

python 爬蟲如何爬取動態(tài)生成的網(wǎng)頁內(nèi)容

freeflydom
2024年11月2日 9:46 本文熱度 811

【背景】

對于網(wǎng)頁信息的采集,靜態(tài)頁面我們通常都可以通過python的request.get()庫就能獲取到整個頁面的信息。

但是對于動態(tài)生成的網(wǎng)頁信息來說,我們通過request.get()是獲取不到。

【方法】

可以通過python第三方庫selenium來配合實現(xiàn)信息獲取,采取方案:python + request + selenium + BeautifulSoup

我們拿縱橫中文網(wǎng)的小說采集舉例(注意:請查看網(wǎng)站的robots協(xié)議找到可以爬取的內(nèi)容,所謂盜亦有道):

思路整理:

  1.通過selenium 定位元素的方式找到小說章節(jié)信息

  2.通過BeautifulSoup加工后提取章節(jié)標(biāo)題和對應(yīng)的各章節(jié)的鏈接信息

  3.通過request +BeautifulSoup 按章節(jié)鏈接提取小說內(nèi)容,并將內(nèi)容存儲下來

【上代碼】

1.先在開發(fā)者工具中,調(diào)試定位所需元素對應(yīng)的xpath命令編寫方式

 2.通過selenium 中find_elements()定位元素的方式找到所有小說章節(jié),我們這里定義一個方法接受參數(shù)來使用


def Get_novel_chapters_info(url:str,xpath:str,skip_num=None,chapters_num=None):
    # skip_num 需要跳過的采集章節(jié)(默認(rèn)不跳過),chapters_num需要采集的章節(jié)數(shù)(默認(rèn)全部章節(jié))# 創(chuàng)建Chrome選項(禁用圖形界面)chrome_options = Options()
        chrome_options.add_argument("--headless")
        driver = webdriver.Chrome(options=chrome_options)
        driver.get(url)
        driver.maximize_window()
        time.sleep(3)
        # 采集小說的章節(jié)元素catalogues_list = []
        try:
            catalogues = driver.find_elements(By.XPATH,xpath)
            if skip_num is None:
                for catalogue in catalogues:
                    catalogues_list.append(catalogue.get_attribute('outerHTML'))
                driver.quit()
                if chapters_num is None:
                    return catalogues_list
                else:
                    return catalogues_list[:chapters_num]
            else:
                for catalogue in catalogues[skip_num:]:
                    catalogues_list.append(catalogue.get_attribute('outerHTML'))
                driver.quit()
                if chapters_num is None:
                    return catalogues_list
                else:
                    return catalogues_list[:chapters_num]
        except Exception:
            driver.quit()

3.把采集到的信息通過beautifulsoup加工后,提取章節(jié)標(biāo)題和鏈接內(nèi)容


        # 獲取章節(jié)標(biāo)題和對應(yīng)的鏈接信息title_link = {}
        for each in catalogues_list:
            bs = BeautifulSoup(each,'html.parser')
            chapter = bs.find('a')
            title = chapter.text
            link = 'https:' + chapter.get('href')
            title_link[title] = link

4.通過request+BeautifulSoup 按章節(jié)鏈接提取小說內(nèi)容,并保存到一個文件中


        # 按章節(jié)保存小說內(nèi)容novel_path = '小說存放的路徑/小說名稱.txt'
        with open(novel_path,'a') as f:
            for title,url in title_link.items():
                response = requests.get(url,headers={'user-agent':'Mozilla/5.0'})
                html = response.content.decode('utf-8')
                soup = BeautifulSoup(html,'html.parser')
                content = soup.find('div',class_='content').text
                # 先寫章節(jié)標(biāo)題,再寫小說內(nèi)容f.write('---小西瓜免費小說---' + '\n'*2)
                f.write(title + '\n')
                f.write(content+'\n'*3)



該文章在 2024/11/2 10:05:21 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved