干貨教程:一篇文章教會(huì )你利用Python網(wǎng)絡(luò )爬蟲(chóng)實(shí)現豆瓣電影采集
優(yōu)采云 發(fā)布時(shí)間: 2022-11-16 11:59干貨教程:一篇文章教會(huì )你利用Python網(wǎng)絡(luò )爬蟲(chóng)實(shí)現豆瓣電影采集
點(diǎn)擊上方“IT共享之家”關(guān)注
回復“資訊”領(lǐng)取Python學(xué)習福利
【1. 項目背景】
豆瓣電影提供最新的電影介紹和評論,包括電影信息查詢(xún)和已上映電影的購票服務(wù)??梢凿浿谱约合肟吹碾娪半娨晞?,邊看邊看,順便打分寫(xiě)影評。極大地方便了人們的生活。
今天以電視?。绖。槔?,批量抓取對應的電影,寫(xiě)入csv文件。用戶(hù)可以通過(guò)評分更好地選擇自己想要的電影。
【2. 項目目標】
獲取對應的電影名稱(chēng)、評分、詳情鏈接,下載電影圖片,保存文件。
[3. 涉及的圖書(shū)館和網(wǎng)站]
1、網(wǎng)址如下:
https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start={}
2.涉及的庫:requests、fake_useragent、json、csv
3.軟件:PyCharm
【4. 項目分析】
1、如何請求多個(gè)網(wǎng)頁(yè)?
當點(diǎn)擊下一頁(yè)時(shí),paged會(huì )每多一頁(yè)自動(dòng)增加20,將轉換后的變量替換為{},然后使用for循環(huán)遍歷URL,實(shí)現多URL請求。
2、如何獲取真實(shí)請求的地址?
請求數據時(shí),發(fā)現頁(yè)面上沒(méi)有對應的數據。其實(shí)豆瓣是用javascript動(dòng)態(tài)加載內容來(lái)防止采集的。
1)F12右鍵查看,找到Network,左側菜單Name,找到第五條數據,點(diǎn)擊Preview。
2)點(diǎn)擊subjects,可以看到title就是對應的電影名。rate是對應的分數。通過(guò)js解析subjects字典,找到需要的字段。
3、如何訪(fǎng)問(wèn)網(wǎng)站?
https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=0<br />https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=20<br />https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=40<br />https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start=60
當點(diǎn)擊下一頁(yè)時(shí),頁(yè)面每增加一頁(yè)自動(dòng)增加20,將轉換后的變量替換為{},然后使用for循環(huán)遍歷URL,實(shí)現多次URL請求。
【V. 項目實(shí)施】
1、我們定義一個(gè)class類(lèi)繼承object,然后定義init方法繼承self,再定義一個(gè)main函數main繼承self。導入所需的庫和請求 url。
import requests,jsonfrom fake_useragent import UserAgentimport csv<br />class Doban(object): def __init__(self): self.url = "https://movie.douban.com/j/search_subjects?type=tv&tag=%E7%BE%8E%E5%89%A7&sort=recommend&page_limit=20&page_start={}"<br /> def main(self): pass<br />if __name__ == '__main__': Siper = Doban() Siper.main()
2、隨機生成UserAgent并構造請求頭,防止反爬。
for i in range(1, 50): self.headers = { 'User-Agent': ua.random, }
3.發(fā)送請求,得到響應,回調頁(yè)面,方便下一次請求。
def get_page(self, url): res = requests.get(url=url, headers=self.headers) html = res.content.decode("utf-8") return html
4. JSON解析頁(yè)面數據,得到對應的字典。
data = json.loads(html)['subjects'] # print(data[0])
5. 遍歷獲取對應的電影名、評分、下一個(gè)詳情頁(yè)的鏈接。
print(name, goblin_herf) html2 = self.get_page(goblin_herf) # 第二個(gè)發(fā)生請求 parse_html2 = etree.HTML(html2) r = parse_html2.xpath('//div[@class="entry"]/p/text()')
6、創(chuàng )建一個(gè)csv文件用于寫(xiě)入,定義相應的header內容,保存數據。
# 創(chuàng )建csv文件進(jìn)行寫(xiě)入 csv_file = open('scr.csv', 'a', encoding='gbk') csv_writer = csv.writer(csv_file) # 寫(xiě)入csv標題頭內容 csv_writerr.writerow(['電影', '評分', "詳情頁(yè)"]) #寫(xiě)入數據 csv_writer.writerow([id, rate, urll])
7.請求圖片地址。定義圖片名稱(chēng)并保存文檔。
html2 = requests.get(url=urll, headers=self.headers).content dirname = "./圖/" + id + ".jpg" with open(dirname, 'wb') as f: f.write(html2) print("%s 【下載成功?。。?!】" % id)
8.調用方法實(shí)現功能。
html = self.get_page(url) self.parse_page(html)
9. 項目?jì)?yōu)化: 1) 設置延時(shí)。
time.sleep(1.4)
2)定義一個(gè)變量u,用于遍歷,表示爬取哪個(gè)頁(yè)面。(明顯更清楚)。
u = 0 self.u += 1;
【6. 效果展示】
1、點(diǎn)擊綠色小三角運行輸入起始頁(yè)和結束頁(yè)(從第0頁(yè)開(kāi)始)。
2. 在控制臺顯示下載成功信息。
3. 保存 csv 文件。
4.電影畫(huà)面顯示。
【七. 概括】
1、不建議抓取太多數據,容易造成服務(wù)器負載,稍微嘗試一下。
2、本次文章針對Python爬豆瓣在應用中的難點(diǎn)和重點(diǎn),以及如何防止反爬做了相對的解決。
3、希望通過(guò)這個(gè)項目,能夠幫助理解json解析頁(yè)面的基本過(guò)程,字符串是如何拼接的,format函數是如何使用的。
4、本文基于Python網(wǎng)絡(luò )爬蟲(chóng),使用爬蟲(chóng)庫獲取豆瓣電影及其圖片。到實(shí)現的時(shí)候,總會(huì )遇到各種各樣的問(wèn)題。不要好高騖遠,踏踏實(shí)實(shí)去努力,這樣才能理解的更深刻。
5、需要本文源碼的朋友,請在下方公眾號后臺回復“豆瓣電影”獲取。
看完這篇文章你有收獲嗎?請轉發(fā)分享給更多的人
資訊科技共享屋
干貨教程:站群自動(dòng)采集源碼
站群自動(dòng)采集源代碼_站群網(wǎng)站系統源代碼
智能生成千站,覆蓋全國。獨特的排版系統讓每個(gè)分站保持獨立的網(wǎng)站規則,拒絕千篇一律和無(wú)用的分站,站群最大化排名。雙語(yǔ)模板一鍵切換 中英文雙語(yǔ)模板一鍵切換,滿(mǎn)足更多外貿客戶(hù)需求,吸引更多客戶(hù)。. ,通過(guò)操作多個(gè)網(wǎng)站相互鏈接,站群自動(dòng)采集源代碼,站群是SEO優(yōu)化的重要手段網(wǎng)站,從而達到更好的排名效果。如果構建站群網(wǎng)站,站群自動(dòng)采集源代碼,非常方便省事,還能節省大量構建成本。
站群網(wǎng)站系統source_area站群source
銅川有這樣一群年輕人:他們曾經(jīng)在耀州區永安廣場(chǎng)組織過(guò)50架無(wú)人機編隊的燈光秀;走進(jìn)銅川市各中小學(xué),為學(xué)生普及機器人知識;. ,站群網(wǎng)站系統源碼,讓我們擁有國內最快的訪(fǎng)問(wèn)速度,支持大陸優(yōu)化路由,這也是海外多IP服務(wù)器流行的主要原因。3、網(wǎng)絡(luò )發(fā)達,訪(fǎng)問(wèn)速度快,但現在美國的站群服務(wù)器大多支持CN2直連線(xiàn)路,站群網(wǎng)站系統源碼,延遲低雖然我們知道美國離中國大陸還有很遠的距離
Region站群source_reverse proxy站群source
生存一定是艱難的,一定是可讀的。3、美國的站群服務(wù)器不需要注冊。第2點(diǎn),網(wǎng)站必須注冊后才能在線(xiàn)訪(fǎng)問(wèn)。4.美國,前面我們已經(jīng)提到美國是我國的特別行政區之一。作為我國的一個(gè)特別行政區,它的優(yōu)勢之一是:網(wǎng)站無(wú)需備案即可存儲在美國服務(wù)器上。如果放在國內大陸的服務(wù)器上,如果泛目錄站群程序的效果持續下降,在這個(gè)競爭日益激烈的互聯(lián)網(wǎng)環(huán)境下,本程序需要不斷升級軟件,完善內容。質(zhì)量。除了注重質(zhì)量,站群區源碼,
反向代理站群源碼_小旋風(fēng)站群源碼
建議兩種操作方法都一樣使用!其次,導入預先準備好的關(guān)鍵詞文本(inc/key/)和文章內容文本(inc/content/),文件名可以隨意命名,反向代理站群源代碼,直接上傳到服務(wù)器解壓,這里可以直接用網(wǎng)站根目錄做,反向代理站群源碼,先下載源碼壓縮包,也可以做在目錄中,目錄搜索引擎雖然有搜索功能,但嚴格來(lái)說(shuō)并不是真正的搜索引擎,只是網(wǎng)站鏈接的編目列表。用戶(hù)完全可以根據類(lèi)別找到自己需要的信息。由于加入了人類(lèi)智能,這類(lèi)搜索引擎信息準確,導航質(zhì)量高。






