<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Python用做資料處理還是相當不錯的,如果你想要做爬蟲,Python是很好的選擇,它有很多已經寫好的類包,只要呼叫,即可完成很多複雜的功能
在我們開始之前,我們需要安裝一些環境依賴包,開啟命令列
確保電腦中具有python和pip,如果沒有的話則需要自行進行安裝
之後我們可使用pip安裝必備模組 requests
pip install requests
requests是python實現的簡單易用的HTTP庫,使用起來比urllib簡潔很多,requests 允許你傳送 HTTP/1.1 請求。指定 URL並新增查詢url字串即可開始爬取網頁資訊
以該平臺為例,抓取網頁中的公司名稱資料,網頁連結:https://www.crrcgo.cc/admin/crr_supplier.html?page=1
目標網頁原始碼如下:
首先明確步驟
1.開啟目標站點
2.抓取目標站點程式碼並輸出
import requests
匯入我們需要的requests功能模組
page=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')
這句命令的意思就是使用get方式獲取該網頁的資料。實際上我們獲取到的就是瀏覽器開啟百度網址時候首頁畫面的資料資訊
print(page.text)
這句是把我們獲取資料的文字(text)內容輸出(print)出來
import requestspage=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')print(page.text)
成功爬取到了目標網頁原始碼
但是上面抓取到的程式碼充滿尖括號的一片字元,對我們沒有什麼作用,這樣的充滿尖括號的資料就是我們從伺服器收到的網頁檔案,就像Office的doc、pptx檔案格式一樣,網頁檔案一般是html格式。我們的瀏覽器可以把這些html程式碼資料展示成我們看到的網頁。
我們如果需要這些字元裡面提取有價值的資料,就必須先了解標記元素
每個標記的文字內容都是夾在兩個尖括號中間的,結尾尖括號用/開頭,尖括號內(img和div)表示標記元素的型別(圖片或文字),尖括號內可以有其他的屬性(比如src)
標記內容文字才是我們需要的資料,但我們要利用id或class屬性才能從眾多標記中找到需要的標記元素。
我們可以在電腦瀏覽器中開啟任意網頁,按下f12鍵即可開啟元素檢視器(Elements),就可以看到組成這個頁面的成百上千個各種各樣的標記元素
標記元素是可以一層一層巢狀的,比如下面就是body巢狀了div元素,body是父層、上層元素;div是子層、下層元素。
<body> <div>十分鐘上手資料爬蟲</div> </body>
回到抓取上面來,現在我只想在網頁中抓取公司名這個資料,其他的我不想要
檢視網頁html程式碼,發現公司名在標籤detail_head裡面
import requests req=requests.get('https://www.crrcgo.cc/admin/crr_supplier.html?page=1')
這兩行上面解釋過了,是獲取頁面資料
from bs4 import BeautifulSoup
我們需要使用BeautifulSoup這個功能模組來把充滿尖括號的html資料變為更好用的格式,from bs4 import BeautifulSoup這個是說從bs4這個功能模組中匯入BeautifulSoup,是的,因為bs4中包含了多個模組,BeautifulSoup只是其中一個
req.encoding = "utf-8"
指定獲取的網頁內容用utf-8編碼
soup = BeautifulSoup(html.text, 'html.parser')
這句程式碼用html解析器(parser)來分析我們requests得到的html文字內容,soup就是我們解析出來的結果。
company_item=soup.find_all('div',class_="detail_head")
find是查詢,find_all查詢全部。查詢標記名是div並且class屬性是detail_head的全部元素
dd = company_item.text.strip()
strip() 方法用於移除字串頭尾指定的字元(預設為空格或換行符)或字元序列。在這裡就是移除多餘的尖括號的html資料
最後拼接之後程式碼如下:
import requests from bs4 import BeautifulSoup req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1") req.encoding = "utf-8" html=req.text soup = BeautifulSoup(req.text,features="html.parser") company_item = soup.find("div",class_="detail_head") dd = company_item.text.strip() print(dd)
最後執行結果成功的抓取到了網頁中我們想要的公司資訊,但是卻只抓取到了一個公司,其餘的則並未抓取到
所以我們需要加入一個迴圈,抓取網頁中所有公司名,並沒多大改變
for company_item in company_items: dd = company_item.text.strip() print(dd)
最終程式碼如下:
import requests from bs4 import BeautifulSoup req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1") req.encoding = "utf-8" html=req.text soup = BeautifulSoup(req.text,features="html.parser") company_items = soup.find_all("div",class_="detail_head") for company_item in company_items: dd = company_item.text.strip() print(dd)
最終執行結果查詢出了該網頁中所有的公司名
那我現在想要抓取多個網頁中的公司名呢?很簡單,大體程式碼都已經寫出,我們只需要再次加入一個迴圈即可
檢視我們需要進行抓取的網頁,發現當網頁變化時,就只有page後面的數位會發生變化。當然很多大的廠商的網頁,例如京東、淘寶 它們的網頁變化時常讓人摸不著頭腦,很難猜測。
inurl="https://www.crrcgo.cc/admin/crr_supplier.html?page=" for num in range(1,6): print("================正在爬蟲第"+str(num)+"頁資料==================")
寫入迴圈,我們只抓取1到5頁的內容,這裡的迴圈我們使用range函數來實現,range函數左閉右開的特性使得我們要抓取到5頁必須指定6
outurl=inurl+str(num) req = requests.get(url=outurl)
將回圈值與url拼接成完整的url,並獲取頁面資料
完整程式碼如下:
import requests from bs4 import BeautifulSoup inurl="https://www.crrcgo.cc/admin/crr_supplier.html?page=" for num in range(1,6): print("================正在爬蟲第"+str(num)+"頁資料==================") outurl=inurl+str(num) req = requests.get(url=outurl) req.encoding = "utf-8" html=req.text soup = BeautifulSoup(req.text,features="html.parser") company_items = soup.find_all("div",class_="detail_head") for company_item in company_items: dd = company_item.text.strip() print(dd)
成功的抓取到了1-5頁所有的公司名(子標籤)內容
到此這篇關於Python獲取網頁指定內容的文章就介紹到這了,更多相關Python獲取網頁指定內容內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45