日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

五分鐘上手Python爬蟲:從干飯開始,輕松掌握技巧

來源: 責編: 時間:2024-03-22 08:56:50 275觀看
導讀很多人都聽說過爬蟲,我也不例外。曾看到別人編寫的爬蟲代碼,雖然沒有深入研究,但感覺非常強大。因此,今天我決定從零開始,花費僅5分鐘學習入門爬蟲技術,以后只需輕輕一爬就能查看所有感興趣的網站內容。廣告?不存在的,因為我
很多人都聽說過爬蟲,我也不例外。曾看到別人編寫的爬蟲代碼,雖然沒有深入研究,但感覺非常強大。因此,今天我決定從零開始,花費僅5分鐘學習入門爬蟲技術,以后只需輕輕一爬就能查看所有感興趣的網站內容。廣告?不存在的,因為我看不見。爬蟲只會獲取我感興趣的信息,不需要的內容對我而言只是一堆代碼。我們不在乎網站的界面,爬取完數據后只會關注最核心的內容。

在這個過程中,技術方面實際上沒有太多復雜的內容,實際上就是一項耐心細致的工作。因此才會有那么多人選擇從事爬蟲兼職工作,因為雖然耗時較長,但技術要求并不是很高。今天學完之后,你就不會像我一樣認為爬蟲很困難了。或許在未來你會需要考慮如何保持會話(session)或者繞過驗證等問題,因為網站越難爬取,說明對方并不希望被爬取。實際上,這部分內容是最具挑戰性的,有機會的話我們可以在以后的學習中深入討論。5gH28資訊網——每日最新資訊28at.com

今天我們以選擇菜譜為案例,來解決我們在吃飯時所面臨的“吃什么”的生活難題。5gH28資訊網——每日最新資訊28at.com

爬蟲解析

爬蟲的工作原理類似于模擬用戶在瀏覽網站時的操作:首先訪問官方網站,檢查是否有需要點擊的鏈接,若有,則繼續點擊查看。當直接發現所需的圖片或文字時,即可進行下載或復制。這種爬蟲的基本架構如圖所示,希望這樣的描述能幫助你更好地理解。5gH28資訊網——每日最新資訊28at.com

圖片image5gH28資訊網——每日最新資訊28at.com

爬網頁HTML

在進行爬蟲工作時,我們通常從第一步開始,即發送一個HTTP請求以獲取返回的數據。在我們的工作中,通常會請求一個鏈接以獲取JSON格式的信息,以便進行業務處理。然而,爬蟲的工作方式略有不同,因為我們需要首先獲取網頁內容,因此這一步通常返回的是HTML頁面。在Python中,有許多請求庫可供選擇,我只舉一個例子作為參考,但你可以根據實際需求選擇其他第三方庫,只要能夠完成任務即可。5gH28資訊網——每日最新資訊28at.com

在開始爬蟲工作之前,首先需要安裝所需的第三方庫依賴。這部分很簡單,只需根據需要安裝相應的庫即可,沒有太多復雜的步驟。5gH28資訊網——每日最新資訊28at.com

讓我們不多廢話,直接看下面的代碼示例:5gH28資訊網——每日最新資訊28at.com

from urllib.request import urlopen,Requestheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0'}req = Request("https://www.meishij.net/?from=space_block",headers=headers)# 發出請求,獲取html# 獲取的html內容是字節,將其轉化為字符串html = urlopen(req)html_text = bytes.decode(html.read())print(html_text)

通常情況下,我們可以獲取這個菜譜網頁的完整內容,就像我們在瀏覽器中按下F12查看的網頁源代碼一樣。5gH28資訊網——每日最新資訊28at.com

解析元素

最笨的方法是使用字符串解析,但由于Python有許多第三方庫可以解決這個問題,因此我們可以使用BeautifulSoup來解析HTML。其他更多的解析方法就不一一介紹了,我們需要用到什么就去搜索即可,不需要經常使用的也沒必要死記硬背。5gH28資訊網——每日最新資訊28at.com

熱搜菜譜

在這里,讓我們對熱門搜索中的菜譜進行解析和分析。5gH28資訊網——每日最新資訊28at.com

from urllib.request import urlopen,Requestfrom bs4 import BeautifulSoup as bfheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0'}req = Request("https://www.meishij.net/?from=space_block",headers=headers)# 發出請求,獲取html# 獲取的html內容是字節,將其轉化為字符串html = urlopen(req)html_text = bytes.decode(html.read())# print(html_text) # 用BeautifulSoup解析htmlobj = bf(html_text,'html.parser')# print(html_text)# 使用find_all函數獲取所有圖片的信息index_hotlist = obj.find_all('a',class_='sancan_item')# 分別打印每個圖片的信息for ul in index_hotlist:    for li in ul.find_all('strong',class_='title'):        print(li.get_text())

主要步驟是,首先在上一步中打印出HTML頁面,然后通過肉眼觀察確定所需內容位于哪個元素下,接著利用BeautifulSoup定位該元素并提取出所需信息。在我的情況下,我提取的是文字內容,因此成功提取了所有li列表元素。5gH28資訊網——每日最新資訊28at.com

隨機干飯

在生活中,實際上干飯并不復雜,難點在于選擇吃什么。因此,我們可以將所有菜譜解析并存儲在一個列表中,然后讓程序隨機選擇菜譜。這樣,就能更輕松地解決每頓飯吃什么的難題了。5gH28資訊網——每日最新資訊28at.com

隨機選取一道菜時,可以使用以下示例代碼:5gH28資訊網——每日最新資訊28at.com

from urllib.request import urlopen,Requestfrom bs4 import BeautifulSoup as bffor i in range(3):    url = f"https://www.meishij.net/chufang/diy/jiangchangcaipu/?&page={i}"    html = urlopen(url)    # 獲取的html內容是字節,將其轉化為字符串    html_text = bytes.decode(html.read())    # print(html_text)    obj = bf(html_text,'html.parser')    index_hotlist = obj.find_all('img')    for p in index_hotlist:        if p.get('alt'):            print(p.get('alt'))

這里我們在這個網站上找到了新的鏈接地址,我已經獲取了前三頁的數據,并進行了隨機選擇,你可以選擇全部獲取。5gH28資訊網——每日最新資訊28at.com

菜譜教程

其實上一步已經完成了,接下來只需下單外賣了。外賣種類繁多,但對于像我這樣的顧家奶爸來說并不合適,因此我必須自己動手做飯。這時候教程就顯得尤為重要了。5gH28資訊網——每日最新資訊28at.com

我們現在繼續深入解析教程內容:5gH28資訊網——每日最新資訊28at.com

from urllib.request import urlopen,Requestimport urllib,stringfrom bs4 import BeautifulSoup as bfurl = f"https://so.meishij.net/index.php?q=紅燒排骨"url = urllib.parse.quote(url, safe=string.printable)html = urlopen(url)# 獲取的html內容是字節,將其轉化為字符串html_text = bytes.decode(html.read())obj = bf(html_text,'html.parser')index_hotlist = obj.find_all('a',class_='img')# 分別打印每個圖片的信息url = index_hotlist[0].get('href')html = urlopen(url)html_text = bytes.decode(html.read())obj = bf(html_text,'html.parser')index_hotlist = obj.find_all('div',class_='step_content')for div in index_hotlist:    for p in div.find_all('p'):        print(p.get_text())

包裝一下

上面提到的方法已經滿足了我們的需求,但是重復手動執行每個步驟并不是一個高效的方式。因此,我將這些步驟封裝成一個簡單的應用程序。這個應用程序使用控制臺作為用戶界面,不需要依賴任何第三方庫。讓我們一起來看一下這個應用程序吧:5gH28資訊網——每日最新資訊28at.com

# 導入urllib庫的urlopen函數from urllib.request import urlopen,Requestimport urllib,string# 導入BeautifulSoupfrom bs4 import BeautifulSoup as bffrom random import choice,samplefrom colorama import initfrom os import systemfrom termcolor import coloredfrom readchar import  readkeyFGS = ['green', 'yellow', 'blue', 'cyan', 'magenta', 'red']print(colored('搜索食譜中.....',choice(FGS)))headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0'}req = Request("https://www.meishij.net/?from=space_block",headers=headers)# 發出請求,獲取html# 獲取的html內容是字節,將其轉化為字符串html = urlopen(req)html_text = bytes.decode(html.read())hot_list = []all_food = []food_page = 3# '/n'.join(pos(y, OFFSET[1]) + ' '.join(color(i) for i in l)def draw_menu(menu_list):    clear()    for idx,i in enumerate(menu_list):        print(colored(f'{idx}:{i}',choice(FGS)))    print(colored('8:隨機選擇',choice(FGS)))def draw_word(word_list):    clear()    for i in word_list:        print(colored(i,choice(FGS)))def clear():    system("CLS")def hot_list_func() :    global html_text    # 用BeautifulSoup解析html    obj = bf(html_text,'html.parser')    # print(html_text)    # 使用find_all函數獲取所有圖片的信息    index_hotlist = obj.find_all('a',class_='sancan_item')    # 分別打印每個圖片的信息    for ul in index_hotlist:        for li in ul.find_all('strong',class_='title'):            hot_list.append(li.get_text())            # print(li.get_text())def search_food_detail(food) :    print('正在搜索詳細教程,請稍等30秒左右!')    url = f"https://so.meishij.net/index.php?q={food}"    # print(url)    url = urllib.parse.quote(url, safe=string.printable)    html = urlopen(url)    # 獲取的html內容是字節,將其轉化為字符串    html_text = bytes.decode(html.read())    obj = bf(html_text,'html.parser')    index_hotlist = obj.find_all('a',class_='img')    # 分別打印每個圖片的信息    url = index_hotlist[0].get('href')    # print(url)    html = urlopen(url)    html_text = bytes.decode(html.read())    # print(html_text)    obj = bf(html_text,'html.parser')    random_color = choice(FGS)    print(colored(f"{food}做法:",random_color))    index_hotlist = obj.find_all('div',class_='step_content')    # print(index_hotlist)    random_color = choice(FGS)    for div in index_hotlist:        for p in div.find_all('p'):            print(colored(p.get_text(),random_color))def get_random_food():    global food_page    if not all_food :        for i in range(food_page):            url = f"https://www.meishij.net/chufang/diy/jiangchangcaipu/?&page={i}"            html = urlopen(url)            # 獲取的html內容是字節,將其轉化為字符串            html_text = bytes.decode(html.read())            # print(html_text)            obj = bf(html_text,'html.parser')            index_hotlist = obj.find_all('img')            for p in index_hotlist:                if p.get('alt'):                    all_food.append(p.get('alt'))    my_food = choice(all_food)    print(colored(f'隨機選擇,今天吃:{my_food}',choice(FGS)))    return my_foodinit() ## 命令行輸出彩色文字hot_list_func()print(colored('已搜索完畢!',choice(FGS)))my_array = list(range(0, 9))my_key = ['q','c','d','m']my_key.extend(my_array)print(colored('m:代表今日菜譜',choice(FGS)))print(colored('c:代表清空控制臺',choice(FGS)))print(colored('d:代表菜譜教程',choice(FGS)))print(colored('q:退出菜譜',choice(FGS)))print(colored('0~8:選擇菜譜中的菜',choice(FGS)))while True:    while True:        move = readkey()        if move in my_key or (move.isdigit() and int(move) <= len(random_food)):            break    if move == 'q': ## 鍵盤‘Q’是退出        break    if move == 'c': ## 鍵盤‘C’是清空控制臺        clear()    if move == 'm':        random_food = sample(hot_list,8)        draw_menu(random_food)    if move.isdigit() and int(move) <= len(random_food):        if int(move) == 8:            my_food = get_random_food()        else:            my_food = random_food[int(move)]        print(my_food)    if move == 'd' and my_food : ## 鍵盤‘D’是查看教程        search_food_detail(my_food)        my_food = ''

