开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 19773|回复: 4
收起左侧

[源码分享] 最简单的爬虫新手看完会有收获

[复制链接]
结帖率:0% (0/4)
发表于 2020-7-20 19:06:39 | 显示全部楼层 |阅读模式   江西省赣州市
#最简单的爬虫,,,新手学习可用这两个库 可以在命令行里面输入:pip install requests和pip install BeautifulSoup4进行自动安装
import requests
import bs4#BeautifulSoup4
import re
#定义类
class DouBanGet:
    def __init__(self,url):
        self.url=url
        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}
        self.res = requests.get(self.url, headers=self.headers)
        self.soup = bs4.BeautifulSoup(self.res.text, "html.parser")
    def getTitle(self):#获取标题
        targets = self.soup.find_all("div", class_="hd")
        t = []
        for each in targets:
            t.append(each.a.span.text)
        return t
    def getRating_num(self):#获取评分
        targets = self.soup.find_all("span", class_="rating_num")
        t = []
        for each in targets:
            t.append(each.text)
        return t
    def getBrief(self):#获取简介
        targets = self.soup.find_all("div", class_="bd")
        t = []
        for each in targets:
            if each.p.text!="豆瓣":
                t.append(each.p.text)
        return t
    def getPic(self):#获取海报地址
        targets = self.soup.find_all("div", class_="pic")
        t = []
        for each in targets:
            t.append(each.a.img['src'])
        return t
    def getCount(self):#获取数量
        targets = self.soup.find("span", class_="count")
        # 正则表达式取数字
        return re.sub("\D", "", targets.text)



#开始获取-------------------------------------------------
db1=DouBanGet("https://movie.douban.com/top250")
num=int(db1.getCount())#获取页数
num=num//25#整除
text=""#结果文本初始化
for i in range(num):
    #每隔25个为一页
    url="https://movie.douban.com/top250?start=%d" % (i*25)
    db = DouBanGet(url)
    title=db.getTitle()#标题
    rating_num=db.getRating_num()#评分
    brief=db.getBrief()
    pic=db.getPic()#海报地址
    print(len(brief))
    for n in range(len(title)):
        text=text+title[n]+"|"+rating_num[n]+"|"+brief[n]+"|"+pic[n]+"\r\n" #按照格式组合成一行
        print(title[n]+"|"+rating_num[n]+"|"+brief[n]+"|"+pic[n])#调试输出
#最后保存到桌面
f=open(r"C:\Users\Administrator\Desktop\top250.txt",'wb')
f.write(bytes(text.encode("utf-8")))#有中文就需要转码
f.close()











豆瓣爬虫类.zip (1.17 KB, 下载次数: 13)
发表于 2022-8-25 15:19:21 | 显示全部楼层   广东省佛山市
最简单的爬虫新手看完会有收获
回复 支持 反对

使用道具 举报

发表于 2022-7-21 09:10:29 | 显示全部楼层   河南省商丘市
看着并不简单
回复 支持 反对

使用道具 举报

发表于 2020-8-11 08:37:52 | 显示全部楼层   广东省广州市
谢谢分享
回复 支持 反对

使用道具 举报

签到天数: 8 天

发表于 2020-7-20 20:32:32 | 显示全部楼层   广东省东莞市
谢谢分享!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

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