import requests,bs4
res=requests.get('https://www.hao123.com/')
print('res對象的類型:',type(res))
res.raise_for_status() ###raise_for_status() 方法用來確保程序在下載失敗時中止,預防程序發生未知錯誤。
noStarchSoup=bs4.BeautifulSoup(res.text) ###利用 requests.get()函數下載主頁,而後將響應結果的text屬性傳遞給 bs4.BeautifulSoup(),而後再返回的給BeautifulSoup 對象保存在變量 noStarchSoup 中。
type(noStarchSoup)
elems=noStarchSoup.select('div')
print(type(elems))
print('www.hao123.com網站的div個數爲:',len(elems))
print(type(elems[2]))
print('www.hao123.com網站第89個div內的內容是:',elems[88].getText())
運行結果爲:
res對象的類型: <class 'requests.models.Response'>
/home/pyvip/projects/home/pyvip/projects/2019/In march/py3.9-3.py:5: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("html.parser"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.html
The code that caused this warning is on line 5 of the file /home/pyvip/projects/home/pyvip/projects/2019/In march/py3.9-3.py. To get rid of this warning, pass the additional argument 'features="html.parser"' to the BeautifulSoup constructor.python
noStarchSoup=bs4.BeautifulSoup(res.text) ###利用 requests.get()函數下載主頁,而後將響應結果的text屬性傳遞給 bs4.BeautifulSoup(),而後再返回的給BeautifulSoup 對象保存在變量 noStarchSoup 中。
<class 'list'>
www.hao123.com網站的div個數爲: 190
<class 'bs4.element.Tag'>
www.hao123.com網站第89個div內的內容是: 首頁電視劇最新電影新聞頭條八卦娛樂熱門遊戲小 遊 戲今日特價特價旅遊熱點車訊頭條新聞人民網新華網央視網國際在線中國日報中國網中經網光明網央廣網求是網中青網網信網廣州市政府電視劇綜藝遊戲小遊戲電影直播動畫漫畫新聞娛樂旅遊特價彩票星座搞笑小說教育考試股票理財推薦社會娛樂生活體育習重視河南「三農工做」對老鄉最深的牽掛中國人的努力 從太空也能看到世上最長壽的人打開快遞 30萬的黃金變塑料大批假冒食品集中銷燬 745箱零食堆成山"插座一哥"賠10億 其公司日賺1億表明建議:恢復"五一"七天長假 臺海軍一艘護衛艦遭沙特油輪撞擊爲什麼不說是日本?財長爲中國辯護男子中數億大獎 前妻:不後悔離婚美僱員行李中夾帶迫擊炮彈 俄火了法官頂住壓力做出無罪判決 被記二等功分娩之痛 60名中學生撕心尖叫一艘高速船疑似撞到鯨魚 致超80人受傷百度•貼吧新浪•微博搜狐•熱點騰 訊網 易愛 奇 藝天貓•精選鳳 凰 網淘 寶 網免費遊戲百度地圖hao123影視京東商城蘇寧易購榮耀專區鬥魚 TV優 酷 網聚 劃 算東方財富•理財58 同 城天貓超市攜程旅行網12306hao123旅遊瓜子二手車萌主頁•動漫Booking酒店學 信 網頭條新聞體育•NBA4399遊戲彩票•雙色球愛 淘 寶網易雲音樂天涯社區知 乎嗶哩嗶哩直 播 吧QQ 郵 箱163 郵箱126 郵箱139 郵箱新浪郵箱搜狐郵箱工商銀行建設銀行農業銀行中國銀行招商銀行交通銀行郵政儲蓄知 網豆 瓣聚划算優質月嫂新房裝修無息貸款英語口語親子鑑定去除甲醛遊戲魔域永恆屠龍榮耀西遊零紀元藍月傳奇17遊戲大全乾坤戰紀魔獸世界屠龍攻沙新熱六間房直播蘇寧易購7座家用車美女秀場iPhone降價爆款必搶新款帕薩特舊機換新推薦安居客房產二手評估熱銷樓盤精選二手車二手房急售二手好車三亞免稅店大理古城優選名企招聘自考本科熱門職位考研真題名師輔導班劍橋英語寒假冬令營同城閃送生活近視眼手術無痛拔牙隱形牙套婦科檢查無痛分娩頸椎病治療皓齒美白眼袋修復廣告電視劇電影新聞娛樂體育小遊戲新遊特價購物綜藝軟件理財推 薦更多>>教你理財天貓購物季千圖網蘇寧超市微信 南方網視 頻更多>>愛奇藝高清優酷網百度視頻騰訊視頻芒果TV搜狐視頻網絡自制影 視更多>>電視劇電影•購票動漫綜藝電視直播院線大片熱點資訊手繪4年抗癌日記遊 戲更多>>4399遊戲7k7k遊戲1717337遊戲hao123遊戲遊民星空新 聞更多>>新浪新聞騰訊新聞百度新聞搜狐新聞參考消息環球網澎湃新聞看 點更多>>中華軍事米爾軍事鐵血軍事環球軍事鳳凰軍事新浪軍事void function(e,t){for(var n=t.getElementsByTagName("img"),a=+new Date,i=[],o=function(){this.removeEventListener&&this.removeEventListener("load",o,!1),i.push({img:this,time:+new Date})},s=0;s< n.length;s++)!function(){var e=n[s];e.addEventListener?!e.complete&&e.addEventListener("load",o,!1):e.attachEvent&&e.attachEvent("onreadystatechange",function(){"complete"==e.readyState&&o.call(e,o)})}();alog("speed.set",{fsItems:i,fs:a})}(window,document);web
Process finished with exit code 0瀏覽器
知識點總結:
requests模塊有以下方法:
(1)、requests.get()方法:requests.get()用來下載一個網頁,該方法用來接受一個要下載的 URL 字符串,URL放在括號內。經過在 requests.get()的返回值上調用 type(),你能夠看到它返回一個 Response 對象,其中包含了 Web 服務器對你的請求作出的響應。
(2)、raise_for_status()方法:用來確保程序在下載失敗時中止,預防程序發生未知錯誤。它老是在調用requests.get()以後再調用raise_for_status(),確保下載確實成功,而後再讓程序繼續。
(3)、
BeautifulSoup模塊:
用來解析html文件,並從html頁面中提取信息。該模塊名稱是bs4。它有以下方法:
(1)、bs4.BeautifulSoup()方法:它調用時須要一個字符串,其中包括將要解析的 HTML。
bs4.BeautifulSoup()函數返回一個BeautifulSoup對象,也就是說BeautifulSoup()方法是從html中建立一個BeautifulSoup對象。
(2)、select()方法:用於尋找網頁上的元素。select()方法將返回一個Tag對象的列表。針對須要尋找的元素,調用method()方法,傳入一個字符串做爲CSS選擇器,這樣就能夠取得WEB頁面元素了。
傳遞給select()方法的選擇器有:
soup.select('div') 全部名爲<div>的元素
soup.select('#author') 帶有 id 屬性爲 author 的元素
soup.select('.notice') 全部使用 CSS class 屬性名爲 notice 的元素
soup.select('div span') 全部在<div>元素以內的<span>元素
soup.select('div > span') 全部直接在<div>元素以內的<span>元素,中間沒有其餘元素
soup.select('input[name]') 全部名爲<input>,並有一個 name 屬性,其值無所謂的元素
soup.select('input[type="button"]') 全部名爲<input>,並有一個 type 屬性,其值爲 button 的元素
webbrowser模塊:
webbrowser模塊的open()方法能夠啓動一個新的瀏覽器,打開指定的URL。例如:
>>> import webbrowser
>>> webbrowser.open('http://inventwithpython.com/')服務器
描述:endswith() 方法用於判斷字符串是否以指定後綴結尾,若是以指定後綴結尾返回True,不然返回False。可選參數"start"與"end"爲檢索字符串的開始與結束位置。微信
用法:str.endswith(suffix[, start[, end]])網絡
描述:os.makedirs() 方法用於遞歸建立目錄。像 mkdir(), 但建立的全部intermediate-level文件夾須要包含子目錄。函數
makedirs()方法語法格式以下:os.makedirs(path, mode=0o777)動畫
描述:Python 字典 setdefault() 函數和get() 方法相似, 若是鍵不存在於字典中,將會添加鍵並將值設爲默認值。網站
setdefault()方法語法:dict.setdefault(key, default=None)