爬取目標網頁,網址:https://movie.douban.com/subject/26683723/comments?status=P
在檢查窗口移動鼠標,放在不同的代碼段上,網頁上就會有不同的區域被選中,經過不斷查找,存放影評的文字都存放在<p class=""> </p>標簽當中
#需要調用的requests 庫和 BeautifulSoup庫中的bs4工具 import requests from bs4 import BeautifulSoup num=0#定義條數的初始值 #定義一個變量url,為需要爬取數據我網頁網址 url = 'https://movie.douban.com/subject/26683723/comments?status=P' #獲取這個網頁的源代碼,存放在req中 req = requests.get(url,{'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}) #生成一個Beautifulsoup對象 soup = BeautifulSoup(req.text,'lxml') xml = soup.find_all('p',class_='') for i in range(len(xml)): msg = xml[i].string if not msg is None: num += 1 print('第', num, '條', msg)
運行結果
找到每頁之間的聯系。
對比發現:它們的區別在於start=后邊的數字不同,都是20的整倍數(原因是每頁都只有20條影評)
所以只要實現start=后邊的字符串的改變,即可實現對不同頁面進行爬取。
#需要調用的requests 庫和 BeautifulSoup庫中的bs4工具 import requests from bs4 import BeautifulSoup num=0#定義條數的初始值 #通過循環實現對不同頁碼的網頁的數據爬取 for page in range(10): value = page * 20 #定義一個變量url url = 'https://movie.douban.com/subject/26683723/comments?start=%s&limit=20&sort=new_score&status=P&percent_type=' %str(value)#str轉型 #獲取這個網頁的源代碼 req = requests.get(url,{'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'}) #生成一個Beautifulsoup對象 soup = BeautifulSoup(req.text,'lxml') xml = soup.find_all('p',class_='') for i in range(len(xml)): msg = xml[i].string if not msg is None: num += 1 print('第', num, '條', msg)
運行結果
主要有以下步驟:先找到目標網頁,分析網頁源碼,確定所需數據的位置,編寫Python代碼,調用Python強大的工具就可以實現了。