關于這篇文章有幾句話想說,首先給大家道歉,之前學的時候真的覺得下述的是比較厲害的東西,但是后來發現真的是基礎中的基礎,內容還不是很完全。再看一遍自己寫的這篇文章,突然有種想自殺的沖動。emmm所以樓主決定本文全文抹掉重寫一遍,并且為之前點進來看的七十多訪問量的人,致以最誠摯的歉意。好想死。。
在學完了爬蟲全部內容后,樓主覺得勉強有資格為接觸爬蟲的新人指指路了。那么廢話不多說,以下正文:
一、獲取內容
說爬蟲一定要先說爬取內容的方法,python有這么幾個支持爬蟲的庫,一個是urllib和它的后續版本庫,這個庫做爬取的時候生成的中繼對象是比較多的,樓主也記不大住都有什么,而且這個庫的使用在樓主看來有些過時了。更加建議做爬取的時候使用requests庫(ps:不是request)
使用urllib:
html = urllib.request.urlopen(url).read()
使用requests:
r = requests.get(url)
對于獲取到的內容,有以下方法進行處理:
1、使用正則表達式匹配。
2、使用BeautifulSoup對爬取內容標簽對象化。
3、通過構造節點樹使用Xpath獲取元素。
第一種方法勝在直接,效率高而且不需要安裝三方庫。第二種方法勝在簡單,標簽對象化后不需要寫復雜的正則表達式,而且提取標簽更加方便。第三種方法勝在靈活,獲取內容更加靈活,就是語法有點多,不熟的話可以對著Xpath語法文檔寫。
使用正則表達式匹配:
pattern_content = '<div class="rich_media_content " id="js_content">(.*?)</div>'content1 = re.findall(pattern_content, html, re.S)
使用BeautifulSoup對爬取內容標簽對象化:
soup = bs4.BeautifulSoup(html, 'lxml')imgs = soup.find_all('img')
關于BeautifulSoup的安裝請自行百度,沒記錯的話直接pip是可行的。
通過構造節點樹使用Xpath獲取元素:
selector=etree.HTML(html)content=selector.xpath('//div[@id="content"]/ul[@id="ul"]/li/text()')
至此,爬取的基本內容就敘述完畢了,這里給出的是最簡單的范例,如果想深入了解某種方法,建議去查詢更詳細的技術文檔。
下面內容就是之前的了,略作刪改。
二、偽造表單請求頭
很多網站上的數據爬取比較簡單,只需要直接request那個網址就可以,很多小型網站都是這樣。面對這樣的網站數據,只需要花個幾分鐘隨便寫幾行代碼,就能爬到我們想要的數據。
但是想要爬取稍微大型一些的網站數據,就不會這么容易了。這些網站的服務器,會分析收到的每一條request,來判斷該請求是否為用戶操作。這種技術,我們把它稱為反爬技術。常見的反爬技術,樓主知道的有上面所述的分析請求,還有驗證碼技術。對于這兩種情況,我們在構造爬蟲程序的時候就需要稍微費點力氣了。
新聞熱點
疑難解答