爬蟲
爬蟲的概念
絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社群中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取網際網路資訊的程式或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模拟程式或者蠕蟲。
爬蟲的步驟
- 準備目标站點的位址,然後在浏覽器上分析一下網站
- 網絡請求,下載下傳網站源代碼
- 從源碼中解析你想要的内容
- 儲存内容
- 整理資料結果
建立項目,開始最簡單的爬蟲
#目标站點的位址
url='https://www.i4.cn/wper_1_0_0_1.html'
#引入網絡請求的庫
from urllib import request
#進行網絡請求,傳回響應對象
resp=request.urlopen(url)
#讀取響應體
content=resp.read()
print(content)
因為在寫爬蟲的時候,經常會遇到有反爬蟲機制,對爬去速度和次數都有影響,是以,我們在爬取時最好爬一次,然後儲存到本地
# 打開或者建立一個檔案
file = open('i4.html', 'w', encoding='utf-8')
# 把下載下傳的源碼儲存到本地
content = str(content, encoding='utf-8')
file.write(content)
儲存到本地之後,上面請求和下載下傳就不用再執行了,我們一般封裝為一個方法,在我們再次需要請求的時候再調用,那麼完整的代碼:
def install():
# 目标站點的位址
url = 'https://www.i4.cn/wper_1_0_0_1.html'
# 進行網絡請求,傳回響應對象
resp = request.urlopen(url)
# 讀取響應體
content = resp.read()
print(content)
# 打開或者建立一個檔案
file = open('i4.html', 'w', encoding='utf-8')
# 把下載下傳的源碼儲存到本地
content = str(content, encoding='utf-8')
file.write(content)
pass
解析内容
我們要先從本地讀取内容
#讀取本地的内容
file = open('i4.html', 'r', encoding='utf-8')
content=file.read()
對内容進行解析,需要一個解析工具,常用的幾個有:bs4 、pyquery兩種解析庫,也可以xpath解析,或者用正規表達式,初學者使用bs4比較簡單,引入bs4庫,這個庫是第三方,需要先下載下傳,下載下傳方式:
1: 在指令行中 輸入 pip install bs4
2: pycharm開發工具也有下載下傳的地方:
file — settings

點右上角+ 号 ,出來下一個界面
輸入你要的庫,點左下角的下載下傳即可,等待下載下傳完成
那麼接下來,就可以進行解析
#擷取解析工具的對象:參數是要解析的内容和解析的規則
soup= BeautifulSoup(content,'html.parser')
接下來根據id或者class或者其他屬性,一級一級往下找自己想要的内容
#getElementsByClassName(),根據class找,傳回值為清單
# ibox=soup.select('.ibox')[0]
# # # print(ibox)
# ibox=soup.select('#wper')
# print(ibox)
#select()參數無論是id還是class,傳回值都是清單
#select_one('')參數無論是id還是class,傳回值都是單個
ibox=soup.select_one('#wper')
#jbox=soup.find(attrs={'class':'jbox'})
jbox=soup.find(class_='jbox')
kbox=jbox.find(class_='kbox')
list=kbox.find_all(class_='list')
for item in list:
img=item.select_one('.wper_img')
#擷取标簽某個屬性的值
imgUrl=img['src']
print(imgUrl)
在這裡,bs4有幾種查找的方法:find find_all select select_one
注意使用方式就行
下載下傳:直接可以用request下載下傳,第一個是圖檔位址,第二個是儲存的路徑
savePath=name+'.jpg'
request.urlretrieve(imgUrl,savePath)