这是一个很好的新手练习项目,爬取豆瓣top250的电影,并分别记录排名、片名、导演、主演、评论等信息,保存在一个txt文档里。
对新手来说,难点部分在于如何找到并成功跳转到下一页,并且在最后一页的时候识别出来并停止爬虫。
一个很基础的爬虫。以下是代码部分。
注:想学习Python的小伙伴们 可以 进群:984632579 领取从0到1完整学习资料 视频 源码 精品书籍 一个月经典笔记和99道练习题及答案
import requests
from bs4 import BeautifulSoup
import time
import re
lurl = ‘https://movie.douban.com/top250’
movie = []
def getlist(listurl):
time.sleep(2)
headers = {‘User-Agent’: ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36’}
res = requests.get(listurl)
soup = BeautifulSoup(res.text, ‘html.parser’)
movielist = soup.select(‘.grid_view li’)
for m in movielist:
rank = m.select(’em’)[0].text
title = m.select(‘.title’)[0].text
direct = m.select(‘.info .bd p’)[0].text.strip()
actor = ‘主演:’.join(direct.split(‘ 主演:’))
director = ‘年代:’.join(actor.split(‘ ‘))
if m.select(‘.inq’):
comments = m.select(‘.inq’)[0].text.strip()
else:
comments = ‘None’
movie.append(‘排名: ‘+ rank+ ” +’片名: ‘+ title + ”+ director + ” + ‘评论: ‘+ comments +” + ”)
if soup.select(‘.next a’):
asoup = soup.select(‘.next a’)[0][‘href’]
Next_page = lurl + asoup
getlist(Next_page)
else:
print(‘结束’)
return movie
movies = getlist(lurl)
with open(‘movie.txt’, ‘w’) as m:
for a in movies:
m.write(a)