很多小伙伴學(xué)習(xí)爬蟲的一個(gè)原因就是想要爬取一些熱門的電影下來,然后在自己有空的時(shí)候慢慢看,今天小編就帶來了一個(gè)關(guān)于爬取某站熱門電影的python爬蟲實(shí)戰(zhàn)項(xiàng)目(內(nèi)附python爬蟲源代碼),接下來就讓我們來看看python怎么爬取熱門電影吧!
本篇文章URL已作了特別處理,所以代碼不能直接使用。爬蟲學(xué)習(xí)的是思路而不是代碼的復(fù)制,希望小伙伴們能自行根據(jù)思路寫出自己的爬蟲代碼!
另外:惡意爬取別人的網(wǎng)站數(shù)據(jù)是違法行為,在學(xué)習(xí)的過程中請(qǐng)注意爬取力度。
爬取別人網(wǎng)站的視頻內(nèi)容是對(duì)該網(wǎng)站的侵權(quán),在爬取該視頻內(nèi)容之前請(qǐng)事先確定目標(biāo)網(wǎng)站是否允許你進(jìn)行視頻的爬取,可以查看網(wǎng)站的robot文件。非法大量爬取某網(wǎng)站的視頻內(nèi)容可能會(huì)遭受對(duì)方的起訴,所以請(qǐng)不要隨意爬取別人的視頻內(nèi)容。
一、首先我們要找到目標(biāo)
找到目標(biāo)先分析一下網(wǎng)頁,很幸運(yùn)這個(gè)只有一個(gè)網(wǎng)頁,不需要翻頁。
二、F12查看網(wǎng)頁源代碼
找到目標(biāo),分析如何獲取需要的數(shù)據(jù)。找到href與電影名稱
三、進(jìn)行代碼實(shí)現(xiàn),獲取想要資源。
'''
爬取電影與地址路徑
操作步驟
1,獲取到url內(nèi)容
2,css選擇其選擇內(nèi)容
3,保存自己需要數(shù)據(jù)
'''
#導(dǎo)入爬蟲需要的包
import requests
from bs4 import BeautifulSoup
#requests與BeautifulSoup用來解析網(wǎng)頁的
import time
#設(shè)置訪問網(wǎng)頁時(shí)間,防止自己IP訪問多了被限制拒絕訪問
import re
class Position():
def __init__(self,position_name,position_require,):#構(gòu)建對(duì)象屬性
self.position_name=position_name
self.position_require=position_require
def __str__(self):
return '%s%s/n'%(self.position_name,self.position_require)#重載方法將輸入變量改成字符串形式
class Aiqiyi():
def iqiyi(self,url):
head= {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47"
} #模擬的服務(wù)器頭
html = requests.get(url,headers=head)
#headers=hard 讓腳本以瀏覽器的方式去訪問,有一些網(wǎng)址禁止以python的反爬機(jī)制,這就是其中一個(gè)
soup = BeautifulSoup(html.content, 'lxml', from_encoding='utf-8') # BeautifulSoup打看網(wǎng)頁
soupl = soup.select(".qy-list-wrap") # 查找標(biāo)簽,用css選擇器,選擇自己需要數(shù)據(jù) 進(jìn)行選擇頁面第一次內(nèi)容(標(biāo)簽要找到唯一的,找id好,如果沒有考慮其他標(biāo)簽如class)
results = [] # 創(chuàng)建一個(gè)列表用來存儲(chǔ)數(shù)據(jù)
for e in soupl:
biao = e.select('.qy-mod-li') # 進(jìn)行二次篩選
for h in biao:
p=Position(h.select_one('.qy-mod-link-wrap').get_text(strip=True),
h.select_one('.title-wrap').get_text(strip=True))#調(diào)用類轉(zhuǎn)換(繼續(xù)三次篩選選擇自己需要內(nèi)容)
results.append(p)
return results # 返回內(nèi)容
def address(self,url):
#保存網(wǎng)址
head = {
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36 Edg/87.0.664.47"
} # 模擬的服務(wù)器頭
html = requests.get(url, headers=head)
soup = BeautifulSoup(html.content, 'lxml', from_encoding='utf-8') # BeautifulSoup打看網(wǎng)頁
alist = soup.find('div', class_='qy-list-wrap').find_all("a") # 查找div塊模塊下的 a標(biāo)簽
ls=[]
for i in alist:
ls.append(i.get('href'))
return ls
if __name__ == '__main__':
time.sleep(2)
#設(shè)置2秒訪問一次
a=Aiqiyi()
url = "https://list.*****.com/www/1/-------------11-1-1-iqiyi--.html"
with open(file='e:/練習(xí).txt ', mode='a+') as f: # e:/練習(xí).txt 為我電腦新建的文件,a+為給內(nèi)容進(jìn)行添加,但不進(jìn)行覆蓋原內(nèi)容。
for item in a.iqiyi(url):
line = f'{item.position_name} {item.position_require}
'
f.write(line) # 采用方法
print("下載完成")
with open(file='e:/地址.txt ', mode='a+') as f: # e:/練習(xí).txt 為我電腦新建的文件,a+為給內(nèi)容進(jìn)行添加,但不進(jìn)行覆蓋原內(nèi)容。
for item in a.address(url):
line=f'https{item}
'
f.write(line) # 采用方法
print("下載完成")
四、查看現(xiàn)象
到此這篇python怎么爬取熱門電影的文章就介紹到這了,更多python爬蟲實(shí)戰(zhàn)項(xiàng)目可以搜索W3Cschool以前的文章或繼續(xù)瀏覽下面的相關(guān)文章進(jìn)行了解,還請(qǐng)大家多多支持W3Cschool。