bigplumtree 发表于 2019-8-16 17:03:16

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)

bigplumtree 发表于 2019-8-19 10:07:28

手动挽尊

马冬梅 发表于 2019-10-3 21:25:09

学习

蛋蛋从0开始 发表于 2019-10-27 15:49:15

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'")))
运行错误,怎么回事

tarchen 发表于 2019-11-1 11:46:08

学习了,谢谢分享。

客官这边请 发表于 2019-11-1 20:24:08

有多少人试过了 ,刚才看网站都打不开了
页: [1]
查看完整版本: python爬取某电影网站,获取其磁力链接