#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:
return
none
else:
'第{}頁鏈結成功!'.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)
'該帖子一共有{}頁資料'.format(total_number)
#開啟本地檔案
self.open_file(title.decode('utf-8'))
for page_num in
xrange(1,int(total_number)+1):
'正在寫入第{}頁資料...'.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')
'''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 ...