接着上一次爬蟲我們繼續研究BeautifulSoup
Python簡單爬蟲入門一
上一次我們爬蟲我們已經成功的爬下了網頁的源代碼,那么這一次我們將繼續來寫怎么抓去具體想要的元素
首先回顧以下我們BeautifulSoup的基本結構如下
#!/usr/bin/env python # -*-coding:utf-8 -*- from bs4 import BeautifulSoup import requests headers = { '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 BeautifulSoup import requests headers = { '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或其它可能你抓的信息就會出現亂碼
所以碰到此內問題 請小白繞道吧 因為如果你不學深入點很難解釋,有基礎的百度解決,我也會在以后專門寫一次關於程序代碼的標題(盡請期待)
最后你能獨到這我只能說謝謝觀看下次再會。。!