‘’’
通過http://www.jinyongwang.com/data/renwu/來獲取金庸小說中的人物
輸出結果為
小說1
人物1 人物2 人物3 …
小說2
人物1 人物2 人物3 …
…
話不多說直接上碼
‘’’
import requests
from bs4 import BeautifulSoup
import re#獲取網頁內容
def get_html(url):page = requests.get(url)#print(page.content)return page.content#獲取小說及人物并寫入txt中
def analyse_html(html):#第一次使用BeautifulSoup,感覺perfectsoup = BeautifulSoup(html,'html.parser')body = soup.body#print(body)main = body.find('div',attrs = {'class':'main'})booklist = main.find('div',attrs = {'class':'booklist'})#寫入指定txtfile_path = r'E:\names.txt'file = open(file_path,'a',encoding='utf-8')#可以通過使用正則的方式,找到含有小說名的 'h2' 標簽,和含有人物名的 'div' 標簽for dataname in booklist.find_all(re.compile('h2|div')):# print(dataname)# print(dataname['class'])# print(type(dataname['class']))#可以直接通過 tag['class'] 的方式直接獲取 tag 值if dataname['class'][0] == 'dataname':dataname = dataname.find('span')book_name = dataname.get_text()print(book_name+'\n')file.write('\n'+book_name+'\n')elif dataname['class'][0] == 'datapice' :for a in dataname('a'):#含有人物圖片的和不含有的獲取方式有少許差異# <a href="/data/2752.html"><img alt="鄭旦" src="/public/uploads/baike/2015-08-15/95771439622810_120.jpg"/>鄭旦</a> 這種含有人物圖片的直接通過 get_text() 即可獲取if a.find('i') == None:role_name = a.get_text().replace(' ', '')#print(role_name)else:# <a href="/data/2767.html"><i class="icon"></i>卓天雄</a> #這種不含有人物圖片的直接通過 get_text() 獲取,會多獲取到一個 ‘’,暫無其他好辦法去掉,只能通過字符串切割的方式去掉role_name = a.get_text(strip=True).replace(' ','')[1:]file.write(role_name+' ')file.close()
if __name__ == '__main__':url = 'http://www.jinyongwang.com/data/renwu/'html = get_html(url)analyse_html(html)
第一次在CSDN上寫些東東,感覺還不錯~~
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态