1. 程式人生 > >Python:python抓取豆瓣電影top250

Python:python抓取豆瓣電影top250

color nat gin else get 分頁 技術分享 win .cn

一直對爬蟲感興趣,學了python後正好看到某篇關於爬取的文章,就心血來潮實戰一把吧。

實現目標:抓取豆瓣電影top250,並輸出到文件中

1.找到對應的url:https://movie.douban.com/top250

2.進行頁面元素的抓取:

技術分享圖片

3.編寫代碼:

  第一步:實現抓取第一個頁面;

  第二步:將其他頁面的信息也抓取到;

  第三步:輸出到文件;

4.代碼:

import sys
import io
from selenium import webdriver

#改變標準輸出,解決輸出到文件時遇到的編碼問題。
# 如果輸出到控制行,不要加這一行
# sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding=‘gb18030‘)

class DouBan:
#初始化driver對象,打開頁面,最大化頁面
def __init__(self):
self.driver=webdriver.Chrome()
self.driver.get(‘https://movie.douban.com/top250‘)
self.driver.maximize_window()

# 分頁判斷,默認顯示第一頁,輸出第一頁後,點擊下一頁按鈕,再輸出。總共10頁
def get_content(self):
for page in range(1,10):
#獲取元素定位: 對當前頁面中 單個電影元素進行定位
movie = self.driver.find_elements_by_class_name(‘info‘)

# for循環:循環輸出當前頁面中單部影片的電影信息(text輸出元素的文本內容);
i = 1
for item in movie:
#輸出格式: 電影序號 + 電影介紹 +換行展示
print(str(i+ page*25-25)+": "+item.text+‘‘)
print("")
i+=1

# 判斷:如果當前頁面碼小於10,則查找頁碼的元素,並點擊頁碼。否則不用進行查找,因為最多點擊第10頁;
# 獲取底部的頁簽元素(采用了format格式輸出,根據當前頁面做加1操作)
if page<10:
page_but = self.driver.find_element_by_xpath(‘//div[@class="paginator"]//a[contains(text(),{0})]‘.format(page + 1))
page_but.click()
else:
pass

if __name__ == ‘__main__‘:
DouBan().get_content()

5.結果:

1)控制臺輸出部分截圖:

技術分享圖片

2)如果想要輸出到文件,執行命令並重定向到TXT文件中:

python xxxx.py >d:/out_test.txt

6.遇到的問題:

1.多頁時,for循環的數字設置,來回試幾次就可以了,不難。

2.輸出到文件中(參照博客:https://www.cnblogs.com/feng18/p/5646925.html,講的比較詳細)

技術分享圖片

真的很簡單,有問題留言問我吧~

Python:python抓取豆瓣電影top250