#20192315 2020-2021-2 《Python程式設計》實驗四報告
2020-2021-2 《Python程式設計》實驗四報告
- 課程:《Python程式設計》
- 班級:1923
- 姓名:裴湘瑞
- 學號:20192315
- 實驗教師:王志強
- 實驗日期:2021年6月10日
- 必修/選修:公選課
1 實驗內容
Python綜合應用:爬蟲、資料處理、視覺化、機器學習、神經網路、遊戲、網路安全等。
2 實驗過程
原始碼:
請求的url地址
url = 'https://qxs.la/177913/'
偽造請求頭, 模擬瀏覽器
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
請求網頁
rsp = requests.get(url=url, headers=headers)
soup = BeautifulSoup(rsp.text, 'lxml')
開啟檔案準備寫入
file = open('雪鷹領主.txt', 'w', encoding='utf-8')
解析所有子連結
links = soup.select('.chapters .chapter a')
for link in links:
href = 'https://qxs.la' + link.get('href')
title = link.get('title')
print(title)
print(href)
while True:
try:
# 請求每章的詳情頁
desc = requests.get(url=href, headers=headers, timeout=5)
if desc.status_code == 200:
break
except Exception as e:
# print(e)
pass
d_soup = BeautifulSoup(desc.text, 'lxml')
獲取content標籤
content = d_soup.select_one('#content')
去除多餘的標籤
[s.extract() for s in content("div")]
獲取文字內容
content = content.text
file.write(title + '\n' + content + '\n')
time.sleep(0.2)
break
關閉檔案寫入
file.close()
進入網頁
獲取所有章節資訊,找到網頁中的資料
偽造headers,模擬瀏覽器發起請求網頁資料
每個章節連接獲取後,迴圈請求每個章節連線,請求詳情頁資料
發現詳情頁具體在id為content的div下
獲取資料後,寫入到文字文件中
3 完整實驗程式碼
import requests
from bs4 import BeautifulSoup
import time
請求的url地址
url = 'https://qxs.la/177913/'
偽造請求頭, 模擬瀏覽器
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
請求網頁
rsp = requests.get(url=url, headers=headers)
soup = BeautifulSoup(rsp.text, 'lxml')
開啟檔案準備寫入
file = open('雪鷹領主.txt', 'w', encoding='utf-8')
解析所有子連結
links = soup.select('.chapters .chapter a')
for link in links:
href = 'https://qxs.la' + link.get('href')
title = link.get('title')
print(title)
print(href)
while True:
try:
# 請求每章的詳情頁
desc = requests.get(url=href, headers=headers, timeout=5)
if desc.status_code == 200:
break
except Exception as e:
# print(e)
pass
d_soup = BeautifulSoup(desc.text, 'lxml')
# 獲取content標籤
content = d_soup.select_one('#content')
# 去除多餘的標籤
[s.extract() for s in content("div")]
# 獲取文字內容
content = content.text
file.write(title + '\n' + content + '\n')
time.sleep(0.2)
# break
關閉檔案寫入
file.close()
4 實驗過程中遇到的問題及解決過程
- 問題1:對爬蟲技術不熟悉導致無從下手
問題1解決方案:仔細學習課程所發的資源並自己在網路上檢視相關知識 - 問題2:請求詳情頁時,出現困難
問題2解決方案:發現詳情頁具體在id為contect的div下
5 其他(感悟、思考等)
1.經過一個學期的學習,我發現程式設計並不像我原本想象的那樣,像動畫影視作品一樣具象的有趣,它所呈現給我們的,更多是冷冰冰的程式碼及邏輯,但真正熱愛程式設計的人卻能從中找到字裡行間的趣味性,並利用這些冷冰冰的程式碼,去實現各種繽紛絢麗的實際功能。
2.在學習python的過程中,我們也在同步學習c語言,讓我直觀地感受到了什麼是面向物件的程式語言,而什麼是面向過程的程式語言。在學習兩門程式語言的過程中,我能感受到,python比c語言對新手更友好,也更強大,但在往後的學習中,我兩門語言都不會放棄學習