初識Java 1.Java背景知識 java是美國sun公司(Stanford University Network)在1995年推出的一門電腦高級編程語言。 Java早期稱為Oak(橡樹),後期改名為Java。 Java之父:詹姆斯·高斯林(James Gosling)。 2009年sun公司被 ...
- 完成抓取並解析DGUT通知公告12頁數據,並提交excel文件格式數據,數據需要包含日期標題,若能夠實現將詳情頁主體內容與發佈人信息數據也一併抓取更佳
- 提交內容:Excel數據文件
爬蟲開始
首先看到頁面呈現規則的各個方框,這意味著它們之間的一定是一樣的
此處該有圖
我們點開後臺可以看見屬於通知活動的代碼中很多這類
<li>
<a href="../info/1042/48792.htm" target="_blank" title="關於開展2018屆畢業生中期發展評價的通知">
<div class="box">
<div class="time">
<div class="ll">
<img src="../images/list_box_07_ico.png" alt="">2023.06.09
</div>
<div class="rr">
<img src="../images/list_box_24_ico.png" alt="">
</div>
</div>
<h5 class="overfloat-dot-2">關於開展2018屆畢業生中期發展評價的通知</h5>
</div>
</
那麼我們可以分別截取一下幾個標簽,分別是
時間標簽:<div class="ll">
標題標簽:<h5 class="overfloat-dot-2">
前期工作准備結束了,讓我們打開pycharm,引入本次的包
import requests #經典請求包
from bs4 import BeautifulSoup
import pandas as pd #生成xlsx文檔包
為了我們的頁面的中文正常輸出,我們必須對獲取的內容進行一個轉碼
url = 'example.com' + str(page) + '.htm'
r = requests.get(url)
r.encoding = 'utf-8'
我觀察到頁面的順序並不是從1往後的,而是從第12頁為1.html,第11頁為2.html,以此類推,而第一頁則是index/tzgg.htm。
所以我的迴圈體設置迴圈12次,最後一次如果返回的是404的話,則訪問的上面的網頁
if r.status_code == 404:
url = 'example.com/index/tzgg.htm'
r = requests.get(url)
r.encoding = 'utf-8'
根據開頭的標簽,接下來就可以直接獲取該標簽上面的內容
title = article.find('h5', {'class': 'overfloat-dot-2'}).text.strip()
date = article.find('div', {'class': 'll'}).text.strip()
此時你會發現我沒有解釋這個article怎麼來的,是因為我發現如果只是按照上面的方法直接獲取
所以為了區別開其他的同種標簽,頁面範圍內比
articles = soup.find('section', {'class': 'n_container'})
articles = articles.find_all('li')
到這裡,時間和標題我們就得到了。接下來我們需要到詳情頁去獲取發佈者名字
同樣,詳情頁的url也在
href = article.find('a', href=True)
href = href['href']
article_detail_url = 'example.com' + href
然後通過再訪問這個鏈接進去以同樣的方式獲取發佈者名字,還得和上文一樣,分開是不是第一頁的子鏈接,如果是則需要更換第一頁的url才能防止返回404狀態。
article_detail_url = 'example.com/index/tzgg/' + href
# 獲取詳情頁信息
detail_r = requests.get(article_detail_url)
if detail_r.status_code == 404:
url = 'example.com'+href
detail_r=requests.get(url)
detail_r.encoding = 'utf-8'
detail_soup = BeautifulSoup(detail_r.text, 'html.parser')
author = detail_soup.find('h6').find_all('span')[2].text
我們需要的信息就完全抓取下來了。本次任務就結束了,接下來的導出excel文件
# 將數據存儲成DataFrame,並導出為Excel文件
df = pd.DataFrame(data_list, columns=['日期', '標題', '發佈者'])
df.to_excel('通知公告.xlsx', index=False)
總結
這次做完通知公告爬蟲,感覺不是很難,因為網站沒有對請求頭進行限制,所以讓我直接request就行了。
不過這次讓我對python在爬蟲之類的作用更加感興趣,希望下次能瞭解更多的這類知識,以後也能學會如何防爬蟲的知識。
本文來自博客園,作者:hellciw,轉載請註明原文鏈接:https://www.cnblogs.com/hellciw/p/17492550.html