教你用python爬取w3shcool的課程並且儲存到本地的代碼執行個體

來源:互聯網
上載者:User
本文主要介紹python爬取w3shcool的JQuery的課程並且儲存到本地的方法解析。具有很好的參考價值。下面跟著小編一起來看下吧

最近在忙於找工作,閑暇之餘,也找點爬蟲項目練練手,寫寫代碼,知道自己是個菜鳥,但是要多加練習,書山有路勤為徑。各位爺有測試坑可以給我介紹個啊,自動化,功能,介面都可以做。

首先呢,我們明確需求,很多同學呢,有事沒事就想看看一些技術,比如我想看看JQuery的文法呢,可是我現在沒有網路,手機上也沒有電子書,真的讓我們很難受,那麼別著急啊,你這需求我在這裡滿足你,首先呢,你的需求是擷取JQuery的文法的,那麼我在看到這個需求,我有響應的網站那麼我們接下來去分析這個網站。www.w3school.com.cn/jquery/jquery_syntax.asp 這是文法url, http://www.w3school.com.cn/jquery/jquery_intro.asp 這是簡介的url,那麼我們拿到很多的url分析到,我們的www.w3school.com.cn/jquery是相同的,那麼我們在來分析在介面怎麼可以擷取得到這些,我們可以看到右面有相應的目標欄,那麼我們去分析下

我們來看下這些連結,。我們可以吧這些連結和http://www.w3school.com.cn拼接到一起。然後組成我們新的url,

上代碼

import urllib.requestfrom bs4 import BeautifulSoup import timedef head(): headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0' } return headersdef parse_url(url): hea=head() resposne=urllib.request.Request(url,headers=hea) html=urllib.request.urlopen(resposne).read().decode('gb2312') return htmldef url_s(): url='http://www.w3school.com.cn/jquery/index.asp' html=parse_url(url) soup=BeautifulSoup(html) me=soup.find_all(id='course') m_url_text=[] m_url=[] for link in me:  m_url_text.append(link.text)  m=link.find_all('a')  for i in m:   m_url.append(i.get('href')) for i in m_url_text:  h=i.encode('utf-8').decode('utf-8')  m_url_text=h.split('\n') return m_url,m_url_text

這樣我們使用url_s這個函數就可以擷取我們所有的連結。

['/jquery/index.asp', '/jquery/jquery_intro.asp', '/jquery/jquery_install.asp', '/jquery/jquery_syntax.asp', '/jquery/jquery_selectors.asp', '/jquery/jquery_events.asp', '/jquery/jquery_hide_show.asp', '/jquery/jquery_fade.asp', '/jquery/jquery_slide.asp', '/jquery/jquery_animate.asp', '/jquery/jquery_stop.asp', '/jquery/jquery_callback.asp', '/jquery/jquery_chaining.asp', '/jquery/jquery_dom_get.asp', '/jquery/jquery_dom_set.asp', '/jquery/jquery_dom_add.asp', '/jquery/jquery_dom_remove.asp', '/jquery/jquery_css_classes.asp', '/jquery/jquery_css.asp', '/jquery/jquery_dimensions.asp', '/jquery/jquery_traversing.asp', '/jquery/jquery_traversing_ancestors.asp', '/jquery/jquery_traversing_descendants.asp', '/jquery/jquery_traversing_siblings.asp', '/jquery/jquery_traversing_filtering.asp', '/jquery/jquery_ajax_intro.asp', '/jquery/jquery_ajax_load.asp', '/jquery/jquery_ajax_get_post.asp', '/jquery/jquery_noconflict.asp', '/jquery/jquery_examples.asp', '/jquery/jquery_quiz.asp', '/jquery/jquery_reference.asp', '/jquery/jquery_ref_selectors.asp', '/jquery/jquery_ref_events.asp', '/jquery/jquery_ref_effects.asp', '/jquery/jquery_ref_manipulation.asp', '/jquery/jquery_ref_attributes.asp', '/jquery/jquery_ref_css.asp', '/jquery/jquery_ref_ajax.asp', '/jquery/jquery_ref_traversing.asp', '/jquery/jquery_ref_data.asp', '/jquery/jquery_ref_dom_element_methods.asp', '/jquery/jquery_ref_core.asp', '/jquery/jquery_ref_prop.asp'], ['jQuery 教程', '', 'jQuery 教程', 'jQuery 簡介', 'jQuery 安裝', 'jQuery 文法', 'jQuery 選取器', 'jQuery 事件', '', 'jQuery 效果', '', 'jQuery 隱藏/顯示', 'jQuery 淡入淡出', 'jQuery 滑動', 'jQuery 動畫', 'jQuery stop()', 'jQuery Callback', 'jQuery Chaining', '', 'jQuery HTML', '', 'jQuery 擷取', 'jQuery 設定', 'jQuery 添加', 'jQuery 刪除', 'jQuery CSS 類', 'jQuery css()', 'jQuery 尺寸', '', 'jQuery 遍曆', '', 'jQuery 遍曆', 'jQuery 祖先', 'jQuery 後代', 'jQuery 同胞', 'jQuery 過濾', '', 'jQuery AJAX', '', 'jQuery AJAX 簡介', 'jQuery 載入', 'jQuery Get/Post', '', 'jQuery 雜項', '', 'jQuery noConflict()', '', 'jQuery 執行個體', '', 'jQuery 執行個體', 'jQuery 測驗', '', 'jQuery 參考手冊', '', 'jQuery 參考手冊', 'jQuery 選取器', 'jQuery 事件', 'jQuery 效果', 'jQuery 文檔操作', 'jQuery 屬性操作', 'jQuery CSS 操作', 'jQuery Ajax', 'jQuery 遍曆', 'jQuery 資料', 'jQuery DOM 元素', 'jQuery 核心', 'jQuery 屬性', '', ''])

