加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

requests+lxml+xpath爬取电影天堂

发布时间:2020-12-20 09:51:44 所属栏目:Python 来源:网络整理
导读:1.导入相应的包 import requests from lxml import etree 2.原始ur url= " https://www.dytt8.net/html/gndy/dyzz/list_23_1.html " ? ?我们要爬取的是最新电影,在该界面中,我们发现,具体的信息存储在每个名字的链接中,因此我们要获取所有电影的链接才能

1.导入相应的包

import requests
from lxml import etree

2.原始ur

url="https://www.dytt8.net/html/gndy/dyzz/list_23_1.html"

?

?我们要爬取的是最新电影,在该界面中,我们发现,具体的信息存储在每个名字的链接中,因此我们要获取所有电影的链接才能得到电影的信息。同时我们观察url,发现

list_23_1,最后的1是页面位于第几页。右键点击其中一个电影的名字-检查。

?

?我们发现,其部分连接位于具有class="tbspan"的table的<b>中,首先建立一个函数,用来得到所有的链接:

#用于补全url
base_url=https://www.dytt8.net"
def get_domain_urls(url):
    response=requests.get(url=url,headers=headers)
    text=response.text
    html=etree.HTML(text)
        找到具有class="tbspan"的table下的所有a下面的href里面的值
    detail_urls=html.xpath(//table[@class='tbspan']//a/@href")
        将url进行补全
    detail_urls=map(lambda url:base_url+url,detail_urls)
    return detail_urls

我们输出第1页中的所有url结果:

url=for i in get_domain_urls(url):
    print(i)

?我们随便进入第一个链接:

按下F12,发现这些信息基本上都在div id="Zoom"中,接下来我们就可以对该界面进行解析。

 parse_detail_page(url):
    movie={}
    response=requests.get(url,1)">headers)
    text=response.content.decode(GBK)
    html=etree.HTML(text)
    zoom=html.xpath(//div[@id='Zoom'])[0]
    infos=zoom.xpath(//text())
     parse_info(info,rule):
        return info.replace(rule,"").lstrip()
    for k,v  enumerate(infos):
        if v.startswith(◎译  名):
            v=parse_info(v,1)">").split(/)[0]
            movie[name"]=v
        elif v.startswith(◎产  地)
            movie[country◎类  别category◎豆瓣评分douban◎导  演◎导  演director◎主  演)
            actors=[v]
            for x in range(k+1,len(infos)):
                actor=infos[x].strip()
                if actor.startswith():
                    break
                actors.append(actor)
            movie[actorsactors
        ◎简  介):
            profile=""
            if tmp.startswith(【下载地址】break
                else:
                    profile=profile+tmp
            movie[profileprofile
    down_url=html.xpath(//td[@bgcolor='#fdfddf']/a/@href)
    movie[down_urldown_url
    return movie

最后将这两个整合进一个爬虫中:

 spider():
    domain_url=https://www.dytt8.net/html/gndy/dyzz/list_23_{}.html
    movies=[]
    in range(1,2):
        page=str(i)
        url=domain_url.format(page)
        detail_urls=get_domain_urls(url)
        for detail_url  detail_urls:
            movie = parse_detail_page(detail_url)
            movies.append(movie)
    print(movies)

运行爬虫,得到以下结果(在Json查看器中进行格式化):

?

?至此,一个简单的电影爬虫就完成了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读