Python如何使用BeautifulSoup爬取網(wǎng)頁(yè)信息
這篇文章主要介紹了Python如何使用BeautifulSoup爬取網(wǎng)頁(yè)信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
簡(jiǎn)單爬取網(wǎng)頁(yè)信息的思路一般是
1、查看網(wǎng)頁(yè)源碼
2、抓取網(wǎng)頁(yè)信息
3、解析網(wǎng)頁(yè)內(nèi)容
4、儲(chǔ)存到文件
現(xiàn)在使用BeautifulSoup解析庫(kù)來(lái)爬取刺猬實(shí)習(xí)Python崗位薪資情況
一、查看網(wǎng)頁(yè)源碼
這部分是我們需要的內(nèi)容,對(duì)應(yīng)的源碼為:
分析源碼,可以得知:
1、崗位信息列表在<section class="widget-job-list">中
2、每條信息在<article class="widget item">中
3、對(duì)于每條信息,我們需要提取出的內(nèi)容是 公司名稱,職位, 薪資
二、抓取網(wǎng)頁(yè)信息
使用request.get()抓取,返回的soup是網(wǎng)頁(yè)的文本信息
def get_one_page(url): response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") return soup
三、解析網(wǎng)頁(yè)內(nèi)容
1、找到起始位置<section>
2、在<article>中匹配到各項(xiàng)信息
3、返回信息列表用以存儲(chǔ)
def parse_page(soup): #待存儲(chǔ)的信息列表 return_list = [] #起始位置 grid = soup.find('section', attrs={"class": "widget-job-list"}) if grid: #找到所有的崗位列表 job_list = soup.find_all('article', attrs={"class": "widget item"}) #匹配各項(xiàng)內(nèi)容 for job in job_list: #find()是尋找第一個(gè)符合的標(biāo)簽 company = job.find('a', attrs={"class": "crop"}).get_text().strip()#返回類型為string,用strip()可以去除空白符,換行符 title = job.find('code').get_text() salary = job.find('span', attrs={"class": "color-3"}).get_text() #將信息存到列表中并返回 return_list.append(company + " " + title + " " + salary) return return_list
四、存儲(chǔ)到文件
將列表信息存儲(chǔ)到shixi.csv文件中
def write_to_file(content): #以追加的方式打開(kāi),設(shè)置編碼格式防止亂碼 with open("shixi.csv", "a", encoding="gb18030")as f: f.write("\n".join(content))
五、爬取多頁(yè)信息
在網(wǎng)頁(yè)url中 可以看到最后的page代表的是頁(yè)數(shù)信息
所以在main方法中傳入一個(gè)page,然后循環(huán)運(yùn)行main(page)就可以爬取多頁(yè)信息了
def main(page): url = 'https://www.ciweishixi.com/search?key=python&page=' + str(page) soup = get_one_page(url) return_list = parse_page(soup) write_to_file(return_list) if __name__ == "__main__": for i in range(4): main(i)
六、運(yùn)行結(jié)果
七、完整代碼
import requests import re from bs4 import BeautifulSoup def get_one_page(url): response = requests.get(url) soup = BeautifulSoup(response.text, "html.parser") return soup def parse_page(soup): #待存儲(chǔ)的信息列表 return_list = [] #起始位置 grid = soup.find('section', attrs={"class": "widget-job-list"}) if grid: #找到所有的崗位列表 job_list = soup.find_all('article', attrs={"class": "widget item"}) #匹配各項(xiàng)內(nèi)容 for job in job_list: #find()是尋找第一個(gè)符合的標(biāo)簽 company = job.find('a', attrs={"class": "crop"}).get_text().strip()#返回類型為string,用strip()可以去除空白符,換行符 title = job.find('code').get_text() salary = job.find('span', attrs={"class": "color-3"}).get_text() #將信息存到列表中并返回 return_list.append(company + " " + title + " " + salary) return return_list def write_to_file(content): #以追加的方式打開(kāi),設(shè)置編碼格式防止亂碼 with open("shixi.csv", "a", encoding="gb18030")as f: f.write("\n".join(content)) def main(page): url = 'https://www.ciweishixi.com/search?key=python&page=' + str(page) soup = get_one_page(url) return_list = parse_page(soup) write_to_file(return_list) if __name__ == "__main__": for i in range(4): main(i)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python中的getattribute 、getattr、setattr方法詳解
這篇文章主要介紹了python中的getattribute 、getattr、setattr方法詳解,python類中默認(rèn)有一些特殊方法,這篇文章記錄一下特殊方法的功能及用法,需要的朋友可以參考下2023-11-11Python實(shí)現(xiàn)單項(xiàng)鏈表的最全教程
單向鏈表也叫單鏈表,是鏈表中最簡(jiǎn)單的一種形式,它的每個(gè)節(jié)點(diǎn)包含兩個(gè)域,一個(gè)信息域(元素域)和一個(gè)鏈接域,這個(gè)鏈接指向鏈表中的下一個(gè)節(jié)點(diǎn),而最后一個(gè)節(jié)點(diǎn)的鏈接域則指向一個(gè)空值,這篇文章主要介紹了Python實(shí)現(xiàn)單項(xiàng)鏈表,需要的朋友可以參考下2023-01-01python?Ajenti控制面板輕松地管理所有服務(wù)器網(wǎng)站
Ajenti是一個(gè)值得擁有的管理面板,免費(fèi)開(kāi)源的管理面板工具,可以幫助你集中管理多個(gè)服務(wù)器和網(wǎng)站,Ajenti?支持?Linux、BSD、Mac?OS?X和Windows?等多個(gè)操作系統(tǒng),并且可以通過(guò)一個(gè)直觀的?Web?界面來(lái)完成各種系統(tǒng)管理任務(wù)2024-01-01jupyter?notebook?自定義python解釋器的過(guò)程詳解
大家都知道jupyter?notebook?網(wǎng)頁(yè)版交互環(huán)境,類似于ipython,功能強(qiáng)大,這篇文章主要介紹了jupyter?notebook?自定義python解釋器的過(guò)程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10