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爬蟲系列之四:利用Python爬取PyODPS頁面並整合成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:void(0)救急辦法
點選百度雲網盤普通下載的時候經常出現沒反應 提示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="