爬取豆瓣TOP50

import requests
from bs4 import BeautifulSoup
import time
import json
#定义执行函数

def result():
#定义起始url的page参数和终了的page参数,并在参数符合条件的情况下进行循环
    page=0
    pages=250
    while page<=pages:
    #豆瓣的url是可以通过改变start的参数实现的
        url=f'https://movie.douban.com/top250?start={page}&filter='
        print('正在爬取%s'%{url})
        html=requests.get(url=url,headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36 Edge/18.18363'}).text
        soup=BeautifulSoup(html,'lxml')
        print(soup)
        ol=soup.find('ol')
        lis=ol.find_all('li')
        #读出每一步电影的信息,并把换位符、空格等去掉,并写入txt文件中
        for li in lis:
          content=[li.find('em').text.strip(),
                  li.select('a')[1].text.replace('\n',''),
                  ''.join(li.find('p').text.replace('\n','').split()),
                  li.select('span.rating_num')[0].text.strip(),
                  li.select('div.star span')[3].text.strip()
                  ]
          write_to_file(content)         
        page+=25
        time.sleep(1)
    else:
        print('爬取完毕')
        
#定义写入函数,将电影的信息写入txt文件
def write_to_file(content):
    with open('doubanTOP250.txt','a',encoding='utf-8') as f:
        for i in content:
            f.write(json.dumps(format(i).strip())+ 20*' ')
        f.write('\n')
        
def main():
    result()
    
if __name__=='__main__':
    main()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值