完成一個簡單的小爬蟲其實并不復雜,如果不考慮額外的封裝步驟,僅需5分鐘即可完成,這已經足夠快速讓你入門爬蟲技術。開始爬取某個網站的數據實際上是一項細致的工作。只需在網上搜索相關技術信息,找到適合的方法即可,如果有效就繼續使用,不行就試試其他方法。5gH28資訊網——每日最新資訊28at.com

總結

本文的重點在于引導讀者如何初步掌握爬蟲技術。初步掌握爬蟲技術并不難,但是在實際操作中可能會遇到一些困難,比如一些網站不允許直接訪問,需要登錄或者進行各種人機驗證等。因此,最好先從爬取一些新聞資訊類的網站開始,因為這樣相對容易。涉及用戶支付等敏感信息的網站就不那么容易獲取了。因此,在入門階段,建議不要糾結于選擇一個復雜的網站,先嘗試入門即可。一旦理解了基本原理,遇到問題時就可以考慮添加組件或者使用第三方庫來解決。5gH28資訊網——每日最新資訊28at.com


5gH28資訊網——每日最新資訊28at.com

本文鏈接:http://m.www897cc.com/showinfo-26-78510-0.html五分鐘上手Python爬蟲:從干飯開始,輕松掌握技巧

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Extract 工具類型八個使用技巧

下一篇: 解鎖正則表達式的秘密:regex-vis工具帶你看見模式匹配的魔法!

