今天带来的是爬取漫画网站上的漫画信息及其链接
这次会用到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)
结果展示