1. 程式人生 > >python3爬取指定百度貼吧頁面並儲存成本地文件(批量爬取貼吧頁面資料)

python3爬取指定百度貼吧頁面並儲存成本地文件(批量爬取貼吧頁面資料)

首先我們建立一個python檔案, tieba.py,我們要完成的是,輸入指定百度貼吧名字與指定頁面範圍之後爬取頁面html程式碼,我們首先觀察貼吧url的規律,比如:

發現規律了吧,貼吧中每個頁面不同之處,就是url最後的pn的值,其餘的都是一樣的,我們可以抓住這個規律(kw表示貼吧名,採用url編碼)。
清楚了url規則,我們便可以利用urllib進行批量式資料爬取,程式碼如下:

# -*- coding:utf-8 -*-
from urllib import request as urllib2
from urllib import parse
import random

def
loadPage(url, page):
''' 根據url獲取伺服器響應檔案 url:需要爬取的url ''' print('---------正在下載頁面%d-------' % page) ua_list = [ "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv2.0.1) Gecko/20100101 Firefox/4.0.1", "Mozilla/5.0 (Windows NT 6.1; rv2.0.1) Gecko/20100101 Firefox/4.0.1", "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11"
, "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11" ] header = random.choice(ua_list) request = urllib2.Request(url) request.add_header('User-Agent'
, header) response = urllib2.urlopen(request) html = response.read() return html def write(html, page): ''' 將html檔案寫入本地 :param html: 伺服器響應檔案內容 :return: ''' data = html file_name = 'tieba{}.txt'.format(page) print('---------正在儲存檔案%s-------'%file_name) # 運用with open as語句使程式碼更加簡潔 避免寫異常處理和檔案關閉語句 with open(file_name,'w',encoding='utf-8') as file: file.write(data.decode()) print('---------success!---------') def tiebaSpider(url, kw, begin, end): ''' 爬取貼吧資訊 ''' words = { 'kw':kw } kw = parse.urlencode(words) url = url % (kw) for page in range(begin, end + 1): pn = ((page-1)*50) ful_url = url + str(pn) html = loadPage(url, page) write(html, page) if __name__ == '__main__': kw = input('請輸入爬取貼吧名:') beginPage = int(input('請輸入起始頁:')) endPage = int(input('請輸入結束頁:')) url = r'http://tieba.baidu.com/f?%s&pn=' tiebaSpider(url, kw, beginPage, endPage)

控制檯結果如下:

請輸入爬取貼吧名:河南
請輸入起始頁:1
請輸入結束頁:3
---------正在下載頁面1-------
---------正在儲存檔案tieba1.txt-------
---------success!---------
---------正在下載頁面2-------
---------正在儲存檔案tieba2.txt-------
---------success!---------
---------正在下載頁面3-------
---------正在儲存檔案tieba3.txt-------
---------success!---------

Process finished with exit code 0

相關推薦

python3指定頁面儲存成本批量頁面資料

首先我們建立一個python檔案, tieba.py,我們要完成的是,輸入指定百度貼吧名字與指定頁面範圍之後爬取頁面html程式碼,我們首先觀察貼吧url的規律,比如: 發現規律了吧,貼吧中每個頁面不同之處,就是url最後的pn的值,其餘的都是一樣的,我們

Python爬蟲系列之四:利用PythonPyODPS頁面整合成PDF

文章架構 開發場景 在日常開發過程中, 經常需要參考一些文件。對於線上文件,往往由於網速等原因,用起來總不是那麼(ma)順(fan)心。 開發工具 Anaconda Python 2 實現方案 基於 bs4 模組標籤解析 爬取

使用JS模板引擎生成PDF和Word

用JS模板引擎能高效的生成pdf和word文件,例子中使用了百度的JS模板引擎,其它模板引擎也是可以的。模板的標籤使用了XDOC,詳細可見:http://xdoc.aliapp.com/xml.html,模板可以視覺化設計 <!DOCTYPE html> <html> <h

PowerShell獲取指定目錄下檔案列表和大小儲存成txt

#列出filepath下所有子資料夾並統計子資料夾大小 function filesize ([string]$filepath) { if ($filepath -eq $null) { throw "路徑不能為空" } $

爬蟲實例——python百科相關一千個詞條

