国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python爬蟲爬取pixiv圖片實戰詳解

89542767 / 845人閱讀

  小編寫這篇文章的主要目的,是來給大家做出一個介紹,介紹關于python爬蟲的一些技能技巧,包括怎么才能夠爬取pixiv圖片,作為一個小白來講,還是需要一定的實戰的,那么,具體的實戰技能,下面就給大家詳細的解答下。


  自從接觸python以后就想著爬pixiv,之前因為梯子有點問題就一直擱置,最近換了個梯子就迫不及待試了下。


  爬蟲無非request獲取html頁面然后用正則表達式或者beautifulsoup之類現成工具截取我們想要的頁面,pixiv也不例外。


  首先我們來實現模擬登陸,雖然大多數情況不需要我們實現模擬登錄,但如果你是會員之類的,登錄和不登錄網頁就有區別。思路是登錄時抓包抓到post請求,看pixiv構建的post的數據表格是什么格式,我們根據這個格式構建form,然后調用post方法去請求,再保存到session中,之后訪問相關頁面用session替代requests即可。


  可以看到pixiv登錄的網址如下,直接復制:


  抓包找到提交數據的請求:

01.png

  可以看到表單數據主要是這幾個,經過幾次嘗試,我們在模擬的時候只需要構建password、pixiv_id、post_key再加上一個return_to(第二張)即可。pixiv_id就是我們的賬號,password是密碼,return_to照著填就行,但這個post_key卻是隨機的。


  但我們也有辦法,它是我們每次訪問登錄頁面時動態生成的,這就好辦了,再登錄前先爬取一次登錄前的頁面,找到postkey。


  看到下圖紅圈里面:

03.png

  那就可以直接正則爬取:


  def get_postkey():
  login_url='https://accounts.pixiv.net/login?return_to=https%3A%2F%2Fwww.pixiv.net%2F&lang=zh&source=pc&view_type=page'
  response=requests.get(url=login_url,headers=headers,verify=False)
  html=response.text
  #print(html)
  postkey=re.findall('"pixivAccount.postKey":"(.*?)","pixivAccount.recaptchaEnterpriseCheckboxSiteKey"',html)
  return postkey[0]


  然后我們就可以構建數據包:


  pixiv_id="賬號"#你的pixiv賬號
  password='xxxxx'#你的pixiv密碼
  return_to='https://www.pixiv.net/'
  post_key=get_postkey()
  實例化一個session對象,然后post提交就能完成模擬登陸:
  session=requests.Session()
  form_data={
  'pixiv_id':pixiv_id,
  'password':password,
  'return_to':return_to,
  'post_key':post_key
  }
  login_url1='https://accounts.pixiv.net/login?return_to=https%3A%2F%2Fwww.pixiv.net%2F&lang=zh&source=pc&view_type=page'
  res=session.post(url=login_url1,headers=headers,data=form_data)

  #至此模擬登錄成功


  到此模擬登錄就成功了,接下來就是爬我們想要的圖片,以爬排行榜為例:


  打開排行榜頁面,鼠標懸停圖片,右鍵檢查,可以找到對應的代碼位置:

02.png

  找到每張圖片的相似結構,我們可以用BeautifulSoup找到節點,然后正則爬我們想要的網址:

04.png

  先找到包含每張圖片各種信息的節點,通過類名查找,然后對于每一個節點進行正則提取,提取出對應圖片的下載鏈接,不過需要特別注意的是,pixiv直接顯示的圖片源是騙你的,真正的圖片鏈接的形式應該是:


  https://i.pximg.net/img-original/img/xxxx/xx/xx/xx/xx/xx/xxxxxxxx_p0.png


  這樣的,直接把這個網址復制網頁欄訪問會顯示403,因為pixiv限制了必須從pixiv網頁點進這個網址,所以我們首先必須headers構建refer-to,然后通過排行榜提取到信息后還需要自己手動構建正確的網址:


  headers={'Referer':'https://www.pixiv.net/',
  }
  def get_accurate_url(url):
  urll='https://i.pximg.net/img-original/img/'+str(url)+"_p0.jpg"
  return urll


  這里的代碼偷了個懶,全部當作jpg來處理,下載的時候再處理png的情況


  下載的具體函數,我們對每一個網址的后續部分提取出來作名字,隨機睡眠1到4秒防止pixiv認出我們是爬蟲把我們ip給封了,之后就是對網址進行訪問下載,這里如果訪問返回的狀態碼是404說明它其實是個png格式的圖片,所以對png格式的文件重新構建正確的網址即可:


  def download(list,filename):
  i=1
  for url in list:
  pic_name=re.findall("https://i.pximg.net/img-original/img/(.*?)_p0.jpg",str(url))
  pic_name1=str(pic_name[0]).replace("/",".")
  r=random.randint(1,4)
  time.sleep(r)
  response=requests.get(url=url,headers=headers,verify=False)
  if(response.status_code==404):
  the_url='https://i.pximg.net/img-original/img/'+str(pic_name[0])+"_p0.png"
  response=requests.get(url=the_url,headers=headers,verify=False)
  with open(path+filename+'/'+str(pic_name1)+'.png','wb')as f:
  f.write(response.content)
  print("第"+str(i)+"張圖片已下載成功!!")
  else:
  with open(path+filename+'/'+str(pic_name1)+'.jpg','wb')as f:
  f.write(response.content)
  print("第"+str(i)+"張圖片已下載成功!!")
  i+=1


  最后就是成功下載排行榜的圖片:

06.png

  另外我在爬的時候發現pixiv很多網頁獲取時會隱藏body部分的內容,包括但不限于各個tag的網頁和單個id圖片的網頁,一開始以為是沒有登錄的原因,但是實現登錄后發現依然如此,推測可能是body部分內容是子網頁或者javsscript生成之類的,反正前端有一萬種方法達成這個目的,這個之后再研究怎么爬。


  綜上所述,小編就給大家介紹到這里了,希望可以給各位讀者帶來一定的幫助。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/128242.html

相關文章

  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • 【小白+python+selenium庫+圖片爬取+反爬+資料】超詳細新手實現(01)webdriv

    摘要:且本小白也親身經歷了整個從小白到爬蟲初入門的過程,因此就斗膽在上開一個欄目,以我的圖片爬蟲全實現過程為例,以期用更簡單清晰詳盡的方式來幫助更多小白應對更大多數的爬蟲實際問題。 前言: 一個月前,博主在學過python(一年前)、會一點網絡(能按F12)的情況下,憑著熱血和興趣,開始了pyth...

    Half 評論0 收藏0
  • 零基礎如何學爬蟲技術

    摘要:楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,。本文來源知乎作者路人甲鏈接楚江數據提供網站數據采集和爬蟲軟件定制開發服務,服務范圍涵蓋社交網絡電子商務分類信息學術研究等。 楚江數據是專業的互聯網數據技術服務,現整理出零基礎如何學爬蟲技術以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0
  • 用純客戶端JavaScript來寫一個有趣的爬蟲

    摘要:拿寫爬蟲,聽起來貌似有些不靠譜爬蟲,大多人對于爬蟲的理解都停留在使用后端語言如寫的爬蟲。圖中顯示的那一個長條是原本不存在與原網站中的,而是通過油猴腳本自動載入腳本來創建的。最大作用是將網站類似于花瓣網中的圖片作品快速的抓取下來。 拿JavaScript寫爬蟲,聽起來貌似有些不靠譜? 爬蟲,大多人對于爬蟲的理解都停留在使用后端語言如Python寫的爬蟲。但是實際上,使用客戶端JavaSc...

    scq000 評論0 收藏0
  • 寫這么多系列博客,怪不得找不到女朋友

    摘要:前提好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲抱歉了。熟悉我的人都知道我寫博客的時間比較早,而且堅持的時間也比較久,一直到現在也是一直保持著更新狀態。 showImg(https://segmentfault.com/img/remote/1460000014076586?w=1920&h=1080); 前提 好幾周沒更新博客了,對不斷支持我博客的童鞋們說聲:抱歉了!。自己這段時...

    JerryWangSAP 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<