需要用到的包有:
requests 发起GET请求
bs4.BeautifulSoup 解析网页
fake_useragent.UserAgent 随机用户代理
以《小鬼当家2》为例搜索字幕资源:
需要注意的地方有:
搜索结果的URL格式是 http://www.zimuku.la/search?q=电影名称
这个页面并没有显示所有资源,因为还有 “点击查看” 字样
这个页面需要一个类似于ID的东西,目前我们不知道。而且,我们不能保证是不是每次搜索都需要额外的跳转展开资源列表。所以,我们还是从前一个页面入手。
F12 检查元素,可以发现,资源列表的位置:
它位于 div[class="sublist"] 标签内的表格中,我们使用 BeautifulSoup 定位到这个表格:
html = BeautifulSoup(reponse.text, 'lxml')
sublist = html.select_one('div[class="sublist"]')
sublist = sublist.select('tr')
sublist 是 tr 标签的列表,它分别对应着图中的资源条目。观察 tr 标签的 class 属性,前五个 tr 标签都是 odd 或者 even,它们表示 tr 标签所在位置的奇偶性。第六个 tr 标签的 class 值为 msub,这似乎不同寻常。事实上,它表示的是 more subtitles。
查看 tr[class=“msub”] 这个标签我们可以发现它提供了一个链接指向了列举所有资源条目那个页面。所以我们的策略是:
如果结果页中没有 tr[class=“msub”] 标签,直接解析结果页的资源条目;
如果结果页中有 tr[class=“msub”] 标签,拿到它里面的URL,解析这个URL对应页面的条目。
解析资源条目的代码如下:
title = "小鬼当家2"
url = "http://www.zimuku.la/search?q={}".format(title)
response = get_with_ntries(url, session=sess