整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          告別編程:3款自動化爬蟲工具讓數(shù)據(jù)采集變得簡單

          告別編程:3款自動化爬蟲工具讓數(shù)據(jù)采集變得簡單

          據(jù)采集是信息時代的關(guān)鍵,而網(wǎng)絡(luò)爬蟲正是一種高效的技術(shù)手段,允許用戶在合法框架內(nèi)從網(wǎng)頁和應用程序中提取所需的公開信息。網(wǎng)絡(luò)爬蟲的應用范圍極為廣泛,包括搜索引擎的數(shù)據(jù)收集、價格監(jiān)控、市場研究等。


          與屏幕抓取不同,網(wǎng)絡(luò)爬蟲提取的是網(wǎng)頁的HTML代碼和數(shù)據(jù)庫中的數(shù)據(jù),而不僅僅是屏幕上顯示的像素。通常,我們使用抓包工具來獲取HTML,然后利用解析工具來提取數(shù)據(jù)。



          盡管Python是編寫爬蟲的傳統(tǒng)選擇,但自動化工具的出現(xiàn)讓數(shù)據(jù)采集變得更加親民。接下來,我將向您展示三款高效的自動化爬蟲工具:Bazhuayu、Bright Data、Web Scraper。


          bazhuayu爬蟲

          https://affiliate.bazhuayu.com/hEvPKU


          bazhuayu,這款桌面端爬蟲軟件以其強大的功能和易用性著稱,即便是編程新手也能通過其可視化界面快速掌握數(shù)據(jù)采集。它支持多種數(shù)據(jù)類型采集,包括文本、圖片、表格等,并提供自定義功能來滿足用戶的特定需求。



          主要優(yōu)勢包括:

          • 可視化操作:拖拽式界面,無需編碼知識。
          • 數(shù)據(jù)類型豐富:支持文本、圖片、表格及HTML采集。
          • 自定義功能強大:用戶可設(shè)定采集規(guī)則和數(shù)據(jù)處理邏輯。
          • 數(shù)據(jù)導出便捷:支持CSV、Excel、JSON等多種格式。


          使用方法簡單直觀:

          1. 下載并安裝Bazhuayu軟件。
          2. 打開目標網(wǎng)頁并選擇數(shù)據(jù)區(qū)域。
          3. 在軟件中設(shè)置采集規(guī)則。
          4. 點擊開始采集,輕松獲取數(shù)據(jù)。


          Bright Data爬蟲

          https://get.brightdata.com/weijun


          Bright Data平臺提供了一系列強大的數(shù)據(jù)采集工具,包括Web Scraper IDE、Bright Data Browser、SERP API等,這些工具能夠?qū)崿F(xiàn)自動化數(shù)據(jù)抓取,無需用戶深入理解目標網(wǎng)站的技術(shù)細節(jié)。



          Bright Data的主要優(yōu)勢包括:

          • 平臺化操作:直接在Web界面上管理爬蟲任務。
          • 數(shù)據(jù)源廣泛:支持網(wǎng)頁、API、數(shù)據(jù)庫等多種源。
          • 模板化服務:提供多樣的爬蟲模板,快速啟動任務。


          使用Bright Data的步驟包括:

          1. 注冊并登錄Bright Data賬號。
          2. 創(chuàng)建爬蟲任務并選擇數(shù)據(jù)源。
          3. 選擇模板或編寫采集規(guī)則。
          4. 設(shè)置任務參數(shù)并啟動任務。


          Web Scraper


          Web Scraper作為一個輕量級的瀏覽器擴展,使用戶能夠在不安裝任何額外軟件的情況下,在Chrome瀏覽器中直接進行數(shù)據(jù)采集。它支持多種數(shù)據(jù)格式導出,操作簡便。



          主要優(yōu)勢包括:

          • 易于使用:瀏覽器擴展,無需額外軟件。
          • 操作簡便:點擊選擇數(shù)據(jù),無需編碼。
          • 支持多種數(shù)據(jù)格式:CSV、JSON、XML等。


          使用Web Scraper的步驟:

          1. 安裝擴展插件至Chrome。
          2. 打開目標網(wǎng)頁并啟動采集。
          3. 選擇并采集所需數(shù)據(jù)。
          4. 導出數(shù)據(jù)至所需格式。


          無論是需要快速簡單的數(shù)據(jù)采集,還是復雜的定制化服務,Bazhuayu、Bright Data、Web Scraper都能滿足您的采集需求。選對工具,讓數(shù)據(jù)采集任務變得輕而易舉,同時確保合規(guī)性和效率。

          在前面

          • 代碼功能如題:根據(jù)快手用戶的id來爬取用戶所有公開作品,包括圖集和視頻。
          • 原理:其實就是利用基于chromium內(nèi)核的瀏覽器自帶的devtools對所有請求進行排查找出包含作品鏈接的請求,然后用代碼模擬請求去獲得數(shù)據(jù),再根據(jù)url下載作品保存就行了,包括一些網(wǎng)站的自動注冊登錄、操作都可以模擬。這個其實應該算是寫過爬蟲的同學們都知道。

          核心代碼

          • 廢話不多說,上核心代碼
          def __crawl_user(self, uid):
          if uid.isdigit():
              uid=self.__switch_id(uid)
          
          payload={"operationName": "privateFeedsQuery",
                     "variables": {"principalId": uid, "pcursor": "", "count": 999},
                     "query": "query privateFeedsQuery($principalId: String, $pcursor: String, $count: Int) {\n  privateFeeds(principalId: $principalId, pcursor: $pcursor, count: $count) {\n    pcursor\n    list {\n      id\n      thumbnailUrl\n      poster\n      workType\n      type\n      useVideoPlayer\n      imgUrls\n      imgSizes\n      magicFace\n      musicName\n      caption\n      location\n      liked\n      onlyFollowerCanComment\n      relativeHeight\n      timestamp\n      width\n      height\n      counts {\n        displayView\n        displayLike\n        displayComment\n        __typename\n      }\n      user {\n        id\n        eid\n        name\n        avatar\n        __typename\n      }\n      expTag\n      __typename\n    }\n    __typename\n  }\n}\n"}
          res=requests.post(self.__data_url, headers=self.__headers, json=payload)
          
          works=json.loads(res.content.decode(encoding='utf-8', errors='strict'))['data']['privateFeeds']['list']
          
          if not os.path.exists("../data"):
              os.makedirs("../data")
          
          # 這兩行代碼將response寫入json供分析
          # with open("data/" + uid + ".json", "w") as fp:
          #     fp.write(json.dumps(works, indent=2))
          
          # 防止該用戶在直播,第一個作品默認為直播,導致獲取信息為NoneType
          if works[0]['id'] is None:
              works.pop(0)
          name=re.sub(r'[\\/:*?"<>|\r\n]+', "", works[0]['user']['name'])
          
          dir="data/" + name + "(" + uid + ")/"
          # print(len(works))
          if not os.path.exists(dir):
              os.makedirs(dir)
          
          # if not os.path.exists(dir + ".list"):
          #     print("")
          
          print("開始爬取用戶 " + name + ",保存在目錄 " + dir)
          print(" 共有" + str(len(works)) + "個作品")
          
          for j in range(len(works)):
              self.__crawl_work(uid, dir, works[j], j + 1)
              time.sleep(1)
          
          print("用戶 " + name + "爬取完成!")
          print()
          time.sleep(1)

          快手分為五種類型的作品,在作品里面表現(xiàn)為workType屬性

          • 其中兩種圖集: vertical和multiple,意味著拼接長圖和多圖,所有圖片的鏈接在imgUrls里
          • 一種單張圖片: single 圖片鏈接也在imgUrls里
          • K歌: ksong 圖片鏈接一樣,不考慮爬取音頻...
          • 視頻: video 需要解析html獲得視頻鏈接



          def __crawl_work(self, uid, dir, work, wdx):
              w_type=work['workType']
              w_caption=re.sub(r"\s+", " ", work['caption'])
              w_name=re.sub(r'[\/:*?"<>|\r\n]+', "", w_caption)[0:24]
              w_time=time.strftime('%Y-%m-%d', time.localtime(work['timestamp'] / 1000))
          
          if w_type=='vertical' or w_type=='multiple' or w_type=="single" or w_type=='ksong':
              w_urls=work['imgUrls']
              l=len(w_urls)
              print("  " + str(wdx) + ")圖集作品:" + w_caption + "," + "共有" + str(l) + "張圖片")
              for i in range(l):
                  p_name=w_time + "_" + w_name + "_" + str(i + 1) + ".jpg"
                  pic=dir + p_name
                  if not os.path.exists(pic):
                      r=requests.get(w_urls[i])
                      r.raise_for_status()
                      with open(pic, "wb") as f:
                          f.write(r.content)
                      print("    " + str(i + 1) + "/" + str(l) + " 圖片 " + p_name + " 下載成功 √")
                  else:
                      print("    " + str(i + 1) + "/" + str(l) + " 圖片 " + p_name + " 已存在 √")
          elif w_type=='video':
              w_url=self.__work_url + work['id']
              res=requests.get(w_url, headers=self.__headers_mobile,
                                 params={"fid": 1841409882, "cc": "share_copylink", "shareId": "143108986354"})
              html=res.text
              waitreplace=work['id'] + '".*?"srcNoMark":"(.*?)"'
          
              v_url=re.findall(waitreplace, html)
              # pattern=re.compile(r"playUrl", re.MULTILINE | re.DOTALL)
              # script=soup.find("script", text=pattern)
              # s=pattern.search(script.text).string
              # v_url=s.split('playUrl":"')[1].split('.mp4')[0].encode('utf-8').decode('unicode-escape') + '.mp4'
              try:
                  print("  " + str(wdx) + ")視頻作品:" + w_caption)
              except:
                  print("  這里似乎有點小錯誤,已跳過")
              v_name=w_time + "_" + w_name + ".mp4"
              video=dir + v_name
          
              if v_url:
                  if not os.path.exists(video):
                      r=requests.get(v_url[0])
                      r.raise_for_status()
          
                      with open(video, "wb") as f:
                          f.write(r.content)
                      print("    視頻 " + v_name + " 下載成功 √")
                  else:
                      print("    視頻 " + v_name + " 已存在 √")
              else:
                  print("未找到視頻")
          else:
              print("錯誤的類型")
        1. payload就是post參數(shù),這個是在devtools的request請求底下可以找到的
        2. 其實就是解析json,然后里面有圖片的url和視頻的id,我注釋掉的兩行代碼可以保存完整的json的,你可以去掉注釋然后看分析保存的json
        3. 剩下的看源碼吧,不難理解的


        4. 注意事項:

          • 不考慮提供列表可選的批量下載功能
          • 有需要的合理功能可以issue反饋,看到后會考慮是否修改
          • 如果需要自定義自己的需求,可以拿走代碼自行修改,喜歡的話給個star給個follow
          • 本代碼僅供學習使用,不可違反法律爬取視頻,以及私自盜用搬運視頻,后果自負

          項目源碼地址 https://github.com/oGsLP/kuaishou-crawler

          .了解HTML結(jié)構(gòu):

          在進行網(wǎng)頁文章采集之前,首先要熟悉目標網(wǎng)頁的HTML結(jié)構(gòu)。通過查看源代碼或使用開發(fā)者工具,你可以了解到網(wǎng)頁中各個元素的標簽、類名和ID等信息,為后續(xù)的采集工作打下基礎(chǔ)。

          2.使用XPath定位元素:

          XPath是一種用于在XML文檔中定位元素的語言,同樣適用于HTML文檔。通過使用XPath表達式,你可以準確地找到目標元素,并提取所需內(nèi)容。PHP提供了XPath相關(guān)函數(shù),如xpath_eval()和xpath_query(),可幫助你輕松實現(xiàn)這一功能。

          3.處理動態(tài)加載內(nèi)容:

          有些網(wǎng)頁會使用JavaScript或AJAX等技術(shù)動態(tài)加載內(nèi)容,這對采集工作帶來了一定的挑戰(zhàn)。幸運的是,PHP提供了強大的庫和工具,如Selenium和PhantomJS,可以模擬瀏覽器行為,幫助你獲取完整的頁面內(nèi)容。

          4.處理登錄和驗證碼:

          在一些需要登錄或輸入驗證碼的網(wǎng)站上進行采集時,需要額外處理這些問題。PHP提供了各種HTTP請求庫和驗證碼識別工具,如cURL和Tesseract OCR,可以幫助你自動處理這些操作,實現(xiàn)無人值守的采集過程。

          5.設(shè)置合理的請求頭:

          為了避免被目標網(wǎng)站識別為爬蟲并限制訪問,你需要設(shè)置合理的請求頭。PHP中可以通過設(shè)置HTTP請求頭字段來模擬真實的瀏覽器請求,如User-Agent、Referer和Cookie等。合理設(shè)置這些字段可以提高采集成功率。

          6.處理編碼和字符集:

          不同網(wǎng)頁使用不同的編碼和字符集,因此在采集過程中需要正確處理這些問題。PHP提供了mbstring擴展和iconv函數(shù)等工具,可以幫助你進行編碼轉(zhuǎn)換和字符集處理,確保采集到的內(nèi)容正確無誤。

          7.遵守法律和道德規(guī)范:

          在進行網(wǎng)頁文章采集時,務必遵守相關(guān)法律法規(guī)和道德規(guī)范。不得未經(jīng)授權(quán)采集他人網(wǎng)站的內(nèi)容,也不得濫用采集技術(shù)損害他人利益。合法、合規(guī)地進行網(wǎng)頁文章采集,才能為自己和他人帶來真正的價值。

          8.注意隱私和安全:

          在進行網(wǎng)頁文章采集時,應注意保護用戶隱私和數(shù)據(jù)安全。不得采集帶有個人敏感信息的網(wǎng)頁內(nèi)容,也不得將采集到的數(shù)據(jù)用于非法用途。同時,采集過程中要注意防范網(wǎng)絡(luò)安全風險,確保自己的操作環(huán)境安全可靠。

          9.學習與分享:

          網(wǎng)頁文章采集是一個不斷學習和探索的過程。通過學習新的技術(shù)和經(jīng)驗,你可以不斷提升自己的采集能力,并將所學與他人分享。只有共同進步,才能推動整個行業(yè)的發(fā)展。

          在這篇文章中,我們介紹了網(wǎng)頁文章采集中一些重要的PHP技巧。希望這些技巧能夠幫助到正在進行網(wǎng)頁文章采集的你,讓你在采集過程中事半功倍。記住,在使用這些技巧時要遵守法律和道德規(guī)范,保護隱私和數(shù)據(jù)安全。愿你的網(wǎng)頁文章采集之路越走越寬廣!


          主站蜘蛛池模板: 三上悠亚精品一区二区久久| 国产人妖在线观看一区二区| 亚洲区精品久久一区二区三区| 日韩国产一区二区| 韩国美女vip福利一区| 国产无码一区二区在线| 在线观看日韩一区| 亚洲日本久久一区二区va| 天美传媒一区二区三区| 午夜天堂一区人妻| 在线精品一区二区三区电影| 性色av无码免费一区二区三区| 午夜性色一区二区三区免费不卡视频 | 亚洲一区免费视频| 国产精品香蕉在线一区| 亚无码乱人伦一区二区| 亚洲午夜在线一区| 精品女同一区二区三区免费站| 久久综合精品不卡一区二区| 中文日韩字幕一区在线观看| 波多野结衣免费一区视频| 国模大胆一区二区三区| 51视频国产精品一区二区| 国产91久久精品一区二区 | 久久亚洲国产精品一区二区| 日本韩国黄色一区二区三区 | 国产精品一区二区毛卡片| 亚洲老妈激情一区二区三区| 成人在线视频一区| 精品一区二区三区视频| 日韩一区二区三区免费体验| 色窝窝无码一区二区三区成人网站| 亚洲av无码一区二区三区四区| 国产亚洲日韩一区二区三区| 国产一区二区三区高清视频| 精品成人一区二区三区四区| 国产精品主播一区二区| 精品国产日产一区二区三区| 中文字幕一区二区三区永久| 久久se精品一区精品二区国产| 久久精品无码一区二区app|