前言:自从找到这个URL:http://douban.com/isbn/7101003044/
我就会爬取豆瓣ISBN了
声明:
!!!郑重证明:本教程仅用作学习交流,请勿用作商业盈利,违者后果自负!如本文有侵犯任何组织集团公司的隐私或利益,请告知联系删除!!!
代码
from bs4 import BeautifulSoup
import time
import random
import pandas as pd
import urllib.request
import pymongo
import sys
import re
class Douban():
def __init__(self):
self.__r_publisher = r'出版社:</span>(.*?)<br/>'
self.__r_publish_date = r'出版年:</span>(.*?)<br/>'
self.headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
def get_book(self, isbn=""):
book = {"isbn": isbn}
html = self.__get_html(isbn=isbn)
if html == -1: # 无此书
return -1
soup = self.__get_soup(html=html)
book["name"] = self.__getTitle(soup=soup)
book["author"] = self.__getAuthor(soup=soup)
book["intro"] = self.__get_intro(soup=soup)
book["publisher"] = self.__getpublisher(soup=soup)
book["publish_date"] = self.__getpublish_date(soup=soup)
return book
def __get_html(self, isbn=""):
url = f"http://douban.com/isbn/{isbn}/"
request = urllib.request.Request(url, headers=self.headers)
try:
response = urllib.request.urlopen(request)
except:
return -1
html = response.read().decode('utf-8')
return html
def __get_soup(self, html=""):
soup = BeautifulSoup(html, 'lxml', exclude_encodings="utf-8")
return soup
def __getTitle(self, soup):
soupSelect = str(soup.select("body>div>h1>span"))
soupTemp = BeautifulSoup(str(soupSelect), 'lxml',
exclude_encodings="utf-8")
return str(soupTemp.text).strip('[] \n\t')
def __getAuthor(self, soup):
soupSelect = str(soup.select(
"body>div>div>div>div>div>div>div>div>span>a")[0])
soupTemp = BeautifulSoup(str(soupSelect), 'lxml',
exclude_encodings="utf-8")
return str(soupTemp.text).strip()
def __getpublisher(self, soup):
soupSelect = str(soup.select(
"body>div>div>div>div>div>div>div>div"))
ans = re.findall(self.__r_publisher, soupSelect)
if len(ans) == 0:
return ""
else:
return str(ans[0]).strip("[] \n\t")
def __getpublish_date(self, soup):
soupSelect = str(soup.select(
"body>div>div>div>div>div>div>div>div"))
ans = re.findall(self.__r_publish_date, soupSelect)
if len(ans) == 0:
return ""
else:
return str(ans[0]).strip("[] \n\t")
def __get_intro(self, soup):
soupSelect = soup.select(
"body>div>div>div>div>div>div>span>div>div")
soupTemp = BeautifulSoup(str(soupSelect), 'lxml',
exclude_encodings="utf-8")
return str(soupTemp.text).strip("[] \n\t")
if __name__ == "__main__":
base = Douban()
print(base.get_book("9787508660752"))
执行结果
{'isbn': '9787532776221', 'name': '契诃夫戏剧全集', 'author': '[俄] 安东尼·巴甫洛维奇·契诃夫', 'intro': '“为什么要完整地读契诃夫? 因为我们从来没有,
读懂过他。 而他的舞台,有这个时代一切的痛和期待。” ★ 契诃夫戏剧全集 特别策划套装 ★ 荟萃戏剧翻译两界名家 焦菊隐•李健吾•童道明 ★ 内含限量版“幕布红”戏剧
主题笔记本 + 斯坦尼斯拉夫斯基导读手册 本套装为近年颇受好评的《契诃夫戏剧全集》特别策划版,内含斯坦尼斯拉夫斯基所作的导读手册《安•巴•契诃夫在莫斯科艺术
剧院》,以及限量版“幕布红”契诃夫戏剧主题精装笔记本。 契诃夫的作品在俄罗斯文学乃至世界文学都占有着极重要的地位,戏剧更是他文学创作成就中的明珠,对二十
世纪现代戏剧影响极大。在西方,契诃夫常被称作二十世纪的莎士比亚。他改变了长久以来的演剧体系,以“散文体”呈现出简单自然的生活节奏,却在看似琐碎的日常中挖
掘出最深沉的悲伤、期待和永恒的渴望。正如斯坦尼斯拉夫斯基所言:“你会在每一次表演中都发现一点新的东西,好像戏里面藏着一个深不可测的创造力源泉一样。你要
随着艺术的翱翔从高处去领会他,就会在他的剧本之每日生活一般平常的布局中,发现有人类对幸福的永久渴望,人类向上的挣扎和俄国诗的真正香味……你可以认清什么是
一切时代里艺术所最重要的东西。” 本全集精选李健吾、焦菊隐、童道明等名家权威译本。童道明先生是著名剧评家,也是业界公认的契诃夫研究专家,本文集中的《林妖
》、《没有父亲的人》,由他精心翻译完成,并亲自校订。北京人民艺术剧院的前副院长焦菊隐先生是国内较早译介契诃夫的专家,且有丰富的话剧艺术经验,他翻译的《
海鸥》、《伊凡诺夫》、《樱桃园》等,受到业内人士的高度评价。李健吾先生所译《契诃夫独幕剧集》更是曾于上世纪四十年代出版的珍贵版本。本文集的每一卷还附有
导读及译者撰写的相应剧评,有助读者更深入地了解契诃夫戏剧艺术,更为学界提供忠实、上佳的译本及可靠的研究资料。 马雅可夫斯基说:“别的作家需要用自杀去解释
的东西,契诃夫往往用一句话就把它表现出来了。” 纳博科夫在《俄罗斯文学讲稿》中分析了契诃夫的《海鸥》。“只要白桦树、日落和写作的欲望仍然存在,契诃夫就会
同在。” 就让我们一起坐在契诃夫的观众席上,聆听他,读懂他,写下属于自己的戏剧笔记。', 'publisher': '上海译文出版社', 'publish_date': '2018-3-30'}