一直對爬蟲感興趣,學了python後正好看到某篇關於爬取的文章,就心血來潮實戰一把吧。固然若是你學的很差,建議能夠先去小編的Python交流.裙 :一久武其而而流一思(數字的諧音)轉換下能夠找到了,裏面有最新Python教程項目,一塊兒交流學習進步!python
實現目標:抓取豆瓣電影top250,並輸出到文件中web
1.找到對應的url:https://movie.douban.com/top250網絡
2.進行頁面元素的抓取:app
3.編寫代碼:post
第一步:實現抓取第一個頁面;學習
第二步:將其餘頁面的信息也抓取到;編碼
第三步:輸出到文件;url
4.代碼: spa
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.輸出到文件中
真的很簡單,不知道大家都懂了沒? 若是沒懂能夠去小編的Python交流.裙 :一久武其而而流一思(數字的諧音)轉換下能夠找到了,裏面有最新Python教程項目,一塊兒交流學習進步!有問題留言問我吧~