動態網頁 —— 逆向分析法 + 案例
import requests
import json
import pymysql
import time
def get_html(url,headers,time=10): #get 請求通用函式,去掉了 user-agent 簡化程式碼
try:
r = requests.get(url, headers=headers,timeout=time) # 傳送請求
r.encoding = r.apparent_encoding # 設定返回內容的字符集編碼
r.raise_for_status() # 返回的狀態碼不等於 200 丟擲異常
return r.text # 返回網頁的文字內容
except Exception as error:
print(error)
out_list=[]
def parser(json_txt):
txt = json.loads(json_txt)
global row_count
row_count=txt["doctorCount"] # 總行數
for row in txt["doctors"]: # 醫生資訊列表
staff_name=row.get("STAFF_NAME") # 醫生姓名
if staff_name is None:
staff_name=""
staff_type=row.get("STAFF_TYPE") # 職稱
if staff_type is None:
staff_type=""
remark=row.get("STAFF_REMARK") # 簡介
if remark is None:
remark=""
# 簡單清洗,外匯跟單gendan5.com去除掉簡介中的 html 標籤
remark=remark.replace("<p>","").replace("</p>","")
# 去除空白字元
remark=remark.strip()
org_name=row.get("ORG_NAME") # 所屬醫院
org_name=org_name if org_name is not None else ""
org_grade_name=row.get("ORG_GRADE_NAME")# 醫院等級
org_grade_name = org_grade_name if org_grade_name is not None else ""
good_at=row.get("GOOT_AT") # 擅長領域
good_at= good_at if good_at is not None else ""
row_list=(
staff_name,
staff_type,
remark,
org_name,
org_grade_name,
good_at
)
out_list.append(row_list)
def save_mysql(sql, val, **dbinfo): # 通用資料儲存 mysql 函式
try:
connect = pymysql.connect(**dbinfo) # 建立資料庫連結
cursor = connect.cursor() # 獲取遊標物件
cursor.executemany(sql, val) # 執行多條 SQL
connect.commit() # 事務提交
except Exception as err:
connect.rollback() # 事務回滾
print(err)
finally:
cursor.close()
connect.close( )
if __name__ == '__main__':
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64)\
AppleWebKit/537.36 (KHTML, like Gecko) \
Chrome/89.0.4389.82 Safari/537.36"
} # 設定使用者代理,應對簡單反爬蟲
# 為了得到總共資料條數,先爬一次得到 row_count 放入全域性變數
page_size=10 # 每頁的資料行數
url='
json_txt=get_html(url,head) # 傳送請求
print(json_txt) # 檢視是否有資料
parser(json_txt) # 解析函式
print(out_list) # 檢視是否有資料
page=row_count//page_size # 總共頁數 頁面太多速度太慢,以 5 頁列, 6 改為 page 即可爬所有頁面
for i in range(2,6):
url="{0}&pageSize={1}".format(i,page_size)
json_txt=get_html(url,head) # 傳送請求
parser(json_txt) # 解析函式
# 解析完資料了,然後一次性批次儲存到 MySQL 資料庫
parms = { # 資料庫連線引數
"host": "--",
"user": "root",
"password": "123456",
"db": "---",
"charset": "utf8",
}
sql = "INSERT into doctorinfo(staff_name,staff_type,remark,\
org_name,org_grade_name,good_at)\
VALUES(%s,%s,%s,%s,%s,%s)" # 帶佔位符的 SQL
save_mysql(sql, out_list, **parms) # 呼叫函式,注意 ** 不能省略
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2771987/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 靜態網頁與動態網頁的區別網頁
- ferret 爬取動態網頁網頁
- 提取動態html網頁內容HTML網頁
- php如何動態修改網頁titlePHP網頁
- php網站首頁動態地址修改,如何將PHP網站首頁的動態地址改為靜態地址PHP網站
- JavaScript網頁設計案例JavaScript網頁
- iOS逆向(9)-Cycript,動態分析APP利器iOSAPP
- Android實現網頁動態背景“五彩蛛網”Android網頁
- PHP動態網頁設計與網站架設pdfPHP網頁網站
- Puppeteer 實戰-爬取動態生成的網頁網頁
- java建立web動態網頁遇到的問題JavaWeb網頁
- C#爬取動態網頁上的資訊:B站主頁C#網頁
- Java Script網頁設計案例Java網頁
- 什麼是5Why分析法?(附案例)
- Android逆向之路—IDEA動態除錯smali語言AndroidIdea除錯
- SSM動態展示分頁SSM
- echarts map靜態套用網頁Echarts網頁
- mybatis動態sql與分頁MyBatisSQL
- DiscuzQ動態頁面SEO方案
- Python 爬取網頁中JavaScript動態新增的內容(一)Python網頁JavaScript
- Python 爬取網頁中JavaScript動態新增的內容(二)Python網頁JavaScript
- python 爬蟲如何爬取動態生成的網頁內容Python爬蟲網頁
- 如何用python爬蟲分析動態網頁的商品資訊?Python爬蟲網頁
- 動態網頁採集技術型別包括哪幾種網頁型別
- 動態規劃(介紹閆氏dp分析法及相關例題分析)動態規劃
- 分頁案例
- jQuery案例-網頁音樂播放器01jQuery網頁播放器
- 域名繫結動態IP實戰案例
- 一個簡單靜態網頁網頁
- LNMP動態網站環境部署 + 初始化php-fpm + Nginx Location網頁LNMP網站PHPNginx網頁
- 爬蟲進階——動態網頁Ajax資料抓取(簡易版)爬蟲網頁
- 動態SQL-條件分頁SQL
- 靜態網頁高仿正方教育系統網頁(HTML+CSS)網頁HTMLCSS
- JS逆向實戰11——某金屬集團動態cookie加密JSCookie加密
- Python網路爬蟲抓取動態網頁並將資料存入資料庫MYSQLPython爬蟲網頁資料庫MySql
- HarmonyOS NEXT應用開發—翻頁動效案例
- 網頁靜態化之freemaker的使用網頁
- 小程式頁面動態配置實現