爬取糗事百科段子內容

2021-09-11 04:59:36 字數 2700 閱讀 2516

import requests, sqlite3, re

class processdatatool(object):

"""資料處理的工具類:工具類中一般不寫__init__初始化屬性,只封裝工具方法對資料進行操作。工具類中的方法一般是以工具類居多。

"""@classmethod

def process_data(cls,data_tuple):

"""對原始的元組資料處理完成,返回乙個新的元組

:param data_tuple:

:return:

"""# print(data_tuple)

# 經過輸出,發現使用者暱稱和段子內容需要處理特殊字元,將\n和

從原始字串中刪除。

p1 = re.compile(r'\n',re.s)

p2 = re.compile(r'

',re.s)

nick_name = data_tuple[0]

# 利用p1這個正規表示式,從nick_name字串中匹配\n,並將其替換為''這個空字串

nick_name = re.sub(p1, '', nick_name)

content = data_tuple[2]

content = re.sub(p1, '', content)

# 處理內容中的

content = re.sub(p2,'',content)

return (nick_name,data_tuple[1],content,data_tuple[3],data_tuple[4])

class dbtool(object):

"""資料庫工具類

"""connect = cursor = none

@classmethod

# 鏈結資料庫

def connect_cursor(cls):

cls.connect = sqlite3.connect('qsbk.db')

cls.cursor = cls.connect.cursor()

@classmethod

# 插入資料

def insert_data(cls,data):

insert_sql = 'insert into qsbk (nick_name, level, content, smail_count,comment_count) values (?, ?, ?, ?, ?)'

cls.cursor.execute(insert_sql,data)

cls.connect.commit()

@classmethod

# 關閉資料庫

def close_connect_cursor(cls):

cls.cursor.close()

cls.connect.close()

class qsbkspider(object):

"""爬蟲類

"""def __init__(self):

def get_list_page(self,page_num):

"""獲取列表頁源**

:param page_num: 頁碼

:return:

"""url = ''

try:

url = ''.format(page_num)

response = requests.get(url,headers=self.headers)

if response.status_code == 200:

# 返回網頁源**字串,交給下乙個函式進行解析

return response.text

else:

# 202:表示對方伺服器已經成功接收了get請求,但是並沒有給與響應,如果多次嘗試一直都是202,說明了遭遇反爬蟲的限制。

return none

except exception as e:

print('當前url:{}請求異常,異常原因:{}'.format(url,e))

return none

def parse_list_page(self,html):

"""解析列表頁源**

:param html: 頁碼

:return:

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

.*?(.*?).*?.*?(.*?).*?.*?(.*?)', re.s)

datas = re.findall(pattern,html)

for data_tuple in datas:

# 將原始資料交給工具類進行資料的整理。

new_data_tuple = processdatatool.process_data(data_tuple)

# print(new_data_tuple)

dbtool.insert_data(new_data_tuple)

if __name__ == '__main__':

dbtool.connect_cursor()

spider = qsbkspider()

html = spider.get_list_page(1)

if html:

spider.parse_list_page(html)

else:

pass

dbtool.close_connect_cursor()

爬取糗事百科段子

user bin env python coding utf 8 author holley file baike1.py datetime 4 12 2018 14 32 description import requests import re import csv from bs4 impor...

Scrapy 爬取糗事百科段子

1.python爬蟲實戰一之爬取糗事百科段子 2.在工作目錄建立myproject scrapy startproject myproject3.編寫 myproject myproject items.py coding utf 8 define here the models for your ...

爬取糗事百科,朗讀段子

一閒下來就不務正業了,寫個爬蟲,聽段子。額,mac自帶的語音朗讀,windows我就不知道啦,有興趣的可以去研究一下哈。環境 python 2.7 mac os 10.12 使用朗讀的 from subprocess import call call say hello pengge 當然了,聽起來...