Python:python抓取豆瓣電影top250
阿新 • • 發佈:2019-03-27
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