bs4爬取漫画并写入TXT文档

今天带来的是爬取漫画网站上的漫画信息及其链接

这次会用到bs4,也就是Beautiful Soup
我们先介绍一下**Beautiful Soup**:
Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你节省数小时甚至数天的工作时间.

对象种类可以归纳为四种:

  • Tag
  • Navigable String
  • Beautiful Soup
    (Beautiful Soup对象表示的是一个文档的全部内容)
  • Comment

在这里介绍一下,用bs4获取所需内容的一些方法

  • soup.a
    通过点属性获取当前名字的第一个Tag
  • soup.find_all(‘a’)
    获取所有的a标签

这里还要区分一下find()find_all()

  • find()
    函数只返回第一个所要查找的节点标签的类型
  • find_all()
    函数以列表的形式返回所有要查找的节点标签的类型

好了,接下来直接上代码

# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests

url = 'https://manhua.dmzj.com/'
def get_page(finallyurl):
    user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134'
    headers = {'User-Agent': user_agent}
    data = requests.get(finallyurl,headers=headers).content
    return data
def get_manhua(html):
    fo = open("new.txt", 'a')
    fo.write('**********************第%s页*************************\n'%i)
    fo.close()
    soup = BeautifulSoup(html,'html.parser')
    article = soup.find('div',attrs={'class':'newpic_content'})
    text = []
    for paragraph in soup.find_all("div",attrs={"class":"boxdiv1"}):
        p_content = paragraph.get_text()     #获取所有关于文字的内容
        text.append(p_content)
        print p_content
        a=[]
        for link in paragraph.find_all(target="_blank"):
            lianjie = 'https://manhua.dmzj.com/' + link.get('href')
            a.append(lianjie)
            print lianjie
        end = a[1] + '\n' + p_content + '\n'
        #写入文档
        one = end.encode('UTF-8')
        fo = open("new.txt", 'a')
        fo.write(one)
        fo.write('\n')
        fo.close()
        # 删除文档中的空行
        f = open('new.txt')
        g = open('result.txt', 'w')
        try:
            while True:
                 line = f.readline()
                 if len(line) == 0:
                      break
                 if line.count('\n') == len(line):
                     continue
                 g.write(line)
        finally:
            f.close()
            g.close()
    return text
for i in range(1,4):
    finallyurl = url + 'update_' + str(i) + '.shtml'
    html = get_page(finallyurl)
    text = get_manhua(html)

结果展示
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/m0_43445668/article/details/83579120