欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

python 爬蟲如何爬取動態生成的網頁內容

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

【背景】

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

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

【方法】

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

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

思路整理:

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

  2.通過BeautifulSoup加工后提取章節標題和對應的各章節的鏈接信息

  3.通過request +BeautifulSoup 按章節鏈接提取小說內容,并將內容存儲下來

【上代碼】

1.先在開發者工具中,調試定位所需元素對應的xpath命令編寫方式

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


def Get_novel_chapters_info(url:str,xpath:str,skip_num=None,chapters_num=None):
    # skip_num 需要跳過的采集章節(默認不跳過),chapters_num需要采集的章節數(默認全部章節)# 創建Chrome選項(禁用圖形界面)chrome_options = Options()
        chrome_options.add_argument("--headless")
        driver = webdriver.Chrome(options=chrome_options)
        driver.get(url)
        driver.maximize_window()
        time.sleep(3)
        # 采集小說的章節元素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加工后,提取章節標題和鏈接內容


        # 獲取章節標題和對應的鏈接信息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 按章節鏈接提取小說內容,并保存到一個文件中


        # 按章節保存小說內容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
                # 先寫章節標題,再寫小說內容f.write('---小西瓜免費小說---' + '\n'*2)
                f.write(title + '\n')
                f.write(content+'\n'*3)



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