diff --git a/catalog/book/tests.py b/catalog/book/tests.py index d2e76001..fafb859f 100644 --- a/catalog/book/tests.py +++ b/catalog/book/tests.py @@ -202,6 +202,17 @@ class DoubanBookTestCase(TestCase): self.assertEqual(site.resource.item.isbn, "9781847498571") self.assertEqual(site.resource.item.title, "1984 Nineteen Eighty-Four") + @use_local_response + def test_publisher(self): + t_url = "https://book.douban.com/subject/35902899/" + site = SiteManager.get_site_by_url(t_url) + res = site.get_resource_ready() + self.assertEqual(res.metadata.get("pub_house"), "Alma Classics") + t_url = "https://book.douban.com/subject/1089243/" + site = SiteManager.get_site_by_url(t_url) + res = site.get_resource_ready() + self.assertEqual(res.metadata.get("pub_house"), "花城出版社") + @use_local_response def test_work(self): # url = 'https://www.goodreads.com/work/editions/153313' diff --git a/catalog/sites/douban_book.py b/catalog/sites/douban_book.py index 2bf11908..bee760e3 100644 --- a/catalog/sites/douban_book.py +++ b/catalog/sites/douban_book.py @@ -55,6 +55,11 @@ class DoubanBook(AbstractSite): "//div[@id='info']//span[text()='出版社:']/following::text()" ) pub_house = pub_house_elem[0].strip() if pub_house_elem else None + if not pub_house: + pub_house_elem = content.xpath( + "//div[@id='info']//span[text()='出版社:']/following-sibling::a/text()" + ) + pub_house = pub_house_elem[0].strip() if pub_house_elem else None pub_date_elem = content.xpath( "//div[@id='info']//span[text()='出版年:']/following::text()"