爬取豆瓣電影TOP250 - 完整示例代碼

目標(biāo)網(wǎng)站:https://movie.douban.com/top250
爬取目的:豆瓣電影排行榜前250的電影的電影名,保存到 movies.txt 文件

源代碼:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2017/4/19 16:30
# @Author  : zxp
# @Site    : 
# @File    : Douban_top250.py
# @Software: PyCharm
import codecs
import requests
from bs4 import BeautifulSoup

DOWNLOAD_URL = 'http://movie.douban.com/top250'

def download_page(url):
    headers = {
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.133 Safari/537.36'
               }
    data = requests.get(url, headers=headers).content
    return data

def parse_html(html):
    soup = BeautifulSoup(html, 'html.parser')
    movie_list_soup = soup.find('ol', attrs={'class':'grid_view'})

    movie_name_list = []

    for movie_li in movie_list_soup.find_all('li'):
        detail = movie_li.find('div', attrs={'class':'hd'})
        movie_name = detail.find('span', attrs={'class':'title'}).getText()
        movie_name_list.append(movie_name)

    next_page = soup.find('span', attrs={'class':'next'}).find('a')
    if next_page:
        return movie_name_list, DOWNLOAD_URL + next_page['href']
    return movie_name_list, None


def main():
    url = DOWNLOAD_URL

    with codecs.open('movies.txt', 'wb', encoding='utf-8') as fp:
        while url:
            html = download_page(url)
            movies, url = parse_html(html)
            fp.write(u'{movies}\n'.format(movies='\n'.join(movies)))


if __name__ == '__main__':
    main()

①使用了 User-Agent 模擬瀏覽器訪問(wèn),防止被服務(wù)器認(rèn)為是爬蟲(chóng)而拒絕訪問(wèn)。
②一般在我們確定內(nèi)容的前提下,可以直接在代碼中寫(xiě)死如何跳轉(zhuǎn)頁(yè)面,但是為了讓我們的爬蟲(chóng)更像爬蟲(chóng),我們讓它找到頁(yè)碼導(dǎo)航中的下一頁(yè)的鏈接。

參考博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 作者:xlzd 鏈接:https://zhuanlan.zhihu.com/p/20423182 來(lái)源:知乎 著作...
    idealfeng閱讀 810評(píng)論 0 1
  • 這兩天摸索了下scrapy,剛看文檔的時(shí)候覺(jué)得有點(diǎn)生無(wú)可戀,scrapy框架個(gè)人還是覺(jué)得比較難懂的,需要學(xué)習(xí)的地方...
    Treehl閱讀 5,847評(píng)論 7 10
  • 這是全棧數(shù)據(jù)工程師養(yǎng)成攻略系列教程的第九期:9 實(shí)戰(zhàn) 爬取豆瓣電影數(shù)據(jù)。 掌握了爬蟲(chóng)的基本原理和代碼實(shí)現(xiàn),現(xiàn)在讓我...
    宏倫工作室閱讀 5,090評(píng)論 2 15
  • 人從出生到死亡,這中間要經(jīng)歷嬰兒、兒童、少年、青年、老年、這五個(gè)階段。 這五個(gè)階段將人生這杯無(wú)色無(wú)味的白開(kāi)水渲染的...
    花的世界不美好閱讀 214評(píng)論 0 0
  • 哇咔咔,昨天約的 今天就去考了,一共跑了3圈,過(guò)了算是萬(wàn)幸。嘿嘿,下周應(yīng)該就能拿到本,這個(gè)考官還算不錯(cuò),有個(gè)女的出...
    噠啦咘啦啦閱讀 146評(píng)論 0 0

友情鏈接更多精彩內(nèi)容