爬取豆瓣电影TOP250 - 完整示例代码

目标网站: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 模拟浏览器访问,防止被服务器认为是爬虫而拒绝访问。
②一般在我们确定内容的前提下,可以直接在代码中写死如何跳转页面,但是为了让我们的爬虫更像爬虫,我们让它找到页码导航中的下一页的链接。

参考博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 作者:xlzd 链接:https://zhuanlan.zhihu.com/p/20423182 来源:知乎 著作...
    idealfeng阅读 4,055评论 0 1
  • 这两天摸索了下scrapy,刚看文档的时候觉得有点生无可恋,scrapy框架个人还是觉得比较难懂的,需要学习的地方...
    Treehl阅读 10,990评论 7 10
  • 这是全栈数据工程师养成攻略系列教程的第九期:9 实战 爬取豆瓣电影数据。 掌握了爬虫的基本原理和代码实现,现在让我...
    宏伦工作室阅读 10,419评论 2 15
  • 人从出生到死亡,这中间要经历婴儿、儿童、少年、青年、老年、这五个阶段。 这五个阶段将人生这杯无色无味的白开水渲染的...
    花的世界不美好阅读 1,490评论 0 0
  • 哇咔咔,昨天约的 今天就去考了,一共跑了3圈,过了算是万幸。嘿嘿,下周应该就能拿到本,这个考官还算不错,有个女的出...
    哒啦咘啦啦阅读 1,130评论 0 0

友情链接更多精彩内容