吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3540|回复: 24
收起左侧

[Python 转载] Python入坑的第一周,爬取豆瓣电影Top250

[复制链接]
lifeixue 发表于 2021-4-30 18:07
print("人生苦短,我用Python")应了这句话,于是我下定决心自学Python,开启了入坑之旅
一开始没有方向,没有高人的指点,于是我开始加群、买书、度娘、求教程.......才发现前路坎坷,并没有想象中的那么容易
经过一周的不断学习,弯路虽然走了不少,但好歹也有了一些成果,写出了第一个能正常运行的程序(爬取豆瓣电影Top250)
对于我这样的小白来说,如何高效开心的入坑到最后,还望各位不吝赐教
话不多说,分享一下成果,(代码很烂,心里很清楚)
[Python] 纯文本查看 复制代码
# 需要添加的模块
from bs4 import BeautifulSoup
import re
import urllib.request


def main():
    baseurl = "https://movie.douban.com/top250?start="  # 爬取豆瓣
    top250 = getData(baseurl)
    saveData(top250)


movie_Name = re.compile(r'<span class="title">(.*?)</span>')  # 电影名称
movie_Link = re.compile(r'<a href="(.*?)">')  # 电影链接
movie_Img = re.compile(r'<img.*src="(.*?)"', re.S)  # 图片链接
movie_Rating = re.compile(r'<span class="rating_num" property="v:average">(.*?)</span>')  # 评分
movie_Judge = re.compile(r'<span>(\d*)人评价</span>')  # 评价人数
movie_survey = re.compile(r'<span class="inq">(.*?)</span>')  # 电影概况
movie_info = re.compile(r'<p class="">(.*?)</p>', re.S)  # 相关信息


# 1.爬取网页
def add(baseurl):
    head = {
        "User-Agent": "Mozilla/5.0(Windows NT 10.0;Win64;x64) AppleWebKit/537.36(KHTML, likeGecko) Chrome/71.0.3578.98 Safari/537.36"
    }  # 模拟浏览器
    request = urllib.request.Request(url=baseurl, headers=head)
    response = urllib.request.urlopen(request)
    html = response.read().decode("utf-8")
    return html


# 2.获取数据
def getData(baseurl):
    datalist = []
    for i in range(0, 10):
        url = baseurl + str(i * 25)
        gain = add(url)
        soup = BeautifulSoup(gain, "html.parser")
        for item in soup.find_all("div", class_="item"):  # 截取网页
            item = str(item)
            name = re.findall(movie_Name, item)[0]  # 电影名,使用正则来匹配内容(逐一解析)
            link = re.findall(movie_Link, item)[0]  # 电影链接
            img = re.findall(movie_Img, item)[0]  # 图片链接
            rating = re.findall(movie_Rating, item)[0]  # 评分
            judge_num = re.findall(movie_Judge, item)[0]  # 评价数量
            survey = re.findall(movie_survey, item)  # 概况
            if len(survey) != 0:
                survey = survey[0].replace("。", "")  # 去掉句号
            else:
                survey = ""  # 留空
            info = re.findall(movie_info, item)[0]  # 相关信息
            info = re.sub("/", " ", info)  # 替换/
            info = re.sub(r" + |\xa0|\n|<br >", "", info)  # 去掉其他
            data = [name, link, img, rating, judge_num, survey, info]  # 保存数据
            datalist.append(data)  # 追加到列表
    return datalist


# 3. 保存数据
def saveData(top250):
    f = open("豆瓣Top250.txt", "w", encoding='utf-8')
    for i in range(0, 249):
        print("已存储第%d条影片信息" % (i+1))
        data = top250[i]
        movie = str(data)
        f.write(movie + "\n")  # 写入内容
    f.close()


if __name__ == '__main__':
    main()
    print("人生苦短,我用Python")


# 爬取豆瓣电影Top250
# 存储方式:保存到txt文本
# 使用了3个模块
from bs4 import BeautifulSoup
import re
import urllib.request
源码: 爬取豆瓣Top250.zip (1.46 KB, 下载次数: 76)

免费评分

参与人数 4吾爱币 +3 热心值 +4 收起 理由
0821fzh + 1 + 1 谢谢@Thanks!
zhudengjie + 1 + 1 用心讨论,共获提升!
卢布 + 1 + 1 用心讨论,共获提升!
ZCCYS + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

shqvc 发表于 2021-5-27 10:27
你很不错了  我也想学  不知道怎么入门  英文没有及格过  看到这一串串的字母   头疼     你真的已经很不错了   加油
酸奶0990 发表于 2021-4-30 18:16
hqt 发表于 2021-4-30 18:20
牛逼
不能运行的小伙伴 现在cmd里输入 pip install bs4
可解决

豆瓣Top250.txt

80.05 KB, 下载次数: 17, 下载积分: 吾爱币 -1 CB

哈利菜菜 发表于 2021-4-30 18:27
佩服佩服,,这么快就能爬网站了
头像被屏蔽
xiaohuihui2 发表于 2021-4-30 18:34
提示: 作者被禁止或删除 内容自动屏蔽
寒一七 发表于 2021-4-30 18:48
我看了快一个月了,还没你这水平
dzzqz2012 发表于 2021-4-30 18:54
向楼主学习
icy200456 发表于 2021-4-30 18:56
一个星期就可以爬网站好强额
筱木头 发表于 2021-4-30 18:56
寒一七 发表于 2021-4-30 18:48
我看了快一个月了,还没你这水平

我看了二个月了,也不行
Anyling 发表于 2021-4-30 19:09
这么强悍,确定是小白?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 15:33

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表