Python爬蟲(chóng)工具requests-html使用解析
使用Python開(kāi)發(fā)的同學(xué)一定聽(tīng)說(shuō)過(guò)Requsts庫(kù),它是一個(gè)用于發(fā)送HTTP請(qǐng)求的測(cè)試。如比我們用Python做基于HTTP協(xié)議的接口測(cè)試,那么一定會(huì)首選Requsts,因?yàn)樗春?jiǎn)單又強(qiáng)大?,F(xiàn)在作者Kenneth Reitz 又開(kāi)發(fā)了requests-html 用于做爬蟲(chóng)。
該項(xiàng)目從3月上線到現(xiàn)在已經(jīng)7K+的star了!
GiHub項(xiàng)目地址:
https://github.com/kennethreitz/requests-html
requests-html 是基于現(xiàn)有的框架 PyQuery、Requests、lxml、beautifulsoup4等庫(kù)進(jìn)行了二次封裝,作者將Requests設(shè)計(jì)的簡(jiǎn)單強(qiáng)大的優(yōu)點(diǎn)帶到了該項(xiàng)目中。
安裝:
pip install requests-html
教程與使用:
使用GET請(qǐng)求 https://python.org 網(wǎng)站。
先來(lái)看看requests的基本使用。
from requests_html import HTMLSession
session = HTMLSession()
r = session.get('https://python.org/')
# 獲取頁(yè)面上的所有鏈接。
all_links = r.html.links
print(all_links)
# 獲取頁(yè)面上的所有鏈接,以絕對(duì)路徑的方式。
all_absolute_links = r.html.absolute_links
print(all_absolute_links)
作為一個(gè)IT技術(shù)人員,是不是要時(shí)時(shí)關(guān)心一下科技圈的新聞,上博客園新聞?lì)l道,抓取最新的推薦新聞。
from requests_html import HTMLSession
session = HTMLSession()
r = session.get("https://news.cnblogs.com/n/recommend")
# 通過(guò)CSS找到新聞標(biāo)簽
news = r.html.find('h2.news_entry > a')
for new in news:
print(new.text) # 獲得新聞標(biāo)題
print(new.absolute_links) # 獲得新聞鏈接
執(zhí)行結(jié)果:
雷軍:小米硬件綜合凈利率永遠(yuǎn)不超5%!
{'https://news.cnblogs.com/n/595156/'}
苦大仇深的“中國(guó)芯”,不妨學(xué)一學(xué)有趣的樹(shù)莓派
{'https://news.cnblogs.com/n/595143/'}
我的快遞,憑什么不能給我送到家!
{'https://news.cnblogs.com/n/595087/'}
倪光南回應(yīng)方舟CPU失敗論:企業(yè)失敗不等于技術(shù)失敗
{'https://news.cnblogs.com/n/595102/'}
清華大學(xué)突破紀(jì)錄:首次實(shí)現(xiàn)25個(gè)量子接口間量子糾纏
{'https://news.cnblogs.com/n/595103/'}
定向免流量套餐用著爽,但背后的“坑”你可能不知道
{'https://news.cnblogs.com/n/595061/'}
你在微信群侃大山,有人卻用微信群發(fā)大財(cái)
{'https://news.cnblogs.com/n/595059/'}
馬云的三觀
{'https://news.cnblogs.com/n/595047/'}
美國(guó)科技強(qiáng)大的全部秘密
{'https://news.cnblogs.com/n/595043/'}
蓋茨看著聽(tīng)證會(huì)上的扎克伯格:滿(mǎn)眼都是20年前的自己
{'https://news.cnblogs.com/n/595025/'}
史上最清晰癌細(xì)胞轉(zhuǎn)移3D影像來(lái)襲
{'https://news.cnblogs.com/n/595019/'}
中興員工:華為僅部分芯片自己設(shè)計(jì) 誰(shuí)被美制裁都得死
{'https://news.cnblogs.com/n/594967/'}
作為曾經(jīng)的華為員工,我想替中興公司說(shuō)兩句公道話
{'https://news.cnblogs.com/n/594962/'}
匿名網(wǎng)友回評(píng)梁寧:方舟bug無(wú)數(shù) 貼錢(qián)給別人都未必用
{'https://news.cnblogs.com/n/594932/'}
一段關(guān)于國(guó)產(chǎn)芯片和操作系統(tǒng)的往事
{'https://news.cnblogs.com/n/594900/'}
芯片股總市值低于美國(guó)巨頭 有公司靠政府補(bǔ)助盈利
{'https://news.cnblogs.com/n/594902/'}
被自家律師送上“槍口”的“二流”中興
{'https://news.cnblogs.com/n/594859/'}
Google正在失去DeepMind?
{'https://news.cnblogs.com/n/594853/'}
擴(kuò)展:我們可以進(jìn)一步將這里數(shù)據(jù)做持久化處理,設(shè)計(jì)出自己的“頭條”。
接下來(lái)我們到網(wǎng)站上下載壁紙,以美桌網(wǎng)(www.win4000.com)為例。
from requests_html import HTMLSession
import requests
# 保存圖片到bg/目錄
def save_image(url, title):
img_response = requests.get(url)
with open('./bg/'+title+'.jpg', 'wb') as file:
file.write(img_response.content)
# 背景圖片地址,這里選擇1920*1080的背景圖片
url = "http://www.win4000.com/wallpaper_2358_0_10_1.html"
session = HTMLSession()
r = session.get(url)
# 查找頁(yè)面中背景圖,找到鏈接,訪問(wèn)查看大圖,并獲取大圖地址
items_img = r.html.find('ul.clearfix > li > a')
for img in items_img:
img_url = img.attrs['href']
if "/wallpaper_detail" in img_url:
r = session.get(img_url)
item_img = r.html.find('img.pic-large', first=True)
url = item_img.attrs['src']
title = item_img.attrs['title']
print(url+title)
save_image(url, title)
這個(gè)網(wǎng)站上的圖片還是很容易獲取的,在上面的代碼塊中我加了注釋。這里不再說(shuō)明。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python用requests-html爬取網(wǎng)頁(yè)的實(shí)現(xiàn)
- python爬蟲(chóng) requests-html的使用
- 小眾實(shí)用的Python 爬蟲(chóng)庫(kù)RoboBrowser
- python爬蟲(chóng)開(kāi)發(fā)之使用Python爬蟲(chóng)庫(kù)requests多線程抓取貓眼電影TOP100實(shí)例
- python爬蟲(chóng)開(kāi)發(fā)之使用python爬蟲(chóng)庫(kù)requests,urllib與今日頭條搜索功能爬取搜索內(nèi)容實(shí)例
- Python爬蟲(chóng)庫(kù)BeautifulSoup獲取對(duì)象(標(biāo)簽)名,屬性,內(nèi)容,注釋
- Python爬蟲(chóng)庫(kù)requests-html進(jìn)行HTTP請(qǐng)求HTML解析等高級(jí)功能應(yīng)用
相關(guān)文章
淺談Python實(shí)現(xiàn)opencv之圖片色素的數(shù)值運(yùn)算和邏輯運(yùn)算
今天帶大家來(lái)學(xué)習(xí)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著圖片色素的數(shù)值運(yùn)算和邏輯運(yùn)算展開(kāi),文中有非常詳細(xì)的的介紹及代碼示例,需要的朋友可以參考下2021-06-06
python中import cv2遇到的錯(cuò)誤及安裝方式
這篇文章主要介紹了python中import cv2遇到的錯(cuò)誤及安裝方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
python中scikit-learn機(jī)器代碼實(shí)例
這篇文章給大家分享了關(guān)于python中scikit-learn機(jī)器的代碼實(shí)例內(nèi)容,有興趣的朋友跟著小編測(cè)試下。2018-08-08
在Python程序中操作文件之isatty()方法的使用教程
這篇文章主要介紹了在Python程序中操作文件之isatty()方法的使用教程,是Python入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05
解決Python正則表達(dá)式匹配反斜杠''''\''''問(wèn)題
這篇文章主要介紹了Python正則表達(dá)式匹配反斜杠'\'問(wèn)題 ,很多朋友在使用python 正則式的過(guò)程中,經(jīng)常被這個(gè)問(wèn)題困擾,今天小編通過(guò)代碼給大家詳細(xì)介紹,需要的朋友可以參考下2019-07-07
在django中查詢(xún)獲取數(shù)據(jù),get, filter,all(),values()操作
這篇文章主要介紹了在django中查詢(xún)獲取數(shù)據(jù),get, filter,all(),values()操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
python+OpenCV人臉識(shí)別考勤系統(tǒng)實(shí)現(xiàn)的詳細(xì)代碼
作為一個(gè)基于人臉識(shí)別算法的考勤系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)教程,以下內(nèi)容將提供詳細(xì)的步驟和代碼示例。本教程將使用 Python 語(yǔ)言和 OpenCV 庫(kù)進(jìn)行實(shí)現(xiàn),需要的朋友可以參考下2023-05-05

