一、Requests的介紹與安裝javascript
requests:HTTP for Humanscss
完美替代Python的urllib2模塊html
更多的自動化java
更友好的用戶體驗python
如何安裝:Windows:pip install requestsjquery
第三方庫的安裝技巧程序員
少用easy_install由於只能安裝不能卸載正則表達式
多用pip方式安裝編程
在國內撞牆的時候咱們可使用這個網站:http://www.lfd.uci.edu/~gohlke/pythonlibs/ 網頁爬蟲
打開該網站,搜素requests,單擊圖中紅框中的內容將其下載
打開下載的文件目錄,將此文件的後綴名從whl改成zip
將其解壓,獲得requests與requests-2.17.3.dist-info兩個文件夾,咱們將requests文件夾總體賦值粘貼到C:\Python27\Lib(Python的安裝目錄下的lib文件夾下)
二、第一個網頁爬蟲
使用requests獲取網頁源代碼
直接獲取源代碼
#coding:utf-8 import requests qhmu=requests.get("http://www.cnblogs.com/jiyongxin") print qhmu.text
輸出結果
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="utf-8"/> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>小新丶 - 博客園</title> <link type="text/css" rel="stylesheet" href="/bundles/blog-common.css?v=m_FXmwz3wxZoecUwNEK23PAzc-j9vbX_C6MblJ5ouMc1"/> <link id="MainCss" type="text/css" rel="stylesheet" href="/skins/CodingLife/bundle-CodingLife.css?v=s0uk-4nDGKcoZzCtu5RG1QHcsOLuk4tFWHoK2TgaeRE1"/> <link id="mobile-style" media="only screen and (max-width: 768px)" type="text/css" rel="stylesheet" href="/skins/CodingLife/bundle-CodingLife-mobile.css?v=svj45cmFr8dtGVB0Cq4o-6MjM6Bz3Y76mAYaZnSJon01"/> <link title="RSS" type="application/rss+xml" rel="alternate" href="http://www.cnblogs.com/jiyongxin/rss"/> <link title="RSD" type="application/rsd+xml" rel="EditURI" href="http://www.cnblogs.com/jiyongxin/rsd.xml"/> <link type="application/wlwmanifest+xml" rel="wlwmanifest" href="http://www.cnblogs.com/jiyongxin/wlwmanifest.xml"/> <script src="//common.cnblogs.com/script/jquery.js" type="text/javascript"></script> <script type="text/javascript">var currentBlogApp = 'jiyongxin', cb_enable_mathjax=false;var isLogined=false;</script> <script src="/bundles/blog-common.js?v=E1-LyrzANB2jbN9omtnpOHx3eU0Kt3DyislfhU0b5p81" type="text/javascript"></script> </head> <body> <a name="top"></a> <!--done--> <div id="home"> <div id="header"> <div id="blogTitle"> <a id="lnkBlogLogo" href="http://www.cnblogs.com/jiyongxin/"><img id="blogLogo" src="/Skins/custom/images/logo.gif" alt="返回主頁" /></a> <!--done--> <h1><a id="Header1_HeaderTitle" class="headermaintitle" href="http://www.cnblogs.com/jiyongxin/">小新丶</a></h1> <h2>小白程序員大雜燴學習之路</h2> </div><!--end: blogTitle 博客的標題和副標題 --> <div id="navigator"> <ul id="navList"> <li><a id="blog_nav_sitehome" class="menu" href="http://www.cnblogs.com/">博客園</a></li> <li><a id="blog_nav_myhome" class="menu" href="http://www.cnblogs.com/jiyongxin/">首頁</a></li> <li><a id="blog_nav_newpost" class="menu" rel="nofollow" href="https://i.cnblogs.com/EditPosts.aspx?opt=1">新隨筆</a></li> <li><a id="blog_nav_contact" class="menu" rel="nofollow" href="https://msg.cnblogs.com/send/%E5%B0%8F%E6%96%B0%E4%B8%B6">聯繫</a></li> <li><a id="blog_nav_rss" class="menu" href="http://www.cnblogs.com/jiyongxin/rss">訂閱</a> <!--<a id="blog_nav_rss_image" class="aHeaderXML" href="http://www.cnblogs.com/jiyongxin/rss"><img src="//www.cnblogs.com/images/xml.gif" alt="訂閱" /></a>--></li> <li><a id="blog_nav_admin" class="menu" rel="nofollow" href="https://i.cnblogs.com/">管理</a></li> </ul> <div class="blogStats"> <div id="blog_stats"> <span id="stats_post_count">隨筆 - 18 </span> <span id="stats_article_count">文章 - 0 </span> <span id="stats-comment_count">評論 - 2</span> </div> </div><!--end: blogStats --> </div><!--end: navigator 博客導航欄 --> </div><!--end: header 頭部 --> <div id="main"> <div id="mainContent"> <div class="forFlow"> <!--done--> <div class="day"> <div class="dayTitle"> <a id="homepage1_HomePageDays_DaysList_ctl00_ImageLink" href="http://www.cnblogs.com/jiyongxin/archive/2017/06/12.html">2017年6月12日</a> </div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl00_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6993224.html">Python-15:爬蟲之正則表達式應用舉例</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 首先,咱們從最簡單的使用python來讀取本地文件中的文本內容來開始 一、在本地新建一個html文檔,內容以下 二、在與html文件相同目錄下建立咱們的Python文件,內容以下 三、輸出結果爲 這樣咱們就使用Python簡單的一句代碼將HTML文件讀取出來了,那麼,咱們想要獲得HTML中特定的信息<a href="http://www.cnblogs.com/jiyongxin/p/6993224.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-06-12 16:24 小新丶 閱讀(2) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6993224" rel="nofollow">編輯</a></div> <div class="clear"></div> </div> <div class="day"> <div class="dayTitle"> <a id="homepage1_HomePageDays_DaysList_ctl01_ImageLink" href="http://www.cnblogs.com/jiyongxin/archive/2017/06/07.html">2017年6月7日</a> </div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl01_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6957997.html">Python-14:爬蟲之正則表達式1</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 通過一段時間的基礎知識鋪墊,終於能夠開始學習爬蟲了,對,就是爬蟲,能夠爬東西的蟲子! 爬蟲基礎,一個是Python,一個就是正則表達式了,固然,正則表達式在任什麼時候候都不容忽視它的重要性! 接下來,咱們從一個破解小密碼來開始學習正則表達式 laodhfejzuwxyzixyzladivhwanxyzl<a href="http://www.cnblogs.com/jiyongxin/p/6957997.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-06-07 17:04 小新丶 閱讀(9) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6957997" rel="nofollow">編輯</a></div> <div class="clear"></div> <div class="postSeparator"></div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl01_DayList_TitleUrl_1" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6957635.html">Python-13:模塊</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 一、認識Python模塊 函數是能夠實現一項或多項功能的一段程序,模塊是能夠實現一項或多項功能的程序塊 安裝目錄下的lib文件夾中都是模塊 如何導入模塊 使用import關鍵字,若是使用這個模塊必須先導入 sys模塊 在Python中有一些模塊是不用咱們本身去定義的,Python官方提供的自帶的模塊<a href="http://www.cnblogs.com/jiyongxin/p/6957635.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-06-07 16:14 小新丶 閱讀(5) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6957635" rel="nofollow">編輯</a></div> <div class="clear"></div> </div> <div class="day"> <div class="dayTitle"> <a id="homepage1_HomePageDays_DaysList_ctl02_ImageLink" href="http://www.cnblogs.com/jiyongxin/archive/2017/05/18.html">2017年5月18日</a> </div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl02_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6873408.html">使用地圖切片並最終將地圖發佈在arcgis for server</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 一、記錄好下載的離線地圖切片文件夾所在的位置(上個隨筆有介紹如何下載離線地圖) 二、打開arcmap 三、新建一個空的模板 四、點擊add data 五、選擇咱們下載的切片點擊add 六、界面如圖所示 七、生成發佈所需的文件並在arcgis for server上進行發佈 依次點擊File-Shar<a href="http://www.cnblogs.com/jiyongxin/p/6873408.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-05-18 14:56 小新丶 閱讀(2) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6873408" rel="nofollow">編輯</a></div> <div class="clear"></div> <div class="postSeparator"></div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl02_DayList_TitleUrl_1" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6873158.html">使用下載器下載適用於arcgis的離線地圖切片</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 一、下載太樂地圖下載器或水經注離線地圖下載器(官網下載爲適用版,加水印且控制下載大小) 二、地圖下載器界面以下 太樂地圖下載器 水經注離線地圖下載器 三、兩款軟件操做相似,咱們就以水經注離線地圖下載器爲例,詳解各個步驟 ①點擊設置 ②選擇在線地圖 ③選擇本身須要下載的地圖,這裏以谷歌衛星地圖爲例(注<a href="http://www.cnblogs.com/jiyongxin/p/6873158.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-05-18 14:25 小新丶 閱讀(2) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6873158" rel="nofollow">編輯</a></div> <div class="clear"></div> <div class="postSeparator"></div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl02_DayList_TitleUrl_2" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6835990.html">Python-12:Python語法基礎-函數</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 一、函數 function,通俗來說函數就是功能,函數是用來封裝功能的,函數分爲兩種類型,一種是系統自帶的不用咱們編寫就可使用的。另外一種函數是自定義的,須要咱們編寫其功能,這種函數自由度高,叫作自定義函數。 函數的定義: ①聲明這個指定的部分是函數 ②編寫這個函數的功能 格式:def 函數名():<a href="http://www.cnblogs.com/jiyongxin/p/6835990.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-05-18 14:02 小新丶 閱讀(7) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6835990" rel="nofollow">編輯</a></div> <div class="clear"></div> </div> <div class="day"> <div class="dayTitle"> <a id="homepage1_HomePageDays_DaysList_ctl03_ImageLink" href="http://www.cnblogs.com/jiyongxin/archive/2017/05/10.html">2017年5月10日</a> </div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl03_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6835196.html">Python-11:Python語法基礎-控制流</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 一、Python中的三種控制流 程序中代碼的執行是有順序的,有的代碼會從上到下按順序執行,有的程序代碼會跳轉着執行,有的程序代碼會選擇不一樣的分支執行,有的代碼會循環着執行,什麼樣的程序應該選擇分支執行,什麼樣的代碼應該循環着執行,在Python中是有相應的控制語句控制的,控制語句能控制某段代碼的執行<a href="http://www.cnblogs.com/jiyongxin/p/6835196.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-05-10 11:51 小新丶 閱讀(7) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6835196" rel="nofollow">編輯</a></div> <div class="clear"></div> <div class="postSeparator"></div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl03_DayList_TitleUrl_1" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6831564.html">Python-10:Python語法基礎-運算符與表達式</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 一、Python運算符簡介 1)什麼是運算符 在Python中常常須要對一個或多個數字進行操做,2+3中的+是運算符,"hello"*20中的*也是運算符 2)運算符有哪些 + - * / ** < > != // % & | ^ ~ >> << <= >= == not and or 3)運算符的<a href="http://www.cnblogs.com/jiyongxin/p/6831564.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-05-10 09:43 小新丶 閱讀(7) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6831564" rel="nofollow">編輯</a></div> <div class="clear"></div> </div> <div class="day"> <div class="dayTitle"> <a id="homepage1_HomePageDays_DaysList_ctl04_ImageLink" href="http://www.cnblogs.com/jiyongxin/archive/2017/05/09.html">2017年5月9日</a> </div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl04_DayList_TitleUrl_0" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6831239.html">Python-09:Python語法基礎-行與縮進</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 一、邏輯行和物理行 Python中邏輯行主要指一段代碼,在乎義上它的行數,而物理行,指的是咱們實際看到的行數 二、行中分號的使用規則 在Python中一個物理行通常能夠包括多個邏輯行,在一個物理行中編寫多個邏輯行的時候,邏輯行與邏輯行用;號隔開。 每一個邏輯行是必需要有分號的,可是咱們在編寫程序的時候<a href="http://www.cnblogs.com/jiyongxin/p/6831239.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-05-09 16:35 小新丶 閱讀(8) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6831239" rel="nofollow">編輯</a></div> <div class="clear"></div> <div class="postSeparator"></div> <div class="postTitle"> <a id="homepage1_HomePageDays_DaysList_ctl04_DayList_TitleUrl_1" class="postTitle2" href="http://www.cnblogs.com/jiyongxin/p/6830731.html">Python-08:Python語法基礎-標識符和對象</a> </div> <div class="postCon"><div class="c_b_p_desc">摘要: 一、什麼是標識(zhi)符? Python中咱們在編程的時候,起的名字就叫作標識符。其中變量和常量就是標識符的一種 二、標識符的命名規則 ①標識符的第一個字符必須是字母或者下劃線,不能是數字或者特殊符號等 ②除了第一個字符外,其餘的可使字母下劃線和數字 ③大小寫敏感 stuName和stuname<a href="http://www.cnblogs.com/jiyongxin/p/6830731.html" class="c_b_p_desc_readmore">閱讀全文</a></div></div> <div class="clear"></div> <div class="postDesc">posted @ 2017-05-09 15:19 小新丶 閱讀(7) 評論(0) <a href ="https://i.cnblogs.com/EditPosts.aspx?postid=6830731" rel="nofollow">編輯</a></div> <div class="clear"></div> </div> <div class="topicListFooter"><div id="nav_next_page"><a href="http://www.cnblogs.com/jiyongxin/default.html?page=2">下一頁</a></div></div> </div><!--end: forFlow --> </div><!--end: mainContent 主體內容容器--> <div id="sideBar"> <div id="sideBarMain"> <!--done--> <div class="newsItem"> <h3 class="catListTitle">公告</h3> <div id="blog-news"></div><script type="text/javascript">loadBlogNews();</script> </div> <div id="blog-calendar" style="display:none"></div><script type="text/javascript">loadBlogDefaultCalendar();</script> <div id="leftcontentcontainer"> <div id="blog-sidecolumn"></div><script type="text/javascript">loadBlogSideColumn();</script> </div> </div><!--end: sideBarMain --> </div><!--end: sideBar 側邊欄容器 --> <div class="clear"></div> </div><!--end: main --> <div class="clear"></div> <div id="footer"> <!--done--> Copyright ©2017 小新丶 </div><!--end: footer --> </div><!--end: home 自定義的最大容器 --> </body> </html>
修改Http頭獲取源代碼
若是有些網站有反爬蟲,會檢測你訪問的客戶端是否是瀏覽器,若是是瀏覽器能夠進入,不是的話會被拒絕,這時候咱們就能夠吧咱們的爬蟲假裝成瀏覽器
#coding:utf-8 import requests _header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} qhmu=requests.get("http://jp.tingroom.com/yuedu/yd300p/",headers=_header) qhmu.encoding='utf-8' print qhmu.text
這樣,也能夠把網頁的源代碼給弄出來
獲取到網頁的源代碼是第一步,咱們最終目的是要獲取咱們所須要的信息,咱們就來扒取到個人博客中的標題
觀察咱們標題處的代碼
<div class="postTitle"> <a XXXXXX>Python-09:Python語法基礎-行與縮進</a> </div>
咱們能夠先找出網頁上全部class爲postTitle的div,在從找到的內容中根據「>(.*?)</a>」來檢索
第一步,先找出全部包括隨筆標題的div
#coding:utf-8 import requests import re _header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} qhmu=requests.get("http://www.cnblogs.com/jiyongxin",headers=_header) qhmu.encoding='utf-8' div_Title=re.findall('<div class="postTitle">(.*?)</div>',qhmu.text,re.S) for each in div_Title: print each
輸出結果爲
第二步,從div中尋找標題
#coding:utf-8 import requests import re _header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'} qhmu=requests.get("http://www.cnblogs.com/jiyongxin",headers=_header) qhmu.encoding='utf-8' div_Title=re.findall('<div class="postTitle">(.*?)</div>',qhmu.text,re.S) for each in div_Title: a_title=re.findall('>(.*?)</a>',each,re.S) print a_title[0]
輸出結果爲
成功將全部的標題扒取出來
三、向網頁提交數據
Get 與 Post介紹
get:從服務器上獲取數據
post:向服務器傳送數據
get經過構造url中的參數來實現功能
post是將數據放在header中提交數據
分析目標網站
request的表單提交功能