python爬蟲練習之爬取豆瓣讀書所有標籤下的書籍資訊

StarLord007發表於2018-07-23

第一步,爬取所有圖書標籤及分類

到達圖書標籤頁,分類瀏覽,第一步需要爬取所有分類及其分類下的所有標籤
並用dict儲存

豆瓣圖書標籤的連結

這裡寫圖片描述

需要解析的內容
這裡寫圖片描述

1.bs4解析

import requests
from bs4 import BeautifulSoup

url = 'https://book.douban.com/tag/?view=type'
tag_dict = {}

def get_dict():             #介面,提供這個標籤字典
    return tag_dict

r = requests.get(url)
soup = BeautifulSoup(r.text,'lxml')
title = soup.select('div div a h2')     #第一步找到h2標籤,因為更細緻,a標籤就找不到
#然後通過h2標籤找到爺爺級標籤,就是div盒子了
for i in title:
    a = i.find_parent()     #找到父親a標籤
    div = a.find_parent()   #找到父親div
    tag_title = a.select('h2')[0].get_text()[:2]    #找到h2標籤取出內容並切片取出前兩個字
    tags = div.select('tr td a')    #找到td中的a標籤
    tag_list = []
    for j in tags:
        tag_list.append(j.get_text())   #迴圈取出a標籤中的內容
    tag_dict[tag_title] = tag_list

for i in tag_dict:
    print(i+':',end='')
    print(tag_dict[i])
-------------------------------------------------------------------------------
文學 ['小說', '外國文學', '文學', '隨筆', '中國文學', '經典', '日本文學', '散文', '村上春樹', '詩歌', '童話', '兒童文學', '古典文學', '王小波', '名著', '雜文', '餘華', '張愛玲', '當代文學', '錢鍾書', '外國名著', '魯迅', '詩詞', '茨威格', '米蘭·昆德拉', '杜拉斯', '港臺']
流行 ['漫畫', '推理', '繪本', '青春', '東野圭吾', '科幻', '言情', '懸疑', '奇幻', '武俠', '日本漫畫', '韓寒', '耽美', '推理小說', '亦舒', '網路小說', '三毛', '安妮寶貝', '郭敬明', '穿越', '阿加莎·克里斯蒂', '金庸', '輕小說', '科幻小說', '青春文學', '幾米', '魔幻', '幾米', '張小嫻', 'J.K.羅琳', '古龍', '高木直子', '滄月', '校園', '落落', '張悅然']
文化 ['歷史', '心理學', '哲學', '傳記', '文化', '社會學', '藝術', '設計', '社會', '政治', '建築', '宗教', '電影', '政治學', '數學', '中國歷史', '回憶錄', '思想', '國學', '人文', '人物傳記', '音樂', '藝術史', '繪畫', '戲劇', '西方哲學', '二戰', '軍事', '佛教', '近代史', '考古', '自由主義', '美術']
生活 ['愛情', '旅行', '生活', '成長', '心理', '勵志', '女性', '攝影', '職場', '教育', '美食', '遊記', '靈脩', '健康', '情感', '兩性', '人際關係', '手工', '養生', '家居', '自助遊']
經管 ['經濟學', '管理', '經濟', '商業', '金融', '投資', '營銷', '創業', '理財', '廣告', '股票', '企業史', '策劃']
科技 ['科普', '網際網路', '程式設計', '科學', '互動設計', '使用者體驗', '演算法', '科技', 'web', 'UE', '互動', '通訊', 'UCD', '神經網路', '程式']

2.re解析

import requests
import re

url = 'https://book.douban.com/tag/?view=type'
tag_dict = {}

def get_dict():             #介面,提供這個標籤字典
    return tag_dict

r = requests.get(url).text
tag_title = re.findall('<a name="(.*?)".*?tag-title-wrapper', r, re.S)  #直接找到類別
tags = re.findall('table.*?tbody>(.*?)</tbody',r,re.S)  #找到每個div裡tbody的內容
tags.remove(tags[0])
for n,i in enumerate(tags):
    tag_list = re.findall('">(.*?)</a><b',i,re.S)   #在tbody裡找到每個a標籤的內容
    tag_dict[tag_title[n]] = tag_list

for i in tag_dict:
    print(i,tag_dict[i])
-------------------------------------------------------------------------------------------
文學:['小說', '外國文學', '文學', '隨筆', '中國文學', '經典', '日本文學', '散文', '村上春樹', '詩歌', '童話', '兒童文學', '古典文學', '王小波', '名著', '雜文', '餘華', '張愛玲', '當代文學', '錢鍾書', '外國名著', '魯迅', '詩詞', '茨威格', '米蘭·昆德拉', '杜拉斯', '港臺']
流行:['漫畫', '推理', '繪本', '青春', '東野圭吾', '科幻', '言情', '懸疑', '奇幻', '武俠', '日本漫畫', '韓寒', '耽美', '推理小說', '亦舒', '網路小說', '三毛', '安妮寶貝', '郭敬明', '穿越', '阿加莎·克里斯蒂', '金庸', '輕小說', '科幻小說', '青春文學', '幾米', '魔幻', '幾米', '張小嫻', 'J.K.羅琳', '古龍', '高木直子', '滄月', '校園', '落落', '張悅然']
文化:['歷史', '心理學', '哲學', '傳記', '文化', '社會學', '藝術', '設計', '社會', '政治', '建築', '宗教', '電影', '政治學', '數學', '中國歷史', '回憶錄', '思想', '國學', '人文', '人物傳記', '音樂', '藝術史', '繪畫', '戲劇', '西方哲學', '二戰', '軍事', '佛教', '近代史', '考古', '自由主義', '美術']
生活:['愛情', '旅行', '生活', '成長', '心理', '勵志', '女性', '攝影', '職場', '教育', '美食', '遊記', '靈脩', '健康', '情感', '兩性', '人際關係', '手工', '養生', '家居', '自助遊']
經管:['經濟學', '管理', '經濟', '商業', '金融', '投資', '營銷', '創業', '理財', '廣告', '股票', '企業史', '策劃']
科技:['科普', '網際網路', '程式設計', '科學', '互動設計', '使用者體驗', '演算法', '科技', 'web', 'UE', '互動', '通訊', 'UCD', '神經網路', '程式']

2.未完待續

相關文章