日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

牛客网获取输入rowinput_Python爬虫入门例题:抓取牛客网题目

發布時間:2025/4/5 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网获取输入rowinput_Python爬虫入门例题:抓取牛客网题目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近做題的時候要寫一些題解,在把牛客網的題目復制下來的時候,數學公式的處理比較麻煩,所以我用Python的selenium、urllib.request和BeautifulSoup4庫對題目信息進行了爬取,寫題解的時候時間節約了很多。

2. 前期準備

安裝selenium、urllib和BeautifulSoup庫。

pip3 install urllib pip3 install selenium pip3 install beautifulsoup4

3. 獲取網頁內容

以 牛客網 NC204552 咪咪游戲 為例。

# 導入庫 import urllib.request import bs4 import time from bs4 import BeautifulSoup from selenium import webdriver# 題目屬性 problemId = "204552" # 打開瀏覽器,模擬登陸 # 此處用的是Chrome,如果沒有安裝可以替換為其他支持的瀏覽器 driver = webdriver.Chrome()

獲取網頁內容

# 獲取頁面內容 # 題目鏈接 url = f"https://ac.nowcoder.com/acm/problem/{problemId}" # 打開網頁 driver.get(url) # 網頁加載等待時間 time.sleep(3) # 找到 輸入 用戶名 和密碼框,并且設置內容 username = driver.find_element_by_id('jsEmailIpt') # 輸入賬號名,xxx替換為自己的賬戶名 username.send_keys('xxx')time.sleep(1) password = driver.find_element_by_id('jsPasswordIpt') #輸入密碼,xxx替換為自己的密碼 password.send_keys('xxx')time.sleep(1) # 分析網頁,找到登錄按鈕 login = driver.find_elements_by_css_selector('div[class=col-input-login] a')[0] # 點擊按鈕 login.click()time.sleep(3) # 格式化源代碼 soup = BeautifulSoup(driver.page_source,'lxml') # 退出瀏覽器 driver.quit()

存儲和預處理

# 存儲 data_dict = {} # 找到主體內容 mainContent = soup.find_all(name="div", attrs={"class" :"terminal-topic"})[0]# 去除公式的重復html元素 for each in mainContent.find_all('mrow'):each.decompose() for each in mainContent.find_all(name="span", attrs={"class" :"katex-html"}):each.decompose() # 更換換行符 for each in mainContent.find_all('br'):each.replace_with("nn")

4. 內容處理

4.1. Limit

先從比較簡單的信息入手,找到題目標題、時間、和內存限制。

# Limit # 找到題目標題、時間、和內存限制 div = mainContent.find_all(name="div", attrs={"class":"subject-item-wrap"})[0].find_all("span") # 放入字典中存儲 data_dict['Title'] = f"牛客網 NC{problemId} " + soup.title.contents[0] # Time Limit data_dict['Time Limit'] = div[0].contents[0].split(':')[1] # Memory Limit data_dict['Memory Limit'] = div[1].contents[0].split(':')[1]

定義函數,處理主體內容中詭異的空格和公式的符號。

def divTextProcess(div):"""處理<div>標簽中的文本內容""" # 獲取文本strBuffer = div.get_text() # 替換公式標記strBuffer = strBuffer.replace("{", " $").replace("}", "$ ") # 去除多個空格strBuffer = strBuffer.replace(" ", "") # 去除多個換行符strBuffer = strBuffer.replace("nnn", "n") # 去除內容中用xa0表示的空格strBuffer = strBuffer.replace("xa0", "") # 去除首位空格strBuffer = strBuffer.strip()# 返回結果return strBuffer

4.2. Problem Description

獲取題目描述

# 處理題目描述 div = mainContent.find_all(name="div", attrs={"class": "subject-question"})[0] data_dict['Problem Description'] = divTextProcess(div)

4.3. Input

輸入描述

div = mainContent.find_all(name="pre")[0] data_dict['Input'] = divTextProcess(div)

4.4. Output

輸出描述

div = mainContent.find_all(name="pre")[1] data_dict['Output'] = divTextProcess(div)

4.5. Sample Input & Onput

輸入樣例,用代碼框環境包圍。

# Input div = mainContent.find_all(name="div", attrs={"class":"question-oi-cont"})[0] data_dict['Sample Input'] = "```cpp" + div.get_text() + '```' # Onput div = mainContent.find_all(name="div", attrs={"class":"question-oi-cont"})[1] data_dict['Sample Onput'] = "```cpp" + div.get_text() + '```'

4.6. Note

備注

# 若有備注 if len(mainContent.find_all(name="pre")) >= 5:div = mainContent.find_all(name="pre")[-1]data_dict['Note'] = divTextProcess(div)

4.7. Source

題目鏈接

data_dict['Source'] = '[' + data_dict['Title'] + ']' + '(' + url + ')'

