整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          C#爬蟲示例,用于抓取網頁內容

          C#爬蟲示例,用于抓取網頁內容

          下是一個簡單的C#爬蟲示例,用于抓取網頁內容:

          csharpusing System;
          using System.Net.Http;
          using System.Threading.Tasks;
          using System.Text;
          using System.IO;
          
          class Program
          {
              static async Task Main(string[] args)
              {
                  string url="http://example.com"; // 替換為要抓取的網頁URL
                  string outputFile="output.txt"; // 輸出文件名
                  await DownloadWebPage(url, outputFile);
              }
          
              static async Task DownloadWebPage(string url, string outputFile)
              {
                  HttpClient client=new HttpClient();
                  HttpResponseMessage response=await client.GetAsync(url);
                  response.EnsureSuccessStatusCode();
                  byte[] bytes=await response.Content.ReadAsByteArrayAsync();
                  string html=Encoding.UTF8.GetString(bytes);
                  File.WriteAllText(outputFile, html); // 將網頁內容寫入文件
              }
          }
          

          這個示例使用HttpClient類來發送HTTP請求并獲取網頁內容。然后,它將響應內容轉換為字符串,并將其寫入文件。請注意,此示例僅適用于簡單的網頁抓取。對于更復雜的網頁抓取任務,您可能需要使用更高級的HTML解析庫,例如HtmlAgilityPack或AngleSharp。

          下是爬取京東商品詳情的Python3代碼,以excel存放鏈接的方式批量爬取。excel如下

          代碼如下

          私信小編01即可獲取大量Python學習資源

          from selenium import webdriver
          from lxml import etree
          from selenium.webdriver.common.by import By
          from selenium.webdriver.common.keys import Keys
          import datetime
          import calendar
          import logging
          from logging import handlers
          import requests
          import os
          import time
          import pymssql
          import openpyxl
          import xlrd
          import codecs
          
          
          
          class EgongYePing:
          
               options=webdriver.FirefoxOptions()
               fp=webdriver.FirefoxProfile()
               fp.set_preference("browser.download.folderList",2)  
               fp.set_preference("browser.download.manager.showWhenStarting",False)
               fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/zip,application/octet-stream")
               global driver 
               driver=webdriver.Firefox(firefox_profile=fp,options=options)
               def Init(self,url,code):
                                 print(url.strip())
                                 driver.get(url.strip())
                                 #driver.refresh()
                                 # 操作瀏覽器屬于異步,在網絡出現問題的時候??赡艽a先執行。但是請求頁面沒有應答。所以硬等
                                 time.sleep(int(3))
                                 html=etree.HTML(driver.page_source) 
                                 if driver.title!=None:
                                   listImg=html.xpath('//*[contains(@class,"spec-list")]//ul//li//img')
                                   if len(listImg)==0:
                                        pass
                                   if len(listImg)>0:
                                                      imgSrc=''
                                                      for item in range(len(listImg)):    
                                                           imgSrc='https://img14.360buyimg.com/n0/'+listImg[item].attrib["data-url"]
                                                           print('頭圖下載:'+imgSrc)
                                                           try:
                                                            Headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
                                                            r=requests.get(imgSrc, headers=Headers, stream=True)
                                                            if r.status_code==200:
                                                               imgUrl=''
                                                               if item==0:
                                                                    imgUrl+=code + "_主圖_" + str(item)  + '.' + imgSrc.split('//')[1].split('/')[len(imgSrc.split('//')[1].split('/'))-1].split('.')[1]
                                                               else:
                                                                    imgUrl+=code + "_附圖_" + str(item)  + '.' + imgSrc.split('//')[1].split('/')[len(imgSrc.split('//')[1].split('/'))-1].split('.')[1]
                                                               open(os.getcwd()+'/img/'+  imgUrl , 'wb').write(r.content) # 將內容寫入圖片
                                                            del r
                                                           except Exception as e:
                                                              print("圖片禁止訪問:"+imgSrc) 
                                   listImg=html.xpath('//*[contains(@class,"ssd-module")]') 
                                   if len(listImg)==0:
                                        listImg=html.xpath('//*[contains(@id,"J-detail-content")]//div//div//p//img')
                                   if len(listImg)==0:
                                        listImg=html.xpath('//*[contains(@id,"J-detail-content")]//img')
                                   if len(listImg)>0:
                                         for index in range(len(listImg)):  
                                              detailsHTML=listImg[index].attrib
                                              if 'data-id' in detailsHTML:
                                                    try:
                                                     details=driver.find_element_by_class_name("animate-"+listImg[index].attrib['data-id']).value_of_css_property('background-image')
                                                     details=details.replace('url(' , ' ')
                                                     details=details.replace(')' , ' ')
                                                     newDetails=details.replace('"', ' ')
                                                     details=newDetails.strip()
                                                     print("詳情圖下載:"+details)
                                                     try:
                                                            Headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
                                                            r=requests.get(details, headers=Headers, stream=True)
                                                            if r.status_code==200:
                                                               imgUrl=''
                                                               imgUrl+=code + "_詳情圖_" + str(index)  + '.' + details.split('//')[1].split('/')[len(details.split('//')[1].split('/'))-1].split('.')[1]
                                                               open(os.getcwd()+'/img/'+   imgUrl, 'wb').write(r.content) # 將內容寫入圖片
                                                            del r
                                                     except Exception as e:
                                                              print("圖片禁止訪問:"+details) 
                                                    except Exception as e:      
                                                         print('其他格式的圖片不收錄');       
                                              if  'src' in detailsHTML:
                                                   try:
                                                     details=listImg[index].attrib['src']
                                                     if 'http' in details:
                                                               pass
                                                     else:
                                                               details='https:'+details
                                                     print("詳情圖下載:"+details)
                                                     try:
                                                            Headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
                                                            r=requests.get(details, headers=Headers, stream=True)
                                                            if r.status_code==200:
                                                               imgUrl=''
                                                               imgUrl+=code + "_詳情圖_" + str(index)  + '.' + details.split('//')[1].split('/')[len(details.split('//')[1].split('/'))-1].split('.')[1]
                                                               open(os.getcwd()+'/img/'+   imgUrl, 'wb').write(r.content) # 將內容寫入圖片
                                                            del r
                                                     except Exception as e:
                                                              print("圖片禁止訪問:"+details) 
                                                   except Exception as e:      
                                                         print('其他格式的圖片不收錄'); 
          
                                 print('結束執行')
          
                   
          
               @staticmethod
               def readxlsx(inputText):
                  filename=inputText
                  inwb=openpyxl.load_workbook(filename)  # 讀文件
                  sheetnames=inwb.get_sheet_names()  # 獲取讀文件中所有的sheet,通過名字的方式
                  ws=inwb.get_sheet_by_name(sheetnames[0])  # 獲取第一個sheet內容
                  # 獲取sheet的最大行數和列數
                  rows=ws.max_row
                  cols=ws.max_column
                  for r in range(1,rows+1):
                      for c in range(1,cols):
                          if ws.cell(r,c).value!=None and r!=1 :
                           if 'item.jd.com' in str(ws.cell(r,c+1).value) and str(ws.cell(r,c+1).value).find('i-item.jd.com')==-1:
                               print('支持:'+str(ws.cell(r,c).value)+'|'+str(ws.cell(r,c+1).value))
                               EgongYePing().Init(str(ws.cell(r,c+1).value),str(ws.cell(r,c).value))
                           else:
                               print('當前格式不支持:'+(str(ws.cell(r,c).value)+'|'+str(ws.cell(r,c+1).value)))
                               pass
                  pass
          
          if __name__=="__main__":
                           start=EgongYePing()
                           start.readxlsx(r'C:\Users\newYear\Desktop\爬圖.xlsx')
          

          基本上除了過期的商品無法訪問以外。對于京東的三種頁面結構都做了處理。能訪問到的商品頁面。還做了模擬瀏覽器請求訪問和下載。基本不會被反爬蟲屏蔽下載。

          上面這一段是以火狐模擬器運行

          上面這一段是模擬瀏覽器下載。如果不加上這一段。經常會下載幾十張圖片后,很長一段時間無法正常下載圖片。因為沒有請求頭被認為是爬蟲。

          上面這段是京東的商品詳情頁面,經常會三種?(可能以后會更多的頁面結構)

          所以做了三段解析。只要沒有抓到圖片就換一種解析方式。這楊就全了。

          京東的圖片基本只存/1.jpg。然后域名是 https://img14.360buyimg.com/n0/。所以目前要拼一下。

          京東還有個很蛋疼的地方是圖片以data-id拼進div的背景元素里。所以取出來的時候要繞一下。還好也解決了。

          以下是爬取京東商品詳情的Python3代碼,以excel存放鏈接的方式批量爬取。excel如下

          因為這次是淘寶和京東一起爬取。所以在一個excel里。代碼里區分淘寶和京東的鏈接。以下是代碼

          from selenium import webdriver
          from lxml import etree
          from selenium.webdriver.common.by import By
          from selenium.webdriver.common.keys import Keys
          import datetime
          import calendar
          import logging
          from logging import handlers
          import requests
          import os
          import time
          import pymssql
          import openpyxl
          import xlrd
          import codecs
          
          
          
          class EgongYePing:
          
               options=webdriver.FirefoxOptions()
               fp=webdriver.FirefoxProfile()
               fp.set_preference("browser.download.folderList",2)  
               fp.set_preference("browser.download.manager.showWhenStarting",False)
               fp.set_preference("browser.helperApps.neverAsk.saveToDisk","application/zip,application/octet-stream")
               global driver 
               driver=webdriver.Firefox(firefox_profile=fp,options=options)
               def Init(self,url,code):
                                 #driver=webdriver.Chrome('D:\python3\Scripts\chromedriver.exe')
                                 #driver.get(url)
                                 print(url.strip())
                                 driver.get(url.strip())
                                 #driver.refresh()
                                 # 操作瀏覽器屬于異步,在網絡出現問題的時候??赡艽a先執行。但是請求頁面沒有應答。所以硬等
                                 time.sleep(int(3))
                                 html=etree.HTML(driver.page_source) 
                                 if driver.title!=None:
                                   listImg=html.xpath('//*[contains(@id,"J_UlThumb")]//img')
                                   if len(listImg)==0:
                                        pass
                                   if len(listImg)>0:
                                                      imgSrc=''
                                                      for item in range(len(listImg)):    
                                                           search=listImg[item].attrib
                                                           if 'data-src' in search:
                                                              imgSrc=listImg[item].attrib["data-src"].replace('.jpg_50x50','')
                                                           else:
                                                              imgSrc=listImg[item].attrib["src"]
                                                           if 'http' in imgSrc:
                                                               pass
                                                           else:
                                                               imgSrc='https:'+imgSrc
                                                           print('頭圖下載:'+imgSrc)
                                                           try:
                                                            Headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
                                                            r=requests.get(imgSrc, headers=Headers, stream=True)
                                                            if r.status_code==200:
                                                               imgUrl=''
                                                               if item==0:
                                                                    imgUrl+=code + "_主圖_" + str(item)  + '.' + imgSrc.split('//')[1].split('/')[len(imgSrc.split('//')[1].split('/'))-1].split('.')[1]
                                                               else:
                                                                    imgUrl+=code + "_附圖_" + str(item)  + '.' + imgSrc.split('//')[1].split('/')[len(imgSrc.split('//')[1].split('/'))-1].split('.')[1]
                                                               open(os.getcwd()+'/img/'+  imgUrl , 'wb').write(r.content) # 將內容寫入圖片
                                                            del r
                                                           except Exception as e:
                                                              print("圖片禁止訪問:"+imgSrc) 
                                   listImg=html.xpath('//*[contains(@id,"J_DivItemDesc")]//img')
                                   if len(listImg)>0:
                                         for index in range(len(listImg)):  
                                              detailsHTML=listImg[index].attrib
                                              if 'data-ks-lazyload' in detailsHTML:
                                                  details=listImg[index].attrib["data-ks-lazyload"]
                                                  print("詳情圖下載:"+details)
                                              else:
                                                  details=listImg[index].attrib["src"]
                                                  print("詳情圖下載:"+details)
                                              try:
                                                            Headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
                                                            r=requests.get(details, headers=Headers, stream=True)
                                                            if r.status_code==200:
                                                               imgUrl=''
                                                               details=details.split('?')[0]
                                                               imgUrl+=code + "_詳情圖_" + str(index)  + '.' + details.split('//')[1].split('/')[len(details.split('//')[1].split('/'))-1].split('.')[1]
                                                               open(os.getcwd()+'/img/'+   imgUrl, 'wb').write(r.content) # 將內容寫入圖片
                                                            del r
                                              except Exception as e:
                                                              print("圖片禁止訪問:"+details)  
                                 print('結束執行')
          
                   
          
               @staticmethod
               def readxlsx(inputText):
                  filename=inputText
                  inwb=openpyxl.load_workbook(filename)  # 讀文件
                  sheetnames=inwb.get_sheet_names()  # 獲取讀文件中所有的sheet,通過名字的方式
                  ws=inwb.get_sheet_by_name(sheetnames[0])  # 獲取第一個sheet內容
                  # 獲取sheet的最大行數和列數
                  rows=ws.max_row
                  cols=ws.max_column
                  for r in range(1,rows+1):
                      for c in range(1,cols):
                          if ws.cell(r,c).value!=None and r!=1 :
                           if 'item.taobao.com' in str(ws.cell(r,c+1).value):
                               print('支持:'+str(ws.cell(r,c).value)+'|'+str(ws.cell(r,c+1).value))
                               EgongYePing().Init(str(ws.cell(r,c+1).value),str(ws.cell(r,c).value))
                           else:
                               print('當前格式不支持:'+(str(ws.cell(r,c).value)+'|'+str(ws.cell(r,c+1).value)))
                               pass
                  pass
          
          if __name__=="__main__":
                           start=EgongYePing()
                           start.readxlsx(r'C:\Users\newYear\Desktop\爬圖.xlsx')
          

          淘寶有兩個問題,一個是需要綁定賬號登錄訪問。這里是代碼斷點。然后手動走過授權。

          第二個是被休息和懶惰加載。被休息。其實沒影響的。一個頁面結構已經加載出來了。然后也不會影響訪問其他的頁面。

          至于懶惰加載嘛。對我們也沒啥影響。如果不是直接寫在src里那就在判斷一次取 data-ks-lazyload就出來了。

          最后就是爬取的片段截圖

          建議還是直接將爬取的數據存服務器,數據庫,或者圖片服務器。因為程序挺靠譜的。一萬條數據。爬了26個G的文件。最后上傳的時候差點累死了

          是真的大。最后還要拆包。十幾個2g壓縮包一個一個上傳。才成功。

          今電商發展的越來越火熱,過段時間就是年中大促618活動,不少商家都在緊張的優化自己的店鋪,做電商的都知道,一家店的銷量取決于好的關鍵詞和主圖,關鍵詞相信大家都會自行優化,主圖對于很多不會PS的人來說還是有些困難的。所以很多商家都會到網上去找一些圖片素材來進行修改制作或采集同行相近產品圖片,但是一張張采集下載實在太費事費力了,有沒快速批量下載的方法呢!今天小編就來教大家如何利用網商圖片下載工具來快速采集!

          1、首先我們復制要下載的商品網頁鏈接

          2、運行打開網商圖片下載工具,將要下載的商品鏈接粘貼到下載框內,一行一個鏈接,并設置好要下載的圖片選項,點擊立即下載就能快速保存到電腦本地

          3、下載完成后我們點擊打開文件夾可以直接預覽下載效果,自動分類,十分方便快捷

          4、還能根據店鋪首頁進行批量下載,我們點擊“工具”選擇“整店寶貝下載”

          5、將要下載的店鋪首頁鏈接粘貼到小框內,點擊獲取,然后確定,全部導入到下載框內,立即下載

          是不是很簡單方便呢,更多小編就不全部演示了,大家可以自己下載個網商圖片下載工具自己動手操作試試看,告別手動費力一張張采集下載,瞬間提高工作效率!


          主站蜘蛛池模板: 好吊妞视频一区二区| 亚洲av乱码一区二区三区按摩| 午夜影视日本亚洲欧洲精品一区| 免费看AV毛片一区二区三区| 色老板在线视频一区二区| 婷婷亚洲综合一区二区| 亚洲av鲁丝一区二区三区| 伊人精品视频一区二区三区| 免费人人潮人人爽一区二区| 无码人妻精品一区二区三区久久久 | 亚洲一区免费在线观看| 亚洲国产精品无码久久一区二区 | 日韩一区二区在线播放| 亚洲国产一区二区a毛片| 国产视频一区在线观看| 国产婷婷色一区二区三区| 成人午夜视频精品一区| 日韩精品无码一区二区三区四区| 日韩电影在线观看第一区| 濑亚美莉在线视频一区| 日韩精品福利视频一区二区三区| 人妻在线无码一区二区三区| 无码一区二区波多野结衣播放搜索| 偷拍激情视频一区二区三区| 国产乱码一区二区三区四| 中文字幕一区在线观看视频| 日本精品无码一区二区三区久久久 | 熟女大屁股白浆一区二区| 中文字幕一区二区三区有限公司| 99精品国产一区二区三区| 91精品一区国产高清在线| 国产无套精品一区二区| 亚洲一区二区在线视频| 亚洲熟妇成人精品一区| 精品国产高清自在线一区二区三区| 国产精品一区二区香蕉| 一区二区三区国模大胆| 久久精品一区二区免费看| 一区二区传媒有限公司| 婷婷国产成人精品一区二| 国产在线无码视频一区二区三区|