Python簡單爬蟲入門二,python爬蟲
接著上一次爬蟲我們繼續研究BeautifulSoup
Python簡單爬蟲入門一
上一次我們爬蟲我們已經成功的爬下了網頁的原始碼,那麼這一次我們將繼續來寫怎麼抓去具體想要的元素
首先回顧以下我們BeautifulSoup的基本結構如下
#!/usr/bin/env python# -*-coding:utf-8 -*-from bs4 import BeautifulSoupimport requestsheaders = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',}url = "爬取網頁的地址"web_data = requests.get(url,headers=headers)soup = BeautifulSoup(web_data.text,"lxml")
重要事情再次強調這是我們開始爬取網頁的一個基本結構,如同建樓的一個地基。
首先匯入所需的工具也就是模組方法 from import
偽裝瀏覽器headers向瀏覽器發出請求requests.get拿到返回結果在用BeautifulSoup以lxml格式解析網頁代碼
那麼到這我們就開始取網頁中我們想要的資料例片(一般都會放到標籤img下的src內),標題(一般以title命名或者放入h3或a標籤裡),在就是內容也會放入和標題一樣的
標籤中怎麼區分一般會通過CSS命名結構來區分。
1.先來抓去最直觀的圖片地址:
操作先滑鼠右鍵也就是俗稱反鍵--下一步點審查元素據可以找到你選取位置的元素地址:
是不是顯示了圖片的地址以及標籤img src="這裡放的串連就是圖片地址"
那麼我們接著我們上面的程式寫如下代碼來抓去圖片地址標籤:
from bs4 import BeautifulSoupimport requestsheaders = { 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',}url = "http://www.lotour.com/guoneiyou/"web_data = requests.get(url,headers=headers)soup = BeautifulSoup(web_data.text,"lxml")imgs = soup.select("img")for img in imgs: print img
大家其實只用在結構代碼改變url地址,然後加入imgs = soup.select("img") 這寫法就等於 變數名 = 賦值這個值是什麼類型之類的
select是一個選擇擷取的方法如果大家用過mysql select * from table 是不是可以查看錶內容一樣的效果("img")就是擷取哪標籤,和mysql選取位置where類似
由於select是一次性擷取返回列表,所以看起來很費勁再次我就用for迴圈去除每一個元素這樣可以看到多行資料如下:
如何去除中間src方法有很幾種其中例如正則匹配,不過我們有簡單的內建方法想聽結果如何下回分解。
無論工具多好用,得多用你才能熟練,現在我們繼續抓去標題也可能是內容的當然還是一步步來熟練操作,
滑鼠右鍵點擊標題處或者是內容--點擊審查元素效果如下:
這裡一一對應了網頁上的小標題以及原始碼的位置及其標籤 最後細心的朋友會發現html body div #container....div.auther p a這一行肯定會疑惑這是什麼
其實這裡就是網頁標籤的層級關係以及內容的定位作用想瞭解的去看我的HTML的基本組成結構與標籤就會有所瞭解這裡就不多介紹了
那麼我們還是以基礎結構添加以下代碼來抓去網頁的小標題,提醒網頁的其它內容也同此原理,大家多練多想多總結很快就上手了。
titles = soup.select(" div.auther > p > a")for title in titles: print title
老規矩用select來選擇擷取的內容("div.auther > p > a")這就是網頁定位標題的位置意思:在div標籤CSS是auther中間用.點串連下的p標籤下的a標籤內
由於標籤有層級結構我們要告訴代碼去哪裡找東西,打個比方BOSS要你去資料室,A櫃裡面的第三行中的馬總公司資料拿來一樣。
這裡如過還是模糊我建議你試著去多練習抓去其它的元素多練習幾次可能就有自己的理解見地,掩飾效果如下:
那麼接下來就是大家自由發揮的事件了,是去爬各大購物網站的妹子也好,還是爬各大電影網站的電影名也好,只要多練習就熟練了,最後要提醒的是很多網站爬出來會
出現亂碼當然這不是程式問題是網站的編碼結構不一樣需要去解碼,對於解碼不推薦小白去學,還是看了基礎在研究,來叫大家怎麼看網頁的編碼
還是右鍵-審查元素(有的網站會屏蔽此功能和查看原始碼)查看網頁中charset = "編碼格式" 如果是標準utf-8還好 如果是gb2312或其它可能你抓的資訊就會出現亂碼
所以碰到此內問題 請小白繞道吧 因為如果你不學深入點很難解釋,有基礎的百度解決,我也會在以後專門寫一次關於程式碼的標題(盡請期待)
最後你能獨到這我只能說謝謝觀看下次再會。。!