【爬虫实战】Python爬取“磁力熊”网站
蚂蚁学Python
共 648字,需浏览 2分钟
·
2021-11-07 08:51
最近跟随蚂蚁老师学习了用flask框架开发web项目以及爬虫,我就打算自己开发一个电影网站练练手,其中很重要的一步就是获取电影资源。
于是我就从网上找到了一个叫“磁力熊”的网站获取资源
网站:https://www.cilixiong.com/movie/
第一步:我们需要获取这个网站里面的每个分页的HTML代码
所以得找网站分页的规律
可以发现,除了第一页以外,都可以用https://www.cilixiong.com/movie/index_页数.html的方式得到,第一页是https://www.cilixiong.com/movie/index.html
第二步,找每个电影的信息藏在何处
通过浏览器的“检查元素“功能查看页面的html代码,可以发现每页的电影信息都藏在了
这个区域内
更进一步发现,所有电影的缩略图都在
下的
浏览
171内的若干个div区域中
对其中一个电影缩略图进行分析,发现电影的详情页面就在这些div区域中的a标签里
电影的名字和电影封面图,都可以分别在img标签里的alt和data-original中得到
第三步,查看电影详情信息
对html代码进行分析,可以发现电影的详细信息都在标签中
第0个span标签是电影名称,第1个是豆瓣评分,第2个是上映日期...
而电影的下载地址则是在
第四步,根据上面的分析过程写代码
运行结果如下
源代码:
import requests
from bs4 import BeautifulSoup
# 目的url
url = "https://www.cilixiong.com/movie/index#d#.html"
# 要爬取的分页数量
pages_number = 2
for idx in range(1, pages_number + 1):
# 如果爬取第一页,把删掉就行了
if idx == 1:
temp_url = url.replace("#d#", "")
# 除了第一页以外的其它元素 用_页数来代替#d#
else:
temp_url = url.replace("#d#", f"_{idx}")
# 发起该分页的请求
r = requests.get(temp_url)
# 状态码要是不等于200就抛出异常
if r.status_code != 200:
print(r.status_code)
raise Exception()
# 设置编码为utf-8 防止乱码
r.encoding = "utf-8"
# 设置解析器
soup = BeautifulSoup(r.text, "html.parser")
# 根据上面所说的内容 设置具体解析内容 得到该分页下的所有电影内容
movie_list = (
soup.find("div", class_="masonry masonry-demos")
.find("div")
.find_all("div")
)
# 对该分页下的所有电影内容进行解析
for movie in movie_list:
a_tag = movie.find("a")
# 这就是每个电影详情的链接
link = a_tag.get("href")
img_tag = a_tag.find("figure").find("img")
# 电影名称
name = img_tag.get("alt")
# 电影封面图
img_url = img_tag.get("src")
# 对电影的详情信息发出请求
r = requests.get(link)
r.encoding = "utf-8"
soup = BeautifulSoup(r.text, "html.parser")
# 磁力链接
cili_link = soup.find("div", class_="tabs-container").find("a").get("href")
# 豆瓣得分
score = soup.find("span", class_="tiny-title").find("span").get_text()
print(f"电影名称:{name} 电影封面图:{img_url} 豆瓣得分:{score} 磁力链接:{cili_link}")
最后推荐下蚂蚁老师的爬虫课,干货十足:
扫码购买:Python开发简单爬虫实战
点击阅读原文,也可以到达目的地。
评论