爬虫笔记03

PS:仅为本人笔记

使用requests 爬豆瓣影评

import re
import requests
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'}
douLists=[]

获取单个页面的信息

def getDou(url):
    # 获取页面
    res=requests.get(url,headers=headers)
    # print(res.text)
    # 获取电影名字
    movies=re.findall('class="main review-item".*?title="(.*?)".*?</div>',res.text,re.S)
    # print(movie)
    # 用户ID
    u_ids=re.findall('class="main review-item".*?class="name">(.*?)<.*?</div>',res.text,re.S)
    # print(u_id)
    # 影评标题
    titles=re.findall('class="main review-item".*?class="main-bd".*?<a href.*?">(.*?)</a>',res.text,re.S)
    # print(title)
    # 使用zip函数将上述获得的数据的对应元素放在一起
    # 如将[1,2]、['a','b']变成[(1,'a'),(2,'b')]形式,以便对每个元素迭代
    for movie,u_id,title in zip(movies,u_ids,titles):
        # 获得每条影评的数据
        info={
            'movie':movie,
            'u_id':u_id,
            'title':title
        }
        douLists.append(info)

产生数个页面URL,保存数据

#列表表达式['https://movie.douban.com/review/best/?start={}'.format(str(i*20)) for i in range(10)]
urls=url
# print(urls)
for url in urls:
    getDou(url)
# 将数据保存在dou.txt
    for dou in douLists:
        # print(dou)
        # movie='电影名字:'+dou['movie']
        # u_id='用户ID:'+dou['u_id']
        # title='影评标题:'+dou['title']

        f=open('./dou.txt','a+',encoding='utf-8')
        try:
            f.write('电影名字:'+dou['movie']+'\n\n')
            f.write('用户id:'+dou['u_id'] + '\n\n')
            f.write('影评标题:'+dou['title'] + '\n\n')
            f.close()
        except UnicodeEncodeError:
            pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值