溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

發(fā)布時間:2021-10-28 18:29:21 來源:億速云 閱讀:184 作者:柒染 欄目:編程語言

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

百度貼吧是全球最大的中文交流平臺,你是否跟我一樣,有時候看到評論區(qū)的圖片想下載呢?或者看到一段視頻想進行下載呢?

今天,帶大家通過搜索關鍵字來獲取評論區(qū)的圖片和視頻。

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

【二、項目目標】

實現(xiàn)把貼吧獲取的圖片或視頻保存在一個文件。

【三、涉及的庫和網站】

1、網址如下:

https://tieba.baidu.com/f?ie=utf-8&kw=吳京&fr=search

2、涉及的庫:requests、lxml、urrilb

【四、項目分析】

1、反爬措施的處理

前期測試時發(fā)現(xiàn),該網站反爬蟲處理措施很多,測試到有以下幾個:

1) 直接使用requests庫,在不設置任何header的情況下,網站直接不返回數(shù) 據。

2) 同一個ip連續(xù)訪問40多次,直接封掉ip,起初我的ip就是這樣被封掉的。

為了解決這兩個問題,最后經過研究,使用以下方法,可以有效解決。

獲取正常的 http請求頭,并在requests請求時設置這些常規(guī)的http請求頭。

2、如何實現(xiàn)搜索關鍵字?

通過網址我們可以發(fā)現(xiàn)只需要在kw=() ,括號中輸入你要搜索的內容即可。這樣就可以用一個{}來替代它,后面我們在通過循環(huán)遍歷它。

【五、項目實施】

1、創(chuàng)建一個名為BaiduImageSpider的類,定義一個主方法main和初始化方法init。導入需要的庫。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
   def __init__(self, tieba_name):
       pass
   def main(self):
       pass
if __name__ == '__main__':
   inout_word = input("請輸入你要查詢的信息:")

   spider.main()
       pass
if __name__ == '__main__':
   spider= ImageSpider()
   spider.main()
2、準備url地址和請求頭headers 請求數(shù)據。
import requests
from lxml import etree
from urllib import parse
class BaiduImageSpider(object):
   def __init__(self, tieba_name):
         self.tieba_name = tieba_name #輸入的名字
       self.url = "http://tieba.baidu.com/f?kw={}&ie=utf-8&pn=0"
       self.headers = {
           'User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; InfoPath.3)'
       }

   '''發(fā)送請求 獲取響應'''
   def get_parse_page(self, url, xpath):
       html = requests.get(url=url, headers=self.headers).content.decode("utf-8")
       parse_html = etree.HTML(html)
       r_list = parse_html.xpath(xpath)
       return r_list
   def main(self):
       url = self.url.format(self.tieba_name)
if __name__ == '__main__':
   inout_word = input("請輸入你要查詢的信息:")
   key_word = parse.quote(inout_word)
   spider = BaiduImageSpider(key_word)
   spider.main()
3、用xpath進行數(shù)據分析

3.1、chrome_Xpath插件安裝

1) 這里用到一個插件。能夠快速檢驗我們爬取的信息是否正確。具體安裝方法如下。

2) 百度下載chrome_Xpath_v2.0.2.crx, chrome瀏覽器輸入:chrome://extensions/

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

3) 直接將chrome_Xpath_v2.0.2.crx拖動至該擴展程序頁面 ;

4) 如果安裝失敗,彈框提示“無法從該網站添加應用、擴展程序和用戶腳本”,遇到這個問題,解決方法 是:打開開發(fā)者模式,將crx文件(直接或后綴修改為rar)并解壓成文件夾,點擊開發(fā)者模式的加載已解壓的擴展程序,選擇解壓后的文件夾,點擊確定,安裝成功;

3.2、chrome_Xpath插件使用

上面我們已經安裝好了chrome_Xpath插件,接下來我們即將使用它。
1) 打開瀏覽器,按下快捷鍵F12 。2) 選擇元素,如下圖所示。

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

3) 右鍵,然后選擇,“Copy XPath”,如下圖所示。

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

3.3、編寫代碼,獲取鏈接函數(shù)。

上面我們已經獲取到鏈接函數(shù)的Xpath路徑,接下來定義一個獲取鏈接函數(shù)get_tlink,并繼承self,實現(xiàn)多頁抓取。

'''獲取鏈接函數(shù)'''

   def get_tlink(self, url):
       xpath = '//div[@class="threadlist_lz clearfix"]/div/a/@href'
       t_list = self.get_parse_page(url, xpath)
       # print(len(t_list))
       for t in t_list:
           t_link = "http://www.tieba.com" + t
           '''接下來對帖子地址發(fā)送請求  將保存到本地'''
           self.write_image(t_link)

4、保存數(shù)據

這里定義一個write_image方法來保存數(shù)據,如下所示。

 '''保存到本地函數(shù)'''

def write_image(self, t_link):
     xpath = "//div[@class='d_post_content j_d_post_content clearfix']/img[@class='BDE_Image']/@src | //div[@class='video_src_wrapper']/embed/@data-video"
       img_list = self.get_parse_page(t_link, xpath)      
       for img_link in img_list:  
           html = requests.get(url=img_link, headers=self.headers).content
           filename = "百度/"+img_link[-10:]
       
           with open(filename, 'wb') as f:
               f.write(html)
               print("%s下載成功" % filename)


如下圖:

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

【六、效果展示】

1、點擊運行,如下圖所示(請輸入你要查詢的信息):

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

2、以吳京為例輸入,回車:

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

3、將圖片下載保存在一個名為“百度”文件夾下,這個文件夾需要你提前在本地新建好。務必記得提前在當前代碼的同級目錄下,新建一個名為“百度”的文件夾,否則的話系統(tǒng)將找不到該文件夾,會報找不到“百度”這個文件夾的錯誤。

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

4、下圖中的MP4就是評論區(qū)的視頻。

如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻

總結:

1、不建議抓取太多數(shù)據,容易對服務器造成負載,淺嘗輒止即可。

2、本文基于Python網絡爬蟲,利用爬蟲庫,實現(xiàn)百度貼吧評論區(qū)爬取。就Python爬取百度貼吧的一些難點, 進行詳細的講解和提供有效的解決方案。
3、歡迎大家積極嘗試,有時候看到別人實現(xiàn)起來很簡單,但是到自己動手實現(xiàn)的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。學習requests 庫的使用以及爬蟲程序的編寫。

關于如何用Python網絡爬蟲抓取百度貼吧評論區(qū)圖片和視頻問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業(yè)資訊頻道了解更多相關知識。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI