百度貼吧(儲存資料到檔案)

2021-08-15 22:20:34 字數 2896 閱讀 1543

#coding:utf-8

#__author__='wang'

#目的:1.對任意id的帖子進行內容的獲取;2.增加是否只獲取樓主資訊;

3.將獲取的資料儲存在檔案中

import urllib2,re

#定義乙個爬蟲類

class bdtbspider(object):

def

__init__(self,base_url,see_lz):

self.base_url = base_url

self.lz = '?see_lz='+str(see_lz)

self.headers=

self.file = none

#記錄樓層號

self.floor_num = 1

#定義獲取帖子源**的函式

def get_page_code(self,page_number):

#需要根據base_url\see_lz\page_number這三個值,拼接出來乙個帖子的詳情

頁面abs_url = self.base_url + self.lz + '&pn=' + str(page_number)

request = urllib2.request(abs_url,headers=self.headers)

try:

response = urllib2.urlopen(request)

except

exception,e:

print

return

none

else:

print

'第{}頁鏈結成功!'.format(page_number)

return response.read()

#獲取帖子標題

def get_title(self,html):

pattern = re.compile(r'',

re.s)

res = re.search(pattern,html)

if res:

return res.group(1).strip('

\n')

return

none

#獲取帖子總頁數

def get_total_page_number(self,html):

pattren = re.compile(r'(.*?)',re.s)

number = re.search(pattren,html)

if number:

return number.group(1).strip()

return

none

#獲取每一頁的資料

def get_content(self,html):

pattern = re.compile(r'(.*?)

.*?(.*?)

',re.s)

content_list = re.findall(pattern,html)

return content_list

#定義建立檔案的函式

self.file = open(filename+'.txt','w')

#定義寫入資料的函式

def write_data(self,data_list):

for data_tuple in data_list:

name = data_tuple[0]

content = data_tuple[1]

self.file.write('---------第{}樓----------'.format

(self.floor_num))

self.file.write('

\n')

self.file.write('暱稱:{}'.format(name))

self.file.write('

\n')

self.file.write('內容:{}'.format(content))

self.file.write('

\n')

self.floor_num +=1

#定義開始爬蟲的函式

def start_spider(self):

index_page = self.get_page_code(1)

if index_page:

title = self.get_title(index_page)

total_number = self.get_total_page_number(index_page)

print

'該帖子一共有{}頁資料'.format(total_number)

#開啟本地檔案

self.open_file(title.decode('utf-8'))

for page_num in

xrange(1,int(total_number)+1):

print

'正在寫入第{}頁資料...'.format(page_num)

html = self.get_page_code(page_num)

content_list = self.get_content(html)

self.write_data(content_list)

self.file.close()

if __name__ == '__main__':

abs_url = '' + raw_input('輸入文章id')

print

'''1.只檢視樓主資訊

0.檢視該貼所有資訊

'''select_number = input('選擇操作:')

bdtb = bdtbspider(abs_url,select_number)

bdtb.start_spider()

python百度貼吧發帖簽到 百度貼吧簽到指令碼

本指令碼為我從網上各渠道蒐集到的簽到指令碼的雜交 如果不需要日誌則把帶 日誌記錄 的行刪除即可 from requests import session from time import time 日誌記錄 start time time 資料 log path f e data sign log ...

百度貼吧爬蟲

encoding utf 8 import urllib.request import urllib.parse import time import random def load page url 通過url來獲取網頁內容jfa param url 待獲取的頁面 return url對應的網頁內...

爬取百度貼吧資料

每次寫的時候總是正規表示式出現問題,還需多多練習正規表示式的書寫,需要耐心 細心 coding utf 8 引入請求包 import requests 引入正規表示式包 import re 1.準備url url 2.獲取網頁源 發起請求接收響應 response requests.get url ...