摘要:前言利用爬取的是今日頭條中的街拍美圖。詳細瀏覽器信息獲取文章鏈接相關代碼街拍獲取失敗這里需要提一下模塊的報錯在對象上調用方法如果下載文件出錯會拋出異常需要使用和語句將代碼行包裹起來處理這一錯誤不讓程序崩潰。
利用Python爬取的是今日頭條中的街拍美圖。廢話不多說。
讓我們愉快地開始吧~
Python版本: 3.6.4
相關模塊:
requests模塊;
re模塊;
以及一些Python自帶的模塊。
安裝Python并添加到環境變量,pip安裝需要的相關模塊即可。
獲取文章鏈接相關代碼:
import requestsimport jsonimport reheaders = { 'user-agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}def get_first_data(offset): params = { 'offset': offset, 'format': 'json', 'keyword': '街拍', 'autoload': 'true', 'count': '20', 'cur_tab': '1', 'from':'search_tab' } response = requests.get(url='https://www.toutiao.com/search_content/', headers=headers, params=params) try: response.raise_for_status() return response.text except Exception as exc: print("獲取失敗") return Nonedef handle_first_data(html): data = json.loads(html) if data and "data" in data.keys(): for item in data.get("data"): yield item.get("article_url")
這里需要提一下requests模塊的報錯,在response對象上調用 raise_for_status()方法,如果下載文件出錯,會拋出異常,需要使用 try 和 except 語句將代碼行包裹起來,處理這一錯誤,不讓程序崩潰。
另外附上requests模塊技術文檔網址:http://cn.python-requests.org/zh_CN/latest/
獲取圖片鏈接相關代碼:
def get_second_data(url): if url: try: reponse = requests.get(url, headers=headers) reponse.raise_for_status() return reponse.text except Exception as exc: print("進入鏈接發生錯誤") return Nonedef handle_second_data(html): if html: pattern = re.compile(r'gallery: JSON.parse/((.*?)/),', re.S) result = re.search(pattern, html) if result: imageurl = [] data = json.loads(json.loads(result.group(1))) if data and "sub_images" in data.keys(): sub_images = data.get("sub_images") images = [item.get('url') for item in sub_images] for image in images: imageurl.append(images) return imageurl else: print("have no result")
獲取圖片相關代碼:
def download_image(imageUrl): for url in imageUrl: try: image = requests.get(url).content except: pass with open("images"+str(url[-10:])+".jpg", "wb") as ob: ob.write(image) ob.close() print(url[-10:] + "下載成功!" + url)def main(): html = get_first_data(0) for url in handle_first_data(html): html = get_second_data(url) if html: result = handle_second_data(html) if result: try: download_image(result) except KeyError: print("{0}存在問題,略過".format(result)) continueif __name__ == '__main__': main()
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/125564.html
摘要:上一篇文章網絡爬蟲實戰數據爬取下一篇文章網絡爬蟲實戰動態渲染頁面抓取本節我們以今日頭條為例來嘗試通過分析請求來抓取網頁數據的方法,我們這次要抓取的目標是今日頭條的街拍美圖,抓取完成之后將每組圖片分文件夾下載到本地保存下來。 上一篇文章:Python3網絡爬蟲實戰---35、 Ajax數據爬取下一篇文章:Python3網絡爬蟲實戰---37、動態渲染頁面抓取:Selenium 本節我們...
摘要:所以說,我們所看到的微博頁面的真實數據并不是最原始的頁面返回的,而是后來執行后再次向后臺發送了請求,拿到數據后再進一步渲染出來的。結果提取仍然是拿微博為例,我們接下來用來模擬這些請求,把馬云發過的微博爬取下來。 上一篇文章:Python3網絡爬蟲實戰---34、數據存儲:非關系型數據庫存儲:Redis下一篇文章:Python3網絡爬蟲實戰---36、分析Ajax爬取今日頭條街拍美圖 ...
摘要:不過動態渲染的頁面不止這一種。再有淘寶這種頁面,它即使是獲取的數據,但是其接口含有很多加密參數,我們難以直接找出其規律,也很難直接分析來抓取。我們用一個實例來感受一下在這里們依然是先打開知乎頁面,然后獲取提問按鈕這個節點,再將其 上一篇文章:Python3網絡爬蟲實戰---36、分析Ajax爬取今日頭條街拍美圖下一篇文章:Python3網絡爬蟲實戰---38、動態渲染頁面抓取:Spla...
摘要:今天給大家分享的是爬蟲,寫得不好的大家多關照,指出背景交代,以下寫的都是參照網絡爬蟲開發實戰用實現的,所以的具體思路什么的,大家可以去看書上的介紹,感興趣的,可以去了解一波。 今天給大家分享的是node爬蟲,寫得不好的大家多關照,指出 背景交代,以下寫的demo都是參照《python3網絡爬蟲開發實戰》用node實現的,所以demo的具體思路什么的,大家可以去看書上的介紹,感興趣的,可...
摘要:前言利用實現抓取微博評論數據,廢話不多說。讓我們愉快地開始吧開發工具版本相關模塊模塊模塊模塊模塊模塊以及一些自帶的模塊。環境搭建安裝并添加到環境變量,安裝需要的相關模塊即可。 ...
閱讀 713·2023-04-25 19:43
閱讀 3907·2021-11-30 14:52
閱讀 3784·2021-11-30 14:52
閱讀 3852·2021-11-29 11:00
閱讀 3783·2021-11-29 11:00
閱讀 3868·2021-11-29 11:00
閱讀 3557·2021-11-29 11:00
閱讀 6103·2021-11-29 11:00