python爬取某电影网站,获取其磁力链接
本帖最后由 bigplumtree 于 2019-8-16 17:06 编辑跟着小甲鱼学习1个月,最后写了个爬虫{:10_297:}
并且运行成功!{:10_279:} ,非常高兴
代码返回的结果是类似这样的
黑衣人:全球追缉 HD1280高清国语|原声中字版 https://www.80s.la/movie/26330 thunder://QUFodHRwOi8vYW5uaW5nLmx1YW5uaWFvLXp1aWRhLmNvbS8xOTA3L0hZ5Lq677yaUVHov73nvIkuSEQxMjgw6auY5riF5Lit5a2X6Z+p54mILm1wNFpa
大清十二刑 HD1280高清国语中字版 https://www.80s.la/movie/27920 磁力链接暂时没有
博多之子 HD1280高清中英双字版 https://www.80s.la/movie/27902 thunder://QUFodHRwOi8veHVubGVpLnhpYXphaS16dWlkYS5jb20vMTkwOC/ljZrlpJrkuYvlrZAuSEQxMjgw6auY5riF5Lit6Iux5Y+M5a2X54mILm1wNFpa
static/image/hrline/5.gif
以下为代码
import requests
from bs4 import BeautifulSoup
import time
'''爬取的网站是80s电影网,可以打开这个网站看下的他的结构'''
# 这三个url是电影栏目的url,
# 为了以后能在其他栏目下爬取,
# 所以给他拆开了
url_before = 'https://www.80s.la'
url_type = '/movie'
url_after = '/list/-----p'
# 只做了浏览器头的伪装,没有使用代理
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
# 获取电影栏目下,每页的所有电影名称,清晰度和电影详细页地址
# 传入的值为电影栏目下,每一页的url
# 以字典的形式返回{'电影名称':['清晰度','详细页']}
def get_movie_list(moive_list_url):
# 定义这个函数返回的字典
movie_dict = {}
# 请求这个网址,并使用BeautifulSoup解析
req = requests.get(moive_list_url,headers=header)
html = req.text
html_bs = BeautifulSoup(html,'lxml')
# 这个url,每页展示的所有电影都在ul标签下
# 限定的条件可以使用浏览器找出来
# 返回内容是li标签的大集合
# 每页都会有5*5=25个电影,也就是25个li标签
label_li = html_bs.find('ul',class_="me1 clearfix")
# 根据li标签的大集合,找出每个li标签,以列表形式返回
movie_list = label_li.find_all('li')
# 遍历每个li标签,提取出需要的内容,可以用浏览器看下li标签的结构
for per_li in movie_list:
type = per_li.find_all('span').string.strip()
url = url_before + per_li.a.attrs['href']
name = per_li.a.attrs['title']
# 将组合的内容存入字典中
movie_dict =
return movie_dict
# 获取电影详细页面内的迅雷磁力链
# 传入每一个详细页的url
# 返回该页面内电影的磁力链
def get_movie_info(movie_info_url):
# 请求详细页,并使用BeautifulSoup解析
req = requests.get(movie_info_url,headers=header)
html = req.text
html_bs = BeautifulSoup(html,'lxml')
# 获取详细页面内的磁力链,可以打开浏览器查看,磁力链的位置,找到这个标签
xunlei = html_bs.find('a', onclick="return OnDownloadClick_Simple(this,2,4)")
# 有的电影没有下载资源,上面会返回None,这里做个判断
# 有磁力链的话就返回磁力链,没有就返回自定义字符串
if xunlei == None:
cili = '磁力链接暂时没有'
else:
cili = xunlei.attrs['href']
return cili
print('--------------准备获取网站信息--------------')
# 这里是准备爬取的页面,可以打开电影栏目页面,看下一共有多少页
for page in range(5,10):
# 组装url
url = url_before + url_type + url_after + str(page)
print('正在获取' + url + '页面信息,请稍后....')
# 获取该页面下所有的电影资源,字典类型
# {'电影名称':['清晰度','详细页']}
movie_list_per_page = get_movie_list(url)
# 获取该页面下所有的电影名称,也就是字典的键
allmovie_names = movie_list_per_page.keys()
# 打开文件,用来存这些爬到的内容
# 在这里做打开,而不在写入文件的时候做,
# 我的想法是,下面是一个循环,每循环一次就打开关闭一次,太浪费资源
# 不知道我的想法对不对
with open('E:\\80s1.txt','a+') as file:
# 遍历电影名称
for movie_name in allmovie_names:
# 以电影名称获取电影类型
movie_type = movie_list_per_page
# 以电影名称获取电影详细页url
movie_url = movie_list_per_page
# 传入电影详细页url获取磁力链
cili = get_movie_info(movie_url)
# 组装要写入文件的信息
text = movie_name + ' ' + movie_type + ' ' + movie_url + ' ' + cili + '\n'
# 写入文件,每次写入都直接写入,不放在缓冲区
file.write(text)
file.flush()
print(movie_name+'写入完成')
# 以防打开网页的速度太快,被服务器封掉ip
# 所以每完成一次就,休息2秒
time.sleep(2)
手动挽尊 学习 SSLError: HTTPSConnectionPool(host='www.80s.la', port=443): Max retries exceeded with url: /movie/list/-----p5 (Caused by SSLError(SSLCertVerificationError("hostname 'www.80s.la' doesn't match 'www.zimuku.cn'")))
运行错误,怎么回事 学习了,谢谢分享。 有多少人试过了 ,刚才看网站都打不开了
页:
[1]