【Python成长之路】python 从零学爬虫 -- 没时间看《长安十二时辰》电视剧怎么办?直接爬取所有剧情吧! - Go语言中文社区

【Python成长之路】python 从零学爬虫 -- 没时间看《长安十二时辰》电视剧怎么办?直接爬取所有剧情吧!


【写在前面】

        最近大火的《长安十二时辰》真的是好看,算的是良心网剧了。但是由于平时工作时间较长,经常无法准时追剧,并且又因为不想见到元裁那对挨千刀的(作为演员,演技是值得肯定的,角色演绎的让人看的心烦)。因此就写个程序,直接爬取《长安》的剧情呗!

【示例代码】

# coding=utf-8
# @Auther : 鹏哥贼优秀
# @Date : 2019/8/7

from bs4 import BeautifulSoup
import requests
import getheader

# 获取每一集对应的标题及对应的界面URL关键地址
def get_title():
    url = "https://www.tvsou.com/storys/0d884ba0dd/"
    headers = getheader.getheaders()
    r = requests.get(url, headers=headers)
    r.encoding = "utf-8"
    soup = BeautifulSoup(r.text,"lxml")
    temps = soup.find("ul",class_="m-l14 clearfix episodes-list teleplay-lists").find_all("li")
    tempurllist = []
    titlelist = []
    for temp in temps:
        tempurl = temp.a.get("href")
        title = temp.a.get("title")
        tempurllist.append(tempurl)
        titlelist.append(title)
    return tempurllist,titlelist

# 下载长安十二时辰的第x集之后所有剧情,默认从第一集开始下载。
def Changan(episode=1):
    tempurllist_b,titlelist_b = get_title()
    tempurllist = tempurllist_b[(episode-1):]
    titlelist = titlelist_b[(episode-1):]
    baseurl = "https://www.tvsou.com"
    for i,tempurl in enumerate(tempurllist):
        print("正在下载第{0}篇".format(str(i+episode)))
        url = baseurl + tempurl
        r = requests.get(url, headers=getheader.getheaders())
        r.encoding = "utf-8"
        soup = BeautifulSoup(r.text, "lxml")
        result = soup.find("pre", class_="font-16 color-3 mt-20 pre-content").find_all("p")
        content = []
        for temp in result:
            if temp.string:
                content.append(temp.string)
        with open("test.txt", "a") as f:
            f.write(titlelist[i] + "n")
            f.writelines(content)
            f.write("n")

if __name__ == "__main__":
    Changan(43)

【知识点】

1、怎么自动获取每一集对应的URL地址?

先查看第一集的爬取内容,发现在响应中有一段各剧集的信息,如下图:

从这段响应消息中可以看到,每一集对应了一个href,然后第一集的URL地址中“https://www.tvsou.com/storys/0d884ba0dd/”刚好有部分URL地址与href一致。然后再验证了下第二集URL,发现的确就是对应的href。因此就得到了如何自动获取各集URL地址的方式。

 

2、如何爬取每一集的剧情内容呢?

以第一集为例,在响应中可以看到这样一段内容。


在class_="font-16 color-3 mt-20 pre-content"标签内,就有剧情内容。但是由于这段响应中有多个p标签,每个p标签对应一段内容。因此需要要对每个p标签进行text提取。并且由于第一个p标签是<p></p>,因此需要进行非空判断。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yuzipeng/article/details/98870216
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-03-01 17:56:26
  • 阅读 ( 1473 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