01_豆瓣

序言

2017,定下一个小目标,深度学Python~

爬取对象

抓取豆瓣电影Top250

使用包

import codecs  #非必须,用于指定创建记录爬取文件字符集
import requests #数据抓取
from bs4 import BeautifulSoup #抓取内容解析

实现步骤

1、编写抓取伪代码
url = 'https://www.douban.com/'
webPage = requests.get(url).text
soup = BeautifulSoup(webPage,"html.parser")
print(soup.title)  # <title>豆瓣</title>
2、抓取对象分析
  • 通过F12捕获页面内容得知待抓取内容以列表形式显示在grid_view中,每“行”主要分为左侧图片、右侧电影名称等文本介绍
    肖申克的救赎
  • 分析翻页机制,重点关注不同页间URL区别
    翻页
3、电影名称抓取实现
import codecs  #非必须,用于指定创建记录爬取文件字符集
import requests #数据抓取
from bs4 import BeautifulSoup #抓取内容解析

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

def download_page(url):
    return requests.get(url, headers={
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
    }).content

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

    movie_name_list = []

    print("当前准备解析页码:" + soup.find('span', attrs={'class': 'thispage'}).getText())

    top_num = 1 + (int(soup.find('span', attrs={'class': 'thispage'}).getText())-1) * 25

    for movie_li in movie_list_soup.find_all('li'):
        detail = movie_li.find('div', attrs = {'class': 'hd'})

        movie_name_list.append("## Top " + str(top_num))

        #名称
        movie_name = ""

        for sp in detail.find_all('span', attrs={'class': 'title'}):
            movie_name += sp.text

        img = movie_li.find('div', attrs={'class': 'pic'}).find('a').find('img')

        movie_name_list.append("### "+ movie_name )

        top_num +=1

    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('douban_moviesList_top250.md', '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()
电影名称
4、基于名称,补充剩余信息解析
  • 封面解析示意
        img = movie_li.find('div', attrs={'class': 'pic'}).find('a').find('img')
        
        try:
            img_req = requests.get(img["src"], timeout=20)
            img_localhost = 'douban_moviesList_top250\\'+str(top_num)+ '.jpg'
            with open(img_localhost, 'wb') as f:
                f.write(img_req.content)

            movie_name_list.append('![](douban_moviesList_top250/'+str(top_num)+'.jpg "douban_moviesList_top250")')
            
        except requests.exceptions.ConnectionError:
            print('【错误】当前图片无法下载,失效地址为:' + img["src"])

总结

因豆瓣大部分均为静态页面,相对较为简单,主要涉及翻页循环、图片抓取异常处理、BeautifulSoupfindfind_all使用......
好了,到此结束,我是不会承认我会抓取豆瓣妹子什么的......
完整代码

豆瓣Top250
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,264评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,549评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,389评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,616评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,461评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,351评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,776评论 3 387
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,414评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,722评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,760评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,537评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,381评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,787评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,030评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,304评论 1 252
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,734评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,943评论 2 336

推荐阅读更多精彩内容