python爬虫——爬取电影天堂磁力链接

编程入门 行业动态 更新时间:2024-10-11 15:17:13

爬虫:静态网页爬取

工具:pycharm,python3.6,火狐浏览器

模块:requests(可以使用pip install requests安装),re(不用安装)

网址:http://www.ygdy8/html/gndy/dyzz/index.html电影天堂

以火狐浏览器为例

复制影片名称,在网页源代码中查找,看能否找到。

查看页面源代码,Ctrl+f。

在网页源代码中,能够查找到内容。这样一般都是属于静态网页。查找不到,一般是动态网页。动态网页需要按F12,在network(网络)中查找。

随便点击一个电影,就会到电影详情界面。往下浏览会看到下载地址,磁力链。


这就是我们要获取的磁力链地址。

我们再看一下主页,看到下面的翻页界面。

我们点击第二页,观察一下网址。

这是前三页的网址。
首页网址是http://www.ygdy8/html/gndy/dyzz/index.html,与
http://www.ygdy8/html/gndy/dyzz/list_23_1.html是一样的

http://www.ygdy8/html/gndy/dyzz/list_23_1.html
http://www.ygdy8/html/gndy/dyzz/list_23_2.html
http://www.ygdy8/html/gndy/dyzz/list_23_3.html

编写代码,首先实现翻页功能,共有177页,我们利用for循环制造网址。
使用字符串拼接。打印查看网址。


for page in range(1,178):
    url='http://www.ygdy8/html/gndy/dyzz/list_23_'+str(page)+'.html'
    print(url)

我们可以得到177页的网址。

我们先分析一页,在里面查找磁链接。这样我们需要先进入详情页面,然后在里面找到磁链接。


看一下这个页面的网址:http://www.ygdy8/html/gndy/dyzz/20180804/57202.html
我们在http://www.ygdy8/html/gndy/dyzz/list_23_1.html的网页源代码里,查找一下20180804/57202看能否找到。

刚好找到这个网址。我们在网页源代码中把这个链接提取出来。得到详情页。
先访问,获取源代码


for page in range(1,2):
    url='http://www.ygdy8/html/gndy/dyzz/list_23_'+str(page)+'.html'
    print(url)
    html=requests.get(url)
    print(html)
    print(html.text)

发现获取到的源码有乱码,我们需要指定一下编码格式。
按F12查看元素

发现编码charset=gb2312

for page in range(1,2):
    url='http://www.ygdy8/html/gndy/dyzz/list_23_'+str(page)+'.html'
    print(url)
    html=requests.get(url)
    html.encoding="gb2312"
    print(html.text)

指定编码后,打印出来不再是乱码了。接下来提取网页源码中的信息,也就是详情页,网址是相对网址,不是完整网址("/html/gndy/dyzz/20180804/57202.html"),提取出来以后还需要拼接成完整的网址。
使用正则表达式提取。

data=re.findall('<a href="(.*?)" class="ulink">',html.text)  #返回的是列表
    print(data)

正则表达式(.*?)非贪婪匹配。加括号是提取出来
循环得到详情页完整网址

for m in data:
        xqurl = 'http://www.ygdy8'+m
        print(xqurl)

这样就得到一页中所有电影的详情页。我们随意找一个xqurl打开,都能看到电影的详细信息。接下来获取详情页的源代码。在源代码中利用正则表达式获取磁力连接。

		xqurl = 'http://www.ygdy8'+m
        #print(xqurl)

        html2=requests.get(xqurl)
        html2.encoding='gb2312'#指定编码
        #print(html2.text)
        dyLink = re.findall('<a href="(.*?)">ftp://.*?</a></td>',html2.text)[0]
        print(dyLink)


为了防止有些匹配不到信息,数组越界,我们使用try。

		xqurl = 'http://www.ygdy8'+m
        #print(xqurl)

        html2=requests.get(xqurl)
        html2.encoding='gb2312'#指定编码
        #print(html2.text)
        try:
            dyLink = re.findall('<a href="(.*?)">ftp://.*?</a></td>',html2.text)[0]
            print(dyLink)
        except:
            print("没有匹配信息")

将获取链接写入到记事本

with open('电影天堂.txt','a') as f:
            f.write(dyLink+'\n')

#完整代码

import requests
import re


for page in range(1,178):
    url='http://www.ygdy8/html/gndy/dyzz/list_23_'+str(page)+'.html'
    print(url)
    html=requests.get(url)
    html.encoding="gb2312"
    #print(html.text)
    data=re.findall('<a href="(.*?)" class="ulink">',html.text)  #返回的是列表
    #print(data)
    for m in data:
        xqurl = 'http://www.ygdy8'+m
        #print(xqurl)

        html2=requests.get(xqurl)
        html2.encoding='gb2312'#指定编码
        #print(html2.text)
        try:
            dyLink = re.findall('<a href="(.*?)">ftp://.*?</a></td>',html2.text)[0]
            print(dyLink)
        except:
            print("没有匹配信息")

        with open('电影天堂.txt','a',encoding="utf-8") as f:
            f.write(dyLink+'\n')

代码中可以用time模块控制爬取每页的时间。防止ip被封。也可以使用代理ip

更多推荐

python爬虫——爬取电影天堂磁力链接

本文发布于:2023-06-14 08:04:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1454449.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:爬虫   磁力   链接   天堂   电影

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!