文档章节

豆瓣电影TOP250和书籍TOP250爬虫

i
 innerpeacez
发布于 2019/09/24 17:39
字数 617
阅读 12
收藏 0

豆瓣电影 TOP250 和书籍 TOP250 爬虫

最近开始玩 Python , 学习爬虫相关知识的时候,心血来潮,爬取了豆瓣电影TOP250 和书籍TOP250, 这里记录一下自己玩的过程。

电影 TOP250 爬虫
import requests
from bs4 import BeautifulSoup
import time


def getlist(list_url):
    time.sleep(2)
    res = requests.get(list_url)
    soup = BeautifulSoup(res.text, 'html.parser')
    movie_list = soup.select('.grid_view li')
    for m in movie_list:
        rank = m.select('em')[0].text
        score = m.select('.rating_num')[0].text
        title = m.select('.title')[0].text
        direct = m.select('.info .bd p')[0].text.strip()
        actor = '\n主演:'.join(direct.split('   主演:'))
        director = '年代:'.join(actor.split('                           '))
        if m.select('.inq'):
            comments = m.select('.inq')[0].text.strip()
        else:
            comments = 'None'
        movie.append(
            '排名: ' + rank + '\n'
            + '评分: ' + score + '\n'
            + '片名: ' + title + '\n'
            + director + '\n'
            + '评论: ' + comments + '\n'
            + '\n')
    if soup.select('.next a'):
        asoup = soup.select('.next a')[0]['href']
        next_page = seed_url + asoup
        getlist(next_page)
    else:
        print('结束')
    return movie


def write(movies):
    with open('movie.txt', 'w', encoding='utf8') as m:
        for a in movies:
            m.write(a)


def main():
    write(getlist(seed_url))
    pass


if __name__ == '__main__':
    seed_url = 'https://movie.douban.com/top250'
    movie = []
    main()
书籍 TOP250 爬虫
import bs4
import requests
import re
from bs4 import BeautifulSoup
from operator import itemgetter


def getHtmlText(url):
    try:
        r = requests.get(url)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        return r.text
    except:
        return ""


def parserText(text, book_list):
    soup = BeautifulSoup(text, 'html.parser')
    for table in soup('table', {'width': '100%'}):
        if isinstance(table, bs4.element.Tag):
            tds = table.find('tr')('td')
            divs = tds[1]('div')
            content = {}
            for div in divs:
                if isinstance(div, bs4.element.Tag):
                    if div.find('a'):
                        name = div.find('a').attrs['title']
                        content.update({"书名": name})
                    if div.select('.rating_nums'):
                        score = div.select('.rating_nums')[0].text
                        content.update({"评分": score})
                    if div.select('.pl'):
                        people_num = div.select('.pl')[0].text
                        regex = re.compile(r'[\d]{1,10}')
                        content.update({"评价人数": regex.findall(people_num)[0]})

            ps = tds[1]('p')
            for p in ps:
                if isinstance(p, bs4.element.Tag):
                    if p.attrs['class'][0] == 'quote':
                        description = p.find('span').string
                        content.update({"介绍": description})
                    if p.attrs['class'][0] == 'pl':
                        author = p.string
                        content.update({"作者信息": author})

            book_list.append(content)

    next_books = soup.find('span', {'class': 'next'})
    if next_books.find('a'):
        a = next_books.find('a').attrs['href']
        text = getHtmlText(a)
        parserText(text, books)

    return book_list


def sortedBookTop250(book_list):
    tmp = sorted(book_list, key=itemgetter('评分'), reverse=True)
    for i in range(len(tmp)):
        tmp[i].update({"排名": i + 1})
    return tmp


def writeToFile(book_list):
    with open('good_books.txt', 'w', encoding='utf8') as book_file:
        for book in book_list:
            for key, value in book.items():
                book_file.write(f'{key}:{value}\n')
            book_file.write('\n')
    pass


def main():
    text = getHtmlText(seed_url)
    book_list = parserText(text, books)
    writeToFile(sortedBookTop250(book_list))
    pass


if __name__ == '__main__':
    seed_url = "https://book.douban.com/top250"
    books = []
    main()

总结

> - 点击查看我的Github > - 点击查看我的个人Blog > - 日拱一卒,不期速成

以上直接贴出了代码,这是很简单的两段代码,主要用到了 requests 库和 beautifulsoup 库,需要的可以直接拿去,或者直接去我的 GIthub上拿 movies.txtgood_books.txt

© 著作权归作者所有

i
粉丝 0
博文 11
码字总数 11105
作品 0
杭州
私信 提问
加载中

评论(0)

用Python分析豆瓣电影TOP250

既然要分析豆瓣电影TOP250, 那么肯定就要把相关的数据采集下来,比如排名、电影名、导演、主演等信息。 那就肯定使用一下爬虫咯,如果还不会的话,欢迎看之前的文章: Python爬虫学习(一)...

Viljw
2018/01/14
0
0
Python爬取豆瓣电影TOP250

闲来无事温故了下BeautifulSoup和requests,之后又写了个简单的爬虫,网址豆瓣TOP250电影 先附上关键模块文档,对新手还是比较友好的! BeautifulSoup文档 Requests文档 这次不总结详细的过程...

Treehl
2017/11/14
0
0
用23行代码爬取豆瓣音乐top250

学习.png 网上有各种爬取豆瓣电影top250的教程,虽然豆瓣音乐top250和豆瓣电影top250的爬取十分类似,但是我大致对比了一下,我这种方法应该是最简单的,仅需要23行代码。 豆瓣对于爬虫十分友...

爱吃西瓜的番茄酱
2017/12/19
0
0
爬取豆瓣电影排名前250部电影并且存入Mongo数据库

需求:爬取豆瓣电影top250(https://movie.douban.com/top250)的电影数据: 标题(title ),电影评分(score),电影信息(content),简介 info。 一、分析页面,用xpath得到相应的数据 ...

丁典
2018/07/12
100
0
零基础的我是这样开始写Python爬虫的(附代码)

来源:程序猿 本文长度为2863字,建议阅读5分钟 本文为你分享零基础开始写爬虫的经验。 刚开始接触爬虫的时候,简直惊为天人,十几行代码,就可以将无数网页的信息全部获取下来,自动选取网页...

enohtzvqijxo00atz3y8
2017/12/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

渲染学习笔记——各种测试

1.模板测试 每个像素点都有颜色缓冲区。模板缓冲区和深度缓存区记录了像素的模板值和深度值。一个片元舍弃与否都可以更新模板缓冲区中的值。 2.深度测试 没通过深度缓冲的片元无法改变深度缓...

myctrd
14分钟前
48
0
(零)从零编写PHP容器

说明 一、前置 杂谈 关于造轮子 关于编写项目 必要知识 IOC DI Reflection * ReflectionClass * ReflectionObject * ReflectionMethod * ReflectionFunction * ReflectionProperty 拓展知识点......

calject
16分钟前
42
0
广西快3三连号最大遗漏

广西快3三连号最大遗漏 7.1.8 .5.4.7 .5.6.7

kk369369
16分钟前
33
0
linux基础第七周

1、简述OSI七层模型和TCP/IP五层模型 物理层 在OSI参考模型中,物理层(Physical Layer)是参考模型的最低层,也是OSI模型的第一层。 物理层的主要功能是:利用传输介质为数据链路层提供物理...

大雨雨雨雨雨
19分钟前
37
0
远程桌面连接服务器工具下载页面

远程桌面连接服务器工具下载页面: 远程桌面连接工具 添加机器:

汉美丽
21分钟前
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部