bs4爬取漫畫並寫入TXT文件
阿新 • • 發佈:2018-11-11
今天帶來的是爬取漫畫網站上的漫畫資訊及其連結
這次會用到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)
結果展示