標簽:
  • 熱門焦點
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
在线激情影院一区| 欧美日韩不卡视频| 亚洲一区二区成人| 亚洲伊人久久综合| 欧美一级成年大片在线观看| 久久久久久久欧美精品| 老色批av在线精品| 欧美日韩成人| 国产日本亚洲高清| 影视先锋久久| 99精品国产在热久久下载| 亚洲视频在线二区| 久久成人综合网| 欧美国产精品v| 国产精品v日韩精品| 国际精品欧美精品| 亚洲美女视频网| 性欧美精品高清| 男女激情视频一区| 国产精品久久久久久户外露出| 国产麻豆9l精品三级站| 亚洲国产高清一区二区三区| 亚洲视频在线观看一区| 久久精品综合| 欧美日韩三级一区二区| 国产综合色一区二区三区| 亚洲精品字幕| 欧美中文字幕在线视频| 欧美人成在线视频| 国产亚洲欧美日韩一区二区| 亚洲精品免费看| 久久国产精品久久久久久| 欧美日本中文字幕| 国模精品一区二区三区色天香| 日韩亚洲欧美中文三级| 久久久欧美精品sm网站| 欧美性片在线观看| 亚洲高清影视| 欧美在线观看视频在线| 欧美日韩亚洲一区在线观看| 伊人久久大香线蕉综合热线| 亚洲欧美日韩电影| 欧美精选午夜久久久乱码6080| 国产综合av| 亚洲欧美文学| 欧美日韩性生活视频| 在线欧美影院| 欧美在线视屏| 国产精品任我爽爆在线播放| 亚洲美女中文字幕| 麻豆精品视频| 国产综合色在线视频区| 亚洲综合三区| 欧美日韩一区二区三区在线观看免| 在线不卡亚洲| 久久精品电影| 国产女主播一区二区三区| 一区二区激情| 欧美国产免费| 在线免费观看视频一区| 久久久久久久久久久久久女国产乱| 国产精品视频精品| 亚洲天堂成人在线视频| 欧美日韩精品欧美日韩精品| 亚洲激情在线| 欧美mv日韩mv国产网站| 在线免费观看日本一区| 久久综合九色九九| 精品999在线观看| 久久九九热免费视频| 国产三级欧美三级| 午夜免费电影一区在线观看| 国产精品成人免费| 亚洲一级特黄| 国产精品久久久久久模特| 亚洲天堂激情| 国产精品日本| 小黄鸭精品aⅴ导航网站入口| 国产精品国色综合久久| 正在播放亚洲| 欧美午夜视频在线观看| 中文在线资源观看网站视频免费不卡| 欧美日韩ab| 99精品热6080yy久久 | 午夜精品一区二区三区在线 | 亚洲第一精品夜夜躁人人躁| 久久久久久久久一区二区| 国产亚洲欧美色| 久久国产精品久久久| 国产一区二区三区视频在线观看| 欧美一区二区三区免费在线看| 国产欧美日韩精品专区| 欧美与欧洲交xxxx免费观看| 国产一区二区三区不卡在线观看| 久久精品30| 有码中文亚洲精品| 欧美sm重口味系列视频在线观看| 亚洲国产精品va在线看黑人| 欧美国产在线观看| 一本一本久久a久久精品综合麻豆| 欧美日韩一区二区在线观看 | 久久天堂成人| 亚洲激情在线观看| 欧美日韩免费观看一区二区三区| 亚洲视频1区| 国产欧亚日韩视频| 久久久免费av| 亚洲精品日本| 国产精品久久久久久亚洲毛片 | 先锋资源久久| 国内精品久久久久影院优| 久久综合网hezyo| 亚洲精品日韩在线| 国产精品豆花视频| 欧美在线电影| 亚洲第一中文字幕| 欧美日韩一区二区欧美激情| 午夜精品国产精品大乳美女| 狠狠色狠狠色综合日日tαg| 欧美成在线观看| 亚洲小视频在线观看| 国产一区二区三区久久精品| 欧美不卡视频| 亚洲一区免费视频| 极品少妇一区二区三区| 欧美精品在线看| 香蕉久久精品日日躁夜夜躁| 亚洲电影自拍| 国产精品高清在线观看| 久久精品综合一区| 日韩手机在线导航| 国产欧美精品| 欧美国产日韩a欧美在线观看| 亚洲欧美国产日韩天堂区| 在线日韩视频| 国产精品热久久久久夜色精品三区| 久久蜜桃香蕉精品一区二区三区| 日韩视频在线一区二区三区| 国产视频一区在线观看| 欧美激情欧美激情在线五月| 羞羞漫画18久久大片| 亚洲精品国产拍免费91在线| 国产精品专区一| 欧美国产激情二区三区| 久久国产精品一区二区三区| 亚洲精选成人| 国语自产精品视频在线看一大j8 | 欧美国产一区二区| 欧美在线视频免费| 日韩亚洲国产欧美| 国产综合视频| 国产精品你懂的在线欣赏| 欧美成人高清视频| 欧美在线视频在线播放完整版免费观看| 亚洲美女电影在线| 一区在线免费观看| 国产麻豆综合| 欧美色大人视频| 欧美成人国产一区二区| 欧美专区在线播放| 中文av一区二区| 亚洲激情在线激情| 国产在线精品二区| 国产精品黄色在线观看| 欧美激情欧美狂野欧美精品| 久久久久成人精品免费播放动漫| 亚洲视频精品| 日韩视频在线永久播放| **欧美日韩vr在线| 国产精品影片在线观看| 欧美精品午夜| 免费欧美在线视频| 久久久久久久999精品视频| 亚洲欧美日韩在线观看a三区 | 亚洲午夜成aⅴ人片| 91久久综合| 在线观看欧美日韩| 国产综合精品| 国产日本欧美在线观看 | 激情欧美一区二区| 国产日韩精品久久| 国产精品日韩欧美| 国产精品爱啪在线线免费观看| 欧美精品一区在线观看| 欧美电影免费| 欧美成人日韩| 美女诱惑一区| 久久一区欧美| 久久久久免费观看| 久久成人人人人精品欧| 午夜久久福利| 亚洲欧美国产不卡| 亚洲一区二区四区| 亚洲午夜日本在线观看| 一二三四社区欧美黄| 99国产精品久久久久久久| 亚洲精品社区| 亚洲人成人一区二区在线观看| 亚洲国产经典视频| 亚洲东热激情| 亚洲人成久久| 亚洲精品一区二区在线| 亚洲精品免费网站| 亚洲乱码日产精品bd|