管理器 name 詞條 enc aik lib cnblogs response ons 調度器: import url_manager,html_downloader,html_parser,html_outputer class SpiderMain(object

爬蟲任務二:(用到htmlunit和jsoup)通過搜索引擎關鍵字搜到的新聞標題和url,保存在本地主體借鑒了網上的資料

標題 code rgs aps snap one reader url 預處理 采用maven工程,免著到處找依賴jar包 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:

urllib基礎-利用網站結構網頁-搜索

ont 獲取網頁 不能 style 其中 baidu TP bsp 拼接   有的時候爬取網頁,可以利用網站額結構特點爬取網頁   在百度搜索框中輸入搜索內容,單擊搜索,瀏覽器會發送一個帶有參數的url請求。嘗試刪除其中的一些參數,只剩下wd這個參數。發現wd是搜索內容。這

Scrapy簡單頁面

Scrapy爬取百度頁面 ------------------------------------------ spiders-baiduspider.py   1 ''' 2 要求匯入scrapy 3 所有類一般是XXXSpider命名 4 所有爬蟲類是scrapy.Spid

Python3.6爬蟲學習記錄】教務處成績儲存到Excel檔案中哈工大

前言:基本上每天都會產生一點小想法,在實現的過程中,一步步解決問題,併產生新的想法,就比如,這次是儲存為Excel檔案。這感覺很美妙! 目錄: 一,安裝並簡單使用xlwt 1.1 安裝xlwt 1.2 寫入Excel程式碼 1

2014年之星程序設計大賽 - 資格賽 1002 Disk Schedule雙調歐幾裏得旅行商問題

problem code 數據讀取 包括 想是 tracking sample cout http Problem Description 有非常多從磁盤讀取數據的需求。包含順序讀取、隨機讀取。為了提高效率,須要人為安排磁盤讀取。然而,在現實中。這樣的做法非常復雜。

Python爬蟲小實踐:尋找失蹤人口,失蹤兒童信息寫成csv,方便存入數據庫

python tor enc mini 執行 gem view 獲取 但是 前兩天有人私信我,讓我爬這個網站,http://bbs.baobeihuijia.com/forum-191-1.html上的失蹤兒童信息,準備根據失蹤兒童的失蹤時的地理位置來更好的尋找失蹤兒童,這

免費地圖矢量下載器V5.5--軟開發

https 分類 軟件 新增 bsp 地圖 ID 矢量 多線程 更新說明: 1、精簡POI的關鍵字2、POI導出SHP屬性表包含分類信息3、POI爬取支持多線程4、解決運行時界面卡死問題(POI下載除外)5、修正道路與小區面SHP爬取時範圍過大問題6、新增學校面SHP爬取

ionic使用地圖實時定位匯入標記

最近遇到前端需要實現地圖的功能,其實呼叫地圖的例子網上有好多,這邊介紹一下我們如何通過ionic框架在前端呼叫百度地圖。 首先我們需要在src目錄下的index.html檔案中引入百度地圖,在這之前請申請百度地圖金鑰(金鑰在百度地圖官網申請) <script

雲網盤下載無反應javascript:void0救急辦法

點選百度雲網盤普通下載的時候經常出現沒反應 提示javascript:void(0) 以下是應急辦法: 1.儲存到自己的百度網盤 2.嘗試下載,不行繼續 3.選擇一個能下載的,跟目標檔案合併下載

之星程式設計大賽資格賽 1006三原色圖最小生成樹

度度熊有一張 nn 個點 mm 條邊的無向圖,所有點按照 1,2,\cdots,n1,2,⋯,n 標號,每條邊有一個正整數權值以及一種色光三原色紅、綠、藍之一的顏色。 現在度度熊想選出恰好 kk 條邊,滿足只用這 kk 條邊之中的紅色邊和綠色邊就能使 nn 個點之間兩兩連通

之星程式設計大賽的資格賽 1001調查問卷用二進位制位運算,暴力列舉想要的那幾個位置上的數

Problem Description 度度熊為了完成畢業論文,需要收集一些資料來支撐他的論據,於是設計了一份包含 mm 個問題的調查問卷,每個問題只有 'A' 和 'B' 兩種選項。 將問卷散發出去之後,度度熊收到了 nn 份互不相同的問卷,在整理結果的時候,他發現可以

點選地圖新增標註獲取當前地理名稱

html部分: <div id="allmap"></div> <style type="text/css"> body, html{width: 100%;height: 100%;overflow: hidden;margi

地圖選擇市區去掉路線

 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" conte

地圖高階例項1-如何利用【地圖API】,製作房產酒店地圖?

<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"/><title>酷訊酒店地圖</title>

地圖新增marker獲取InfoWindow裡面的內容,實現marker的增加、刪除、編輯

<!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><meta name="