這是所有連結還有對應連結的所對應的文法模組的名字。那麼我們接下來就是去拼接urls,使用的是str的拼接

 ['http://www.w3school.com.cn//jquery/index.asp', 'http://www.w3school.com.cn//jquery/jquery_intro.asp', 'http://www.w3school.com.cn//jquery/jquery_install.asp', 'http://www.w3school.com.cn//jquery/jquery_syntax.asp', 'http://www.w3school.com.cn//jquery/jquery_selectors.asp', 'http://www.w3school.com.cn//jquery/jquery_events.asp', 'http://www.w3school.com.cn//jquery/jquery_hide_show.asp', 'http://www.w3school.com.cn//jquery/jquery_fade.asp', 'http://www.w3school.com.cn//jquery/jquery_slide.asp', 'http://www.w3school.com.cn//jquery/jquery_animate.asp', 'http://www.w3school.com.cn//jquery/jquery_stop.asp', 'http://www.w3school.com.cn//jquery/jquery_callback.asp', 'http://www.w3school.com.cn//jquery/jquery_chaining.asp', 'http://www.w3school.com.cn//jquery/jquery_dom_get.asp', 'http://www.w3school.com.cn//jquery/jquery_dom_set.asp', 'http://www.w3school.com.cn//jquery/jquery_dom_add.asp', 'http://www.w3school.com.cn//jquery/jquery_dom_remove.asp', 'http://www.w3school.com.cn//jquery/jquery_css_classes.asp', 'http://www.w3school.com.cn//jquery/jquery_css.asp', 'http://www.w3school.com.cn//jquery/jquery_dimensions.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing_ancestors.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing_descendants.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing_siblings.asp', 'http://www.w3school.com.cn//jquery/jquery_traversing_filtering.asp', 'http://www.w3school.com.cn//jquery/jquery_ajax_intro.asp', 'http://www.w3school.com.cn//jquery/jquery_ajax_load.asp', 'http://www.w3school.com.cn//jquery/jquery_ajax_get_post.asp', 'http://www.w3school.com.cn//jquery/jquery_noconflict.asp', 'http://www.w3school.com.cn//jquery/jquery_examples.asp', 'http://www.w3school.com.cn//jquery/jquery_quiz.asp', 'http://www.w3school.com.cn//jquery/jquery_reference.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_selectors.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_events.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_effects.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_manipulation.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_attributes.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_css.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_ajax.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_traversing.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_data.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_dom_element_methods.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_core.asp', 'http://www.w3school.com.cn//jquery/jquery_ref_prop.asp']

那麼我們有這個所有的urls,那麼我們來分析下,文章本文。

分析可以得到我們的所有的本文都是在一個id=maincontent中,那麼我們直接解析每個介面中的id=maincontent的標籤,擷取響應的text文檔,並且儲存就好。

所以我們所有的代碼如下:

import urllib.requestfrom bs4 import BeautifulSoup import timedef head(): headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0' } return headersdef parse_url(url): hea=head() resposne=urllib.request.Request(url,headers=hea) html=urllib.request.urlopen(resposne).read().decode('gb2312') return htmldef url_s(): url='http://www.w3school.com.cn/jquery/index.asp' html=parse_url(url) soup=BeautifulSoup(html) me=soup.find_all(id='course') m_url_text=[] m_url=[] for link in me:  m_url_text.append(link.text)  m=link.find_all('a')  for i in m:   m_url.append(i.get('href')) for i in m_url_text:  h=i.encode('utf-8').decode('utf-8')  m_url_text=h.split('\n') return m_url,m_url_textdef xml(): url,url_text=url_s() url_jque=[] for link in url:  url_jque.append('http://www.w3school.com.cn/'+link) return url_jquedef xiazai(): urls=xml() i=0 for url in urls:  html=parse_url(url)  soup=BeautifulSoup(html)  me=soup.find_all(id='maincontent')  with open(r'%s.txt'%i,'wb') as f:   for h in me:    f.write(h.text.encode('utf-8'))    print(i)  i+=1if __name__ == '__main__': xiazai()
import urllib.requestfrom bs4 import BeautifulSoup import timedef head(): headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0' } return headersdef parse_url(url): hea=head() resposne=urllib.request.Request(url,headers=hea) html=urllib.request.urlopen(resposne).read().decode('gb2312') return htmldef url_s(): url='http://www.w3school.com.cn/jquery/index.asp' html=parse_url(url) soup=BeautifulSoup(html) me=soup.find_all(id='course') m_url_text=[] m_url=[] for link in me:  m_url_text.append(link.text)  m=link.find_all('a')  for i in m:   m_url.append(i.get('href')) for i in m_url_text:  h=i.encode('utf-8').decode('utf-8')  m_url_text=h.split('\n') return m_url,m_url_textdef xml(): url,url_text=url_s() url_jque=[] for link in url:  url_jque.append('http://www.w3school.com.cn/'+link) return url_jquedef xiazai(): urls=xml() i=0 for url in urls:  html=parse_url(url)  soup=BeautifulSoup(html)  me=soup.find_all(id='maincontent')  with open(r'%s.txt'%i,'wb') as f:   for h in me:    f.write(h.text.encode('utf-8'))    print(i)  i+=1if __name__ == '__main__': xiazai()

結果

好了至此,我們的爬取工作完成,剩下的就是小修小布,大的內容我們都應該完成了。

其實python的爬蟲還是很簡單的,只要我們會分析網站的元素,找出所有元素的通項就可以很好的去分析和解決我們的問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.