039 爬取json數據以HTML形式到本地

039 爬取json數據以HTML形式到本地

上節課內容

#037學習Python爬蟲爬取博客園做業html

本節課內容

爬取數據保存到本地

解析json數據

介紹HTML

json數據保存爲HTML並加上超連接

爬取數據

直接使用上節課代碼
把文件保存到以.html結尾的文件中python

import requests
url = 'https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=3103&_=1557235742010'
try:
    r = requests.get(url,timeout=20)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
except:
    print('網絡異常或頁面未找到,請重試')
f=open('homework.html','w')

保存文件
保存文件

解析json數據

引入json庫

import json

觸類旁通
爲什麼想到引用json庫?
1.首先 具備基本的背景知識,知道數據類型爲json
2.結合 python 語言的特色 第三方庫衆多
3.在搜索引擎搜索 python json相關信息json

 python json相關信息
python json相關信息

4.根據搜索引擎的返回結果便可肯定存在json庫能夠使用

使用json.loads()解析字符串

l=json.loads(r.text)

使用json庫中loads函數,將r.text字符串解析成dict字典格式,存儲於l中網絡

解析後字典的使用

l爲字典型
l的類型
遍歷l的字典中的鍵值對
l 存在三種鍵值對,data,recordsTotal,recordsFiltered
從英文翻譯中咱們就能知道,數據在l[「data」]中app

i存在三個鍵值對
i存在三個鍵值對

因此咱們遍歷l[「data」]

發現咱們每一個l["data"]裏面存儲的是列表。svg

遍歷l[「data」]
遍歷l[「data」]

經過遍歷輸出列表裏第一個字典元素,輸出了全部key函數

列表遍歷
列表遍歷

根據英語翻譯咱們很容易就找到了數據內部的
連接 ,姓名,學號和上交時間分別爲
i['Url'],i['RealName'],i['StudentNo'],i['DateAdded']學習

介紹HTML

HTML最最最基礎

HTML 以'<html>'</html>'內部存放頭<head>和<\head> 和身體<body><\body>搜索引擎

簡單的HTML結構
簡單的HTML結構

咱們把數據存儲在body裏面就能夠了url

存儲在<p><\p>段落標籤裏

超連接使用

<a href=\"{網頁連接}\"target=\"_blank\" >鏈接 </a>

存儲思路
使用字符串headers存儲

header='''
<html>
<head>
<title>爬蟲做業</title></head>
<body>
'''

字符串footer存儲

footer='''

</body>
</html>
'''

數據內容存儲到body內

body=body+("<p><a href=\"{}\"target=\"_blank\" >鏈接 </a>姓名 {}學號{} 時間{}</p>".format(i['Url'],i['RealName'],i['StudentNo'],i['DateAdded']))

最後將字符串header+body+footer存儲到.html文件內

json數據保存爲HTML並加上超連接

import requests
import json
url = 'https://edu.cnblogs.com/Homework/GetAnswers?homeworkId=3103&_=1557235742010'
try:
    r = requests.get(url,timeout=20)
    r.raise_for_status()
    r.encoding = r.apparent_encoding
except:
    print('網絡異常或頁面未找到,請重試')
f=open('homework.html','w')
l=json.loads(r.text)
header=''' <html> <head> <title>爬蟲做業</title></head> <body> '''
footer=''' </body> </html> '''
body=''
for i in l["data"]:
     body=body+("<p><a href=\"{}\"target=\"_blank\" >鏈接 </a>姓名 {}學號{} 時間{}</p>".format(i['Url'],i['RealName'],i['StudentNo'],i['DateAdded']))
     print ("<p>鏈接 {}姓名 {}學號{} 時間{}</p>".format(i['Url'],i['RealName'],i['StudentNo'],i['DateAdded']))
s=header+body+footer
f.write(s)
f.close()
相關文章
相關標籤/搜索