我这里就以女神王祖贤的海报来作为例子。
翻页分析
在豆瓣电影中搜索“王祖贤”,进入王祖贤主页后,点击全部影人图片,进入到影人图片页面。
在该页面点击下一页,可以看到浏览器的 URL 变化如下:
https://movie.douban.com/celebrity/1166896/photos/?type=C&start=30&sortby=like&size=a&subtype=a
继续使用 Postman 来分析 URL,可以很轻松的得知,start 就是类似于 page 的页数控制参数,而且步长为 30,即第一页是 start = 0,第二页为 start = 30,第三页为 start = 60,以此类推。
详情页分析
使用 Network 来查看页面上的图片信息:
这里我们得到了两个信息:
- a 标签中的链接可以得到每张图片的评论信息;
- img 标签中的链接可以用来保存女神的海报。
对于这两个信息 url,可以分别返回:
'''
更多Python学习资料以及源码教程资料,可以在群1136201545免费获取
'''
def get_posters():
comment_url_list = []
picture_list = []
for i in range(0, 40000, 30):
url = 'https://movie.douban.com/celebrity/1166896/photos/?type=C&start=%s&sortby=like&size=a&subtype=a' % str(i)
req = requests.get(url).text
content = BeautifulSoup(req, "html.parser")
chekc_point = content.find('span', attrs={'class': 'next'}).find('a')
if chekc_point != None:
data = content.find_all('div', attrs={'class': 'cover'})
for k in data:
ulist = k.find('a')['href']
plist = k.find('img')['src']
comment_url_list.append(ulist)
picture_list.append(plist)
else:
break
return comment_url_list, picture_list
之后,就可以下载海报了。
评论获取
然后我们手动跳转到每周海报的详情页面,继续查看评论信息。
通过 BeautifulSoup 可以很容易地获得评论信息,然后保存到 MongoDB 中。
def get_comment(comment_l):
client = pymongo.MongoClient('mongodb://douban:douban1989@ds149744.mlab.com:49744/douban')
db = client.douban
mongo_collection = db.comment
comment_list = []
comment = []
print("Save to MongoDB")
for i in comment_l:
response = requests.get(i).text
content = BeautifulSoup(response, "html.parser")
tmp_list = content.find_all('div', attrs={'class': 'comment-item'})
comment_list = comment_list + tmp_list
for k in comment_list:
tmp_comment = k.find('p').text
mongo_collection.insert_one({'comment': tmp_comment})
comment.append(tmp_comment)
print("Save Finish!")