Python爬蟲練習(xí)匯總
一、 軟件配置
安裝必備爬蟲環(huán)境軟件:
- python 3.8
- pip install requests
- pip install beautifulsoup4
二、爬取南陽理工OJ題目
網(wǎng)站地址:http://www.51mxd.cn/
(一)頁面分析
切換頁面的時候url網(wǎng)址發(fā)生變動,因此切換頁面時切換第n頁則為n.html
查看html代碼:
在每一個標(biāo)簽內(nèi)都是<tr><td></td></tr>
使用嵌套模式,因此可以使用爬蟲進(jìn)行爬取
(二)代碼編寫
導(dǎo)入相應(yīng)的包
#導(dǎo)入包 import requests from bs4 import BeautifulSoup import csv from tqdm import tqdm#在電腦終端上顯示進(jìn)度,使代碼可視化進(jìn)度加快
定義訪問瀏覽器所需的請求頭和寫入csv
文件需要的表頭及存儲列表
# 模擬瀏覽器訪問 Headers = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3741.400 QQBrowser/10.5.3863.400' # 題目數(shù)據(jù) subjects = [] # 表頭 csvHeaders = ['題號', '難度', '標(biāo)題', '通過率', '通過數(shù)/總提交數(shù)']
定義爬取函數(shù),并刪選信息
for pages in tqdm(range(1, 11 + 1)): r = requests.get(f'http://www.51mxd.cn/problemset.php-page={pages}.htm', Headers) r.raise_for_status() r.encoding = 'utf-8' soup = BeautifulSoup(r.text, 'html5lib') td = soup.find_all('td')#講所有含TD的項(xiàng)提取出來 subject = [] for t in td: if t.string is not None: #利用string方法獲取其中的內(nèi)容 subject.append(t.string) if len(subject) == 5: subjects.append(subject) subject = []
寫入文件
with open('D:/NYOJ_Subjects.csv', 'w', newline='') as file: fileWriter = csv.writer(file) fileWriter.writerow(csvHeaders) # 寫入表頭 fileWriter.writerows(subjects) # 寫入數(shù)據(jù) print('\n題目信息爬取完成?。?!')
結(jié)果
三、爬取學(xué)校信息通知
網(wǎng)站地址:http://news.cqjtu.edu.cn/xxtz.htm
(一)頁面分析
可以看到在html跳轉(zhuǎn)采用 n-方式 因?yàn)闉?code>n-.html
爬取數(shù)據(jù),日期+新聞題目
(二)代碼編寫
import requests from bs4 import BeautifulSoup import csv # 獲取每頁內(nèi)容 def get_one_page(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36' } try: info_list_page = [] # 一頁的所有信息 resp = requests.get(url, headers=headers) resp.encoding = resp.status_code page_text = resp.text soup = BeautifulSoup(page_text, 'lxml') li_list = soup.select('.left-list > ul > li') # 找到所有l(wèi)i標(biāo)簽 for li in li_list: divs = li.select('div') date = divs[0].string.strip() title = divs[1].a.string info = [date, title] info_list_page.append(info) except Exception as e: print('爬取' + url + '錯誤') print(e) return None else: resp.close() print('爬取' + url + '成功') return info_list_page # main def main(): # 爬取所有數(shù)據(jù) info_list_all = [] base_url = 'http://news.cqjtu.edu.cn/xxtz/' for i in range(1, 67): if i == 1: url = 'http://news.cqjtu.edu.cn/xxtz.htm' else: url = base_url + str(67 - i) + '.htm' info_list_page = get_one_page(url) info_list_all += info_list_page # 存入數(shù)據(jù) with open('D:/教務(wù)新聞.csv', 'w', newline='', encoding='utf-8') as file: fileWriter = csv.writer(file) fileWriter.writerow(['日期', '標(biāo)題']) # 寫入表頭 fileWriter.writerows(info_list_all) # 寫入數(shù)據(jù) if __name__ == '__main__': main()
結(jié)果:
總結(jié):
本次實(shí)驗(yàn)對利用Python
進(jìn)行爬蟲進(jìn)行了學(xué)習(xí),并實(shí)現(xiàn)了對網(wǎng)站信息的爬取。
到此這篇關(guān)于Python爬蟲練習(xí)匯總的文章就介紹到這了,更多相關(guān)Python爬蟲練習(xí)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)計(jì)數(shù)排序與桶排序?qū)嵗a
這篇文章主要介紹了python計(jì)數(shù)排序與桶排序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03python幾種常用功能實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了python幾種常用功能實(shí)現(xiàn)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12Python?pyecharts?Boxplot箱線圖的實(shí)現(xiàn)
本文主要介紹了Python?pyecharts?Boxplot箱線圖的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Python 迭代,for...in遍歷,迭代原理與應(yīng)用示例
這篇文章主要介紹了Python 迭代,for...in遍歷,迭代原理與應(yīng)用,結(jié)合實(shí)例形式分析了Python迭代與遍歷的相關(guān)操作技巧與使用注意事項(xiàng),需要的朋友可以參考下2019-10-10python中如何正確使用正則表達(dá)式的詳細(xì)模式(Verbose mode expression)
許多程序設(shè)計(jì)語言都支持利用正則表達(dá)式進(jìn)行字符串操作,python自然也不例外,下面這篇文章主要給大家介紹了關(guān)于在python中如何正確使用正則表達(dá)式的詳細(xì)模式(Verbose mode expression)的相關(guān)資料,需要的朋友可以參考借鑒,下面來一起看看吧。2017-11-11Python入門教程 超詳細(xì)1小時學(xué)會Python
本文適合有經(jīng)驗(yàn)的程序員盡快進(jìn)入Python世界.特別地,如果你掌握J(rèn)ava和Javascript,不用1小時你就可以用Python快速流暢地寫有用的Python程序.2006-09-09用Python實(shí)現(xiàn)一個簡單的用戶系統(tǒng)
大家好,本篇文章主要講的是用Python實(shí)現(xiàn)一個簡單的用戶系統(tǒng),感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下2022-01-01