定時獲取微博熱搜爬蟲連線MySQL(專案)
阿新 • • 發佈:2020-12-10
技術標籤:python
前言
這個專案的第三篇部落格,增加了定時爬取和日誌寫入,解決了一些穩定性的問題。
程式碼設計
# -*- encoding: utf-8 -*-
# ---------------------------------------------
# 微博熱搜
# ---------------------------------------------
import time
import re
import json
import sys
import copy
import pymysql
import requests#引入requests庫用於下載網頁
from bs4 import BeautifulSoup#BeautifulSoup用於解析網頁
localtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())#獲取時間
try:
data=requests.get("https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6").text#請求網站
except:
print(localtime+'\t'+"爬取失敗!")
soup=BeautifulSoup( data,'html.parser')#使用BeautifulSoup工具
a=[]#建立一個空列表
index=[]
try:
db = pymysql.connect("xxx.xxx.xxx.xxx", "xxx", "xxx", "xxx", use_unicode=1,charset='utf8' )
cursor = db.cursor()
except:
print(localtime+'\t'+"開啟資料庫失敗!")
try:
for k in soup. find_all('a',attrs={'href':re.compile('^/weibo?'),'target' : '_blank'}): #把熱度標題新增進空列表
sql = """INSERT INTO hot_date(NAME, URL, TIME) VALUES ("%s",'%s','%s')""" % (str(k.get_text().strip()),"https://s.weibo.com"+k.get('href'),localtime)
try:
cursor.execute(sql)
db.commit()
except:
flag=1
db.close()
print(localtime+'\t'+"存入成功!")
except:
print(localtime+'\t'+"存入失敗!")
說明
執行在linux上,用Crontab設定定時任務。教程
通過輸出重定向寫入日誌檔案
問題解決
1.執行錯誤
遇到了requests不能用的問題,在安裝了requests庫的情況下Linux無法執行
解決方法:增加try異常機制
2.Crontab執行錯誤
設定時使用絕對路徑
後記
接下來就是記錄結束時間和持續時間