5. 輸出

for each in data_dict.keys():print('### ' + each + 'n')print(data_dict[each].replace("nn**", "**").replace("**nn", "**") + 'n')

下面是最后的輸出結果

### Title牛客網 NC204552 咪咪游戲### Time LimitC/C++ 1秒,其他語言2秒### Memory LimitC/C++ 524288K,其他語言1048576K### Problem Description牛牛最近喜歡玩咪咪游戲,于是自己寫了個程序編了個游戲讓牛妹來玩。游戲是這樣的: 牛牛有一個長的字符串(只包26含個小寫字母),他想讓牛妹判斷這個字符串是好的。定義一個串是好的:這個串是由連續的mq連接而成的。 比如 $mqmq$ 說明這個串是好的, $mqmqm$ 或 $mqmqx$ 都是不好的。現在牛牛 想問牛妹這個串是否是好的,如果好的輸出 $Yes$ ,否則輸出 $No$### Input第一行一個整數Q,表示詢問次數就下來Q行,一個字符串$s### OutputQ行,每行輸出 $Yes$ 或 $No$### Sample Input// 這里會有```cpp代碼環境,在這里為了展示方便去掉了 4 mqmq mqmqm mqakioi mqqmmq### Sample OnputYes No No No### Note對于 $60%$ 的數據滿足: $|s|<=10,Q<=10$ 且保證只出現m,q兩個字符對于 $100%$ 的數據: $|s| <=10^5,Q<=10$ 對于所有數據保證只出現26個英文小寫字母### Source[牛客網 NC204552 咪咪游戲](https://ac.nowcoder.com/acm/problem/204552)

總結

以上是生活随笔為你收集整理的牛客网获取输入rowinput_Python爬虫入门例题:抓取牛客网题目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: hd丰满圆润的女人hd | a级在线免费观看 | 日本www色 | 大陆av片 | 久久三区 | 亚洲国产免费av | 精品人妻无码中文字幕18禁 | 91麻豆精品国产91久久久无需广告 | 视频区图片区小说区 | 国产成人小视频在线观看 | 一级成人免费 | 欧美99视频 | 亚洲精品在线播放视频 | 95久久 | 精品成人一区 | 欧美首页| 久久人人爽人人人人片 | 精品在线视频播放 | 亚洲AV不卡无码一区二区三区 | 国产剧情在线视频 | 国产麻豆免费观看 | 日韩伦理av | 特级西西www444人体聚色 | 黄色三级视频网站 | 欧美爽爽 | av毛片观看 | 理论片一级 | 国产精品久久在线观看 | 亚洲AV午夜福利精品一级无码 | 97香蕉 | 激情的网站 | 少妇流白浆 | 天天做天天爽 | 老妇裸体性激交老太视频 | jizz内谢中国亚洲jizz | 日本少妇激情 | 久久99精品久久久久子伦 | 在线免费观看成年人视频 | 爽爽淫人 | 91免费版在线看 | 久久久久久久女国产乱让韩 | 波多野结衣小视频 | 美女的奶胸大爽爽大片 | 天天av天天操 | 无码人妻丰满熟妇精品区 | 国产v综合v亚洲欧美久久 | ass精品国模裸体pics | 日本啪啪动态图 | 国产毛片毛片 | 欧美福利网站 | 色就色综合 | 精品国产91久久久久久 | 久久久久久久久久久国产 | 撸大师av | 韩国三级hd中文字幕有哪些 | 在线精品观看 | 国产精品1234区 | 成人高清免费 | 九九视频免费观看 | 久热最新 | 91蜜桃 | 国产在线精品观看 | 欧美在线免费 | 久久久久国产精品午夜一区 | 草莓视频在线观看18 | 少妇被又大又粗又爽毛片久久黑人 | 波多野结衣网址 | 少妇人妻一区二区 | 西西4444www大胆无视频 | 四虎1515hh.com | 中文字幕日韩国产 | 国产免费自拍 | 人人免费操 | 火影黄动漫免费网站 | 男人午夜影院 | 成人小视频在线看 | 亚洲一区免费电影 | 国产成人无码一二三区视频 | 天天弄天天干 | 人操人人 | 我们好看的2018视频在线观看 | 两个人做羞羞的视频 | 看了下面会湿的视频 | 色汉综合 | 欧美老熟妇乱大交xxxxx | 九色论坛 | 午夜性刺激免费视频 | 日日操天天操夜夜操 | 免费中文字幕视频 | 三级三级久久三级久久18 | 中文字幕在线1 | 好吊视频一二三区 | 日本高清视频免费观看 | 97色资源| 国产黄色小视频在线观看 | 98堂 最新网名 | 亚洲免费在线视频观看 | 国产一区二区三区影视 | 视频一区二区不卡 |