diff --git a/catalog/book/models.py b/catalog/book/models.py
index de65ae9c..a96da033 100644
--- a/catalog/book/models.py
+++ b/catalog/book/models.py
@@ -47,15 +47,14 @@ class Edition(Item):
def update_linked_items_from_extenal_page(self, page):
"""add Work from page.metadata['work'] if not yet"""
- w = page.metadata.get('work', None)
- if w:
- work = Work.objects.filter(primary_lookup_id_type=w['lookup_id_type'], primary_lookup_id_value=w['lookup_id_value']).first()
- if work:
- if any(edition == self for edition in work.editions.all()):
- return
- else:
- work = Work.objects.create(primary_lookup_id_type=w['lookup_id_type'], primary_lookup_id_value=w['lookup_id_value'], title=w['title'])
- work.editions.add(self)
+ links = page.required_pages + page.related_pages
+ for w in links:
+ if w['model'] == 'Work':
+ work = Work.objects.filter(primary_lookup_id_type=w['id_type'], primary_lookup_id_value=w['id_value']).first()
+ if work and work not in self.works.all():
+ self.works.add(work)
+ # if not work:
+ # logger.info(f'Unable to find link for {w["url"]}')
class Work(Item):
diff --git a/catalog/book/tests.py b/catalog/book/tests.py
index 83344534..511bd705 100644
--- a/catalog/book/tests.py
+++ b/catalog/book/tests.py
@@ -78,8 +78,7 @@ class GoodreadsTestCase(TestCase):
self.assertEqual(site.ready, True)
self.assertEqual(site.page.metadata.get('title'), 'Hyperion')
self.assertEqual(site.page.metadata.get('isbn'), isbn)
- self.assertEqual(site.page.metadata['work']['lookup_id_value'], '1383900')
- self.assertEqual(site.page.metadata['work']['title'], 'Hyperion')
+ self.assertEqual(site.page.required_pages[0]['id_value'], '1383900')
edition = Edition.objects.get(primary_lookup_id_type=IdType.ISBN, primary_lookup_id_value=isbn)
page = edition.external_pages.all().first()
self.assertEqual(page.id_type, IdType.Goodreads)
@@ -105,19 +104,19 @@ class GoodreadsTestCase(TestCase):
@use_local_response
def test_work(self):
- # url = 'https://www.goodreads.com/work/editions/153313'
+ url = 'https://www.goodreads.com/work/editions/153313'
+ p = SiteList.get_site_by_url(url).get_page_ready()
+ self.assertEqual(p.item.title, '1984')
url1 = 'https://www.goodreads.com/book/show/3597767-rok-1984'
url2 = 'https://www.goodreads.com/book/show/40961427-1984'
p1 = SiteList.get_site_by_url(url1).get_page_ready()
p2 = SiteList.get_site_by_url(url2).get_page_ready()
w1 = p1.item.works.all().first()
w2 = p2.item.works.all().first()
- self.assertEqual(w1.title, 'Nineteen Eighty-Four')
- self.assertEqual(w2.title, 'Nineteen Eighty-Four')
self.assertEqual(w1, w2)
-class DoubanTestCase(TestCase):
+class DoubanBookTestCase(TestCase):
def setUp(self):
pass
diff --git a/catalog/common/models.py b/catalog/common/models.py
index adc200bf..412f2d3c 100644
--- a/catalog/common/models.py
+++ b/catalog/common/models.py
@@ -1,5 +1,6 @@
from polymorphic.models import PolymorphicModel
from django.db import models
+from catalog.common import jsondata
from django.utils.translation import gettext_lazy as _
from django.utils import timezone
from django.core.files.uploadedfile import SimpleUploadedFile
@@ -220,6 +221,8 @@ class ExternalPage(models.Model):
scraped_time = models.DateTimeField(null=True)
created_time = models.DateTimeField(auto_now_add=True)
edited_time = models.DateTimeField(auto_now=True)
+ required_pages = jsondata.ArrayField(null=False, blank=False, default=list)
+ related_pages = jsondata.ArrayField(null=False, blank=False, default=list)
class Meta:
unique_together = [['id_type', 'id_value']]
@@ -237,7 +240,7 @@ class ExternalPage(models.Model):
@property
def ready(self):
- return bool(self.metadata)
+ return bool(self.metadata and self.scraped_time)
def get_all_lookup_ids(self):
d = self.other_lookup_ids.copy()
@@ -254,11 +257,3 @@ class ExternalPage(models.Model):
else:
raise ValueError(f'preferred model {model} does not exist')
return None
-
- def get_dependent_urls(self):
- ll = self.metadata.get('dependent_urls')
- return ll if ll else []
-
- def get_related_urls(self):
- ll = self.metadata.get('related_urls')
- return ll if ll else []
diff --git a/catalog/common/sites.py b/catalog/common/sites.py
index ab3136d6..d2da664e 100644
--- a/catalog/common/sites.py
+++ b/catalog/common/sites.py
@@ -2,6 +2,10 @@ from typing import *
import re
from .models import ExternalPage
from dataclasses import dataclass, field
+import logging
+
+
+logger = logging.getLogger(__name__)
@dataclass
@@ -50,6 +54,10 @@ class AbstractSite:
self.page = ExternalPage(id_type=self.ID_TYPE, id_value=self.id_value, url=self.url)
return self.page
+ def bypass_scrape(self, data_from_link) -> PageData | None:
+ """subclass may implement this to use data from linked page and bypass actual scrape"""
+ return None
+
def scrape(self) -> PageData:
"""subclass should implement this, return PageData object"""
data = PageData()
@@ -76,7 +84,7 @@ class AbstractSite:
def ready(self):
return bool(self.page and self.page.ready)
- def get_page_ready(self, auto_save=True, auto_create=True, auto_link=True):
+ def get_page_ready(self, auto_save=True, auto_create=True, auto_link=True, data_from_link=None):
"""return a page scraped, or scrape if not yet"""
if auto_link:
auto_create = True
@@ -87,7 +95,9 @@ class AbstractSite:
if not self.page:
return None
if not p.ready:
- pagedata = self.scrape()
+ pagedata = self.bypass_scrape(data_from_link)
+ if not pagedata:
+ pagedata = self.scrape()
p.update_content(pagedata)
if not p.ready:
logger.error(f'unable to get page {self.url} ready')
@@ -100,14 +110,16 @@ class AbstractSite:
p.item.merge_data_from_extenal_pages()
p.item.save()
if auto_link:
- # todo rewrite this
+ for linked_pages in p.required_pages:
+ linked_site = SiteList.get_site_by_url(linked_pages['url'])
+ if linked_site:
+ linked_site.get_page_ready(auto_link=False)
+ else:
+ logger.error(f'unable to get site for {linked_pages["url"]}')
p.item.update_linked_items_from_extenal_page(p)
+ p.item.save()
return p
- def get_dependent_pages_ready(self, urls):
- # set depth = 2 so in a case of douban season can find an IMDB episode then a TMDB Serie
- pass
-
class SiteList:
registry = {}
diff --git a/catalog/sites/douban_book.py b/catalog/sites/douban_book.py
index 1f928a80..5c3b7c28 100644
--- a/catalog/sites/douban_book.py
+++ b/catalog/sites/douban_book.py
@@ -108,16 +108,16 @@ class DoubanBook(AbstractSite, ScraperMixin):
translators = None
self.data['translators'] = translators
- self.data['work'] = {}
work_link = self.parse_str('//h2/span[text()="这本书的其他版本"]/following-sibling::span[@class="pl"]/a/@href')
if work_link:
- # TODO move logic to a differnet class
r = re.match(r'\w+://book.douban.com/works/(\d+)', work_link)
- self.data['work']['lookup_id_type'] = IdType.DoubanBook_Work
- self.data['work']['lookup_id_value'] = r[1] if r else None
- self.data['work']['title'] = self.data['title']
- self.data['work']['url'] = work_link
-
+ self.data['required_pages'] = [{
+ 'model': 'Work',
+ 'id_type': IdType.DoubanBook_Work,
+ 'id_value': r[1] if r else None,
+ 'title': self.data['title'],
+ 'url': work_link,
+ }]
pd = PageData(metadata=self.data)
pd.lookup_ids[IdType.ISBN] = self.data.get('isbn')
pd.lookup_ids[IdType.CUBN] = self.data.get('cubn')
@@ -129,3 +129,34 @@ class DoubanBook(AbstractSite, ScraperMixin):
except Exception:
logger.debug(f'failed to download cover for {self.url} from {self.data["cover_image_url"]}')
return pd
+
+
+@SiteList.register
+class DoubanBook_Work(AbstractSite):
+ ID_TYPE = IdType.DoubanBook_Work
+ URL_PATTERNS = [r"\w+://book\.douban\.com/works/(\d+)"]
+ WIKI_PROPERTY_ID = '?'
+ DEFAULT_MODEL = Work
+
+ @classmethod
+ def id_to_url(self, id_value):
+ return "https://book.douban.com/works/" + id_value + "/"
+
+ def bypass_scrape(self, data_from_link):
+ if not data_from_link:
+ return None
+ pd = PageData(metadata={
+ 'title': data_from_link['title'],
+ })
+ return pd
+
+ def scrape(self):
+ content = html.fromstring(DoubanDownloader(self.url).download().text.strip())
+ title_elem = content.xpath("//h1/text()")
+ title = title_elem[0].split('全部版本(')[0].strip() if title_elem else None
+ if not title:
+ raise ParseError(self, 'title')
+ pd = PageData(metadata={
+ 'title': title,
+ })
+ return pd
diff --git a/catalog/sites/douban_movie.py b/catalog/sites/douban_movie.py
index a5cbd3d2..0400cba1 100644
--- a/catalog/sites/douban_movie.py
+++ b/catalog/sites/douban_movie.py
@@ -6,6 +6,7 @@ from catalog.tv.models import *
import logging
from django.db import models
from django.utils.translation import gettext_lazy as _
+from .tmdb import TMDB_TV, search_tmdb_by_imdb_id
logger = logging.getLogger(__name__)
@@ -238,19 +239,33 @@ class DoubanMovie(AbstractSite):
})
pd.metadata['preferred_model'] = ('TVSeason' if season else 'TVShow') if is_series else 'Movie'
- # tmdb_api_url = f"https://api.themoviedb.org/3/find/{self.imdb_code}?api_key={settings.TMDB_API3_KEY}&language=zh-CN&external_source=imdb_id"
- # res_data = BasicDownloader(tmdb_api_url).download().json()
- # if 'movie_results' in res_data and len(res_data['movie_results']) > 0:
- # pd.metadata['preferred_model'] = 'Movie'
- # elif 'tv_results' in res_data and len(res_data['tv_results']) > 0:
- # pd.metadata['preferred_model'] = 'TVShow'
- # elif 'tv_season_results' in res_data and len(res_data['tv_season_results']) > 0:
- # pd.metadata['preferred_model'] = 'TVSeason'
- # elif 'tv_episode_results' in res_data and len(res_data['tv_episode_results']) > 0:
- # pd.metadata['preferred_model'] = 'TVSeason'
-
if imdb_code:
+ res_data = search_tmdb_by_imdb_id(imdb_code)
+ tmdb_show_id = None
+ if 'movie_results' in res_data and len(res_data['movie_results']) > 0:
+ pd.metadata['preferred_model'] = 'Movie'
+ elif 'tv_results' in res_data and len(res_data['tv_results']) > 0:
+ pd.metadata['preferred_model'] = 'TVShow'
+ elif 'tv_season_results' in res_data and len(res_data['tv_season_results']) > 0:
+ pd.metadata['preferred_model'] = 'TVSeason'
+ tmdb_show_id = res_data['tv_season_results'][0]['show_id']
+ elif 'tv_episode_results' in res_data and len(res_data['tv_episode_results']) > 0:
+ pd.metadata['preferred_model'] = 'TVSeason'
+ tmdb_show_id = res_data['tv_episode_results'][0]['show_id']
+ if res_data['tv_episode_results'][0]['episode_number'] != 1:
+ logger.error(f'Douban Movie {self.url} mapping to unexpected imdb episode {imdb_code}')
+ # TODO correct the IMDB id
pd.lookup_ids[IdType.IMDB] = imdb_code
+ if tmdb_show_id:
+ pd.metadata['required_pages'] = [{
+ 'model': 'TVShow',
+ 'id_type': IdType.TMDB_TV,
+ 'id_value': tmdb_show_id,
+ 'title': title,
+ 'url': TMDB_TV.id_to_url(tmdb_show_id),
+ }]
+ # TODO parse sister seasons
+ # pd.metadata['related_pages'] = []
if pd.metadata["cover_image_url"]:
imgdl = BasicImageDownloader(pd.metadata["cover_image_url"], self.url)
try:
diff --git a/catalog/sites/goodreads.py b/catalog/sites/goodreads.py
index 46471332..c6a87a4c 100644
--- a/catalog/sites/goodreads.py
+++ b/catalog/sites/goodreads.py
@@ -1,12 +1,12 @@
import re
-from catalog.book.models import Edition
+from catalog.book.models import Edition, Work
from catalog.common import *
from lxml import html
import json
import logging
-logger = logging.getLogger(__name__)
+_logger = logging.getLogger(__name__)
class GoodreadsDownloader(RetryDownloader):
@@ -64,14 +64,15 @@ class Goodreads(AbstractSite):
data['asin'] = asin
data['pages'] = b['details'].get('numPages')
data['cover_image_url'] = b['imageUrl']
- data['work'] = {}
w = next(filter(lambda x: x.get('details'), o['Work']), None)
if w:
- data['work']['lookup_id_type'] = IdType.Goodreads_Work
- data['work']['lookup_id_value'] = str(w['legacyId'])
- data['work']['title'] = w['details']['originalTitle']
- data['work']['url'] = w['details']['webUrl']
-
+ data['required_pages'] = [{
+ 'model': 'Work',
+ 'id_type': IdType.Goodreads_Work,
+ 'id_value': str(w['legacyId']),
+ 'title': w['details']['originalTitle'],
+ 'url': w['editions']['webUrl'],
+ }]
pd = PageData(metadata=data)
pd.lookup_ids[IdType.ISBN] = data.get('isbn')
pd.lookup_ids[IdType.ASIN] = data.get('asin')
@@ -81,5 +82,34 @@ class Goodreads(AbstractSite):
pd.cover_image = imgdl.download().content
pd.cover_image_extention = imgdl.extention
except Exception:
- logger.debug(f'failed to download cover for {self.url} from {data["cover_image_url"]}')
+ _logger.debug(f'failed to download cover for {self.url} from {data["cover_image_url"]}')
+ return pd
+
+
+@SiteList.register
+class Goodreads_Work(AbstractSite):
+ ID_TYPE = IdType.Goodreads_Work
+ WIKI_PROPERTY_ID = ''
+ DEFAULT_MODEL = Work
+ URL_PATTERNS = [r".+goodreads.com/work/editions/(\d+)"]
+
+ @classmethod
+ def id_to_url(self, id_value):
+ return "https://www.goodreads.com/work/editions/" + id_value
+
+ def scrape(self, response=None):
+ content = html.fromstring(BasicDownloader(self.url).download().text.strip())
+ title_elem = content.xpath("//h1/a/text()")
+ title = title_elem[0].strip() if title_elem else None
+ if not title:
+ raise ParseError(self, 'title')
+ author_elem = content.xpath("//h2/a/text()")
+ author = author_elem[0].strip() if author_elem else None
+ first_published_elem = content.xpath("//h2/span/text()")
+ first_published = first_published_elem[0].strip() if first_published_elem else None
+ pd = PageData(metadata={
+ 'title': title,
+ 'author': author,
+ 'first_published': first_published
+ })
return pd
diff --git a/catalog/sites/imdb.py b/catalog/sites/imdb.py
index 5f9e619f..eb7b2b18 100644
--- a/catalog/sites/imdb.py
+++ b/catalog/sites/imdb.py
@@ -1,6 +1,5 @@
-from django.conf import settings
from catalog.common import *
-from .douban import *
+from .tmdb import search_tmdb_by_imdb_id
from catalog.movie.models import *
from catalog.tv.models import *
import logging
@@ -21,8 +20,7 @@ class IMDB(AbstractSite):
def scrape(self):
self.scraped = False
- api_url = f"https://api.themoviedb.org/3/find/{self.id_value}?api_key={settings.TMDB_API3_KEY}&language=zh-CN&external_source=imdb_id"
- res_data = BasicDownloader(api_url).download().json()
+ res_data = search_tmdb_by_imdb_id(self.id_value)
if 'movie_results' in res_data and len(res_data['movie_results']) > 0:
url = f"https://www.themoviedb.org/movie/{res_data['movie_results'][0]['id']}"
elif 'tv_results' in res_data and len(res_data['tv_results']) > 0:
diff --git a/catalog/sites/tmdb.py b/catalog/sites/tmdb.py
index 888c1a3a..8c03d70e 100644
--- a/catalog/sites/tmdb.py
+++ b/catalog/sites/tmdb.py
@@ -14,6 +14,12 @@ import logging
logger = logging.getLogger(__name__)
+def search_tmdb_by_imdb_id(imdb_id):
+ tmdb_api_url = f"https://api.themoviedb.org/3/find/{imdb_id}?api_key={settings.TMDB_API3_KEY}&language=zh-CN&external_source=imdb_id"
+ res_data = BasicDownloader(tmdb_api_url).download().json()
+ return res_data
+
+
def _copy_dict(s, key_map):
d = {}
for src, dst in key_map.items():
@@ -61,7 +67,7 @@ class TMDB_Movie(AbstractSite):
@classmethod
def id_to_url(self, id_value):
- return "https://www.themoviedb.org/movie/" + id_value
+ return f"https://www.themoviedb.org/movie/{id_value}"
def scrape(self):
is_series = False
@@ -162,7 +168,7 @@ class TMDB_TV(AbstractSite):
@classmethod
def id_to_url(self, id_value):
- return "https://www.themoviedb.org/tv/" + id_value
+ return f"https://www.themoviedb.org/tv/{id_value}"
def scrape(self):
is_series = True
@@ -221,6 +227,12 @@ class TMDB_TV(AbstractSite):
# TODO: use GET /configuration to get base url
img_url = ('https://image.tmdb.org/t/p/original/' + res_data['poster_path']) if res_data['poster_path'] is not None else None
+ season_links = list(map(lambda s: {
+ 'model': 'TVSeason',
+ 'id_type': IdType.TMDB_TVSeason,
+ 'id_value': f'{self.id_value}-{s["season_number"]}',
+ 'title': s['name'],
+ 'url': f'{self.url}/season/{s["season_number"]}'}, res_data['seasons']))
pd = PageData(metadata={
'title': title,
'orig_title': orig_title,
@@ -241,9 +253,11 @@ class TMDB_TV(AbstractSite):
'single_episode_length': None,
'brief': brief,
'cover_image_url': img_url,
+ 'related_pages': season_links,
})
if imdb_code:
pd.lookup_ids[IdType.IMDB] = imdb_code
+
if pd.metadata["cover_image_url"]:
imgdl = BasicImageDownloader(pd.metadata["cover_image_url"], self.url)
try:
@@ -279,6 +293,13 @@ class TMDB_TVSeason(AbstractSite):
if not d.get('id'):
raise ParseError('id')
pd = PageData(metadata=_copy_dict(d, {'name': 'title', 'overview': 'brief', 'air_date': 'air_date', 'season_number': 0, 'external_ids': 0}))
+ pd.metadata['required_pages'] = [{
+ 'model': 'TVShow',
+ 'id_type': IdType.TMDB_TV,
+ 'id_value': v[0],
+ 'title': f'TMDB TV Show {v[0]}',
+ 'url': f"https://www.themoviedb.org/tv/{v[0]}",
+ }]
pd.lookup_ids[IdType.IMDB] = d['external_ids'].get('imdb_id')
pd.metadata['cover_image_url'] = ('https://image.tmdb.org/t/p/original/' + d['poster_path']) if d['poster_path'] else None
pd.metadata['title'] = pd.metadata['title'] if pd.metadata['title'] else f'Season {d["season_number"]}'
@@ -295,7 +316,7 @@ class TMDB_TVSeason(AbstractSite):
# get external id from 1st episode
if pd.lookup_ids[IdType.IMDB]:
logger.warning("Unexpected IMDB id for TMDB tv season")
- elif len(pd.metadata['episode_number_list']) == 0:
+ elif len(pd.metadata['episode_number_list']) == 0:
logger.warning("Unable to lookup IMDB id for TMDB tv season with zero episodes")
else:
ep = pd.metadata['episode_number_list'][0]
diff --git a/catalog/tv/models.py b/catalog/tv/models.py
index 351320fe..105f1cc0 100644
--- a/catalog/tv/models.py
+++ b/catalog/tv/models.py
@@ -39,14 +39,23 @@ class TVSeason(Item):
douban_movie = PrimaryLookupIdDescriptor(IdType.DoubanMovie)
imdb = PrimaryLookupIdDescriptor(IdType.IMDB)
tmdb_tvseason = PrimaryLookupIdDescriptor(IdType.TMDB_TVSeason)
- series = models.ForeignKey(TVShow, null=True, on_delete=models.SET_NULL, related_name='seasons')
+ show = models.ForeignKey(TVShow, null=True, on_delete=models.SET_NULL, related_name='seasons')
season_number = models.PositiveIntegerField()
episode_count = jsondata.IntegerField(blank=True, default=None)
METADATA_COPY_LIST = ['title', 'brief', 'season_number', 'episode_count']
+ def update_linked_items_from_extenal_page(self, page):
+ """add Work from page.metadata['work'] if not yet"""
+ links = page.required_pages + page.related_pages
+ for w in links:
+ if w['model'] == 'TVShow':
+ p = ExternalPage.objects.filter(id_type=w['id_type'], id_value=w['id_value']).first()
+ if p and p.item and self.show != p.item:
+ self.show = p.item
+
class TVEpisode(Item):
- series = models.ForeignKey(TVShow, null=True, on_delete=models.SET_NULL, related_name='episodes')
+ show = models.ForeignKey(TVShow, null=True, on_delete=models.SET_NULL, related_name='episodes')
season = models.ForeignKey(TVSeason, null=True, on_delete=models.SET_NULL, related_name='episodes')
episode_number = models.PositiveIntegerField()
imdb = PrimaryLookupIdDescriptor(IdType.IMDB)
diff --git a/catalog/tv/tests.py b/catalog/tv/tests.py
index 5690d0d3..3f7af40a 100644
--- a/catalog/tv/tests.py
+++ b/catalog/tv/tests.py
@@ -60,6 +60,8 @@ class TMDBTVSeasonTestCase(TestCase):
self.assertEqual(site.page.item.primary_lookup_id_type, IdType.IMDB)
self.assertEqual(site.page.item.__class__.__name__, 'TVSeason')
self.assertEqual(site.page.item.imdb, 'tt1159991')
+ self.assertIsNotNone(site.page.item.show)
+ self.assertEqual(site.page.item.show.imdb, 'tt0436992')
class DoubanMovieTVTestCase(TestCase):
@@ -68,6 +70,8 @@ class DoubanMovieTVTestCase(TestCase):
url3 = 'https://movie.douban.com/subject/3627919/'
p3 = SiteList.get_site_by_url(url3).get_page_ready()
self.assertEqual(p3.item.__class__.__name__, 'TVSeason')
+ self.assertIsNotNone(p3.item.show)
+ self.assertEqual(p3.item.show.imdb, 'tt0436992')
@use_local_response
def test_scrape_singleseason(self):
diff --git a/test_data/https___api_themoviedb_org_3_find_tt7660970_api_key_19890604_language_zh_CN_external_source_imdb_id b/test_data/https___api_themoviedb_org_3_find_tt7660970_api_key_19890604_language_zh_CN_external_source_imdb_id
new file mode 100644
index 00000000..31ef4b53
--- /dev/null
+++ b/test_data/https___api_themoviedb_org_3_find_tt7660970_api_key_19890604_language_zh_CN_external_source_imdb_id
@@ -0,0 +1 @@
+{"movie_results":[],"person_results":[],"tv_results":[{"adult":false,"backdrop_path":"/8IC1q0lHFwi5m8VtChLzIfmpaZH.jpg","id":86941,"name":"北海鲸梦","original_language":"en","original_name":"The North Water","overview":"改编自伊恩·麦奎尔的同名获奖小说,聚焦19世纪一次灾难性的捕鲸活动。故事围绕帕特里克·萨姆纳展开,他是一名声名狼藉的前战地医生,后成为捕鲸船上的医生,在船上遇到了鱼叉手亨利·德拉克斯,一个残忍、不道德的杀手。萨姆纳没有逃离过去的恐惧,而是被迫在北极荒原上为生存而进行残酷的斗争...","poster_path":"/9CM0ca8pX1os3SJ24hsIc0nN8ph.jpg","media_type":"tv","genre_ids":[18,9648],"popularity":11.318,"first_air_date":"2021-07-14","vote_average":7.5,"vote_count":75,"origin_country":["US"]}],"tv_episode_results":[],"tv_season_results":[]}
\ No newline at end of file
diff --git a/test_data/https___book_douban_com_works_1008677_ b/test_data/https___book_douban_com_works_1008677_
new file mode 100644
index 00000000..d0478b45
--- /dev/null
+++ b/test_data/https___book_douban_com_works_1008677_
@@ -0,0 +1,2516 @@
+
+
+
+
+
+
+
+ 黄金时代 全部版本(31)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
黄金时代 全部版本(31)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 花城出版社
+
+
+ 出版年:
+
+ 1999-3
+
+
+
+ 112518人想读
+
+ /
+
+ 243284人读过
+
+
+ 8.9
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 陕西师范大学出版社
+
+
+ 出版年:
+
+ 2009-07-01
+
+
+
+ 13627人想读
+
+ /
+
+ 50872人读过
+
+
+ 8.9
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+

+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 北京十月文艺出版社
+
+
+ 出版年:
+
+ 2017-4
+
+
+
+ 11603人想读
+
+ /
+
+ 44936人读过
+
+
+ 8.8
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 长江文艺出版社
+
+
+ 出版年:
+
+ 2006-8
+
+
+
+ 7372人想读
+
+ /
+
+ 10621人读过
+
+
+ 9.0
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 上海锦绣文章出版社
+
+
+ 出版年:
+
+ 2008-5
+
+
+
+ 949人想读
+
+ /
+
+ 5307人读过
+
+
+ 8.7
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 北京十月文艺出版社
+
+
+ 出版年:
+
+ 2011-10
+
+
+
+ 496人想读
+
+ /
+
+ 4052人读过
+
+
+ 8.8
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 译林出版社
+
+
+ 出版年:
+
+ 2012-1
+
+
+
+ 676人想读
+
+ /
+
+ 3189人读过
+
+
+ 9.1
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 王小波全集(第六卷)
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 云南人民出版社
+
+
+ 出版年:
+
+ 2007-1
+
+
+
+ 4207人想读
+
+ /
+
+ 4473人读过
+
+
+ 9.1
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 上海三联书店
+
+
+ 出版年:
+
+ 2013-1
+
+
+
+ 277人想读
+
+ /
+
+ 2494人读过
+
+
+ 8.8
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 北京十月文艺出版社
+
+
+ 出版年:
+
+ 2021-6
+
+
+
+ 1380人想读
+
+ /
+
+ 2372人读过
+
+
+ 9.1
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 长江文艺出版社
+
+
+ 出版年:
+
+ 2010-7-1
+
+
+
+ 265人想读
+
+ /
+
+ 2425人读过
+
+
+ 8.7
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 长江文艺出版社
+
+
+ 出版年:
+
+ 2016-10
+
+
+
+ 276人想读
+
+ /
+
+ 1951人读过
+
+
+ 8.9
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 湖南文艺出版社
+
+
+ 出版年:
+
+ 2016-1-1
+
+
+
+ 249人想读
+
+ /
+
+ 1982人读过
+
+
+ 8.8
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+

+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 上海三联书店
+
+
+ 出版年:
+
+ 2008-1
+
+
+
+ 506人想读
+
+ /
+
+ 1695人读过
+
+
+ 9.0
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 王小波全集(第六卷 中篇小说)
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 北京理工大学出版社
+
+
+ 出版年:
+
+ 2009-9
+
+
+
+ 25671人想读
+
+ /
+
+ 12093人读过
+
+
+ 9.2
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 北京工业大学出版社
+
+
+ 出版年:
+
+ 2012-10
+
+
+
+ 102人想读
+
+ /
+
+ 1273人读过
+
+
+ 8.8
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 北京联合出版公司
+
+
+ 出版年:
+
+ 2016-5-20
+
+
+
+ 242人想读
+
+ /
+
+ 864人读过
+
+
+ 8.7
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+

+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 中信出版社
+
+
+ 出版年:
+
+ 2015-8-30
+
+
+
+ 101人想读
+
+ /
+
+ 799人读过
+
+
+ 9.0
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 华夏出版社
+
+
+ 出版年:
+
+ 1994年9月
+
+
+
+ 141人想读
+
+ /
+
+ 836人读过
+
+
+ 8.8
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 作家出版社
+
+
+ 出版年:
+
+ 2016-7-1
+
+
+
+ 135人想读
+
+ /
+
+ 672人读过
+
+
+ 9.1
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 长江文艺出版社
+
+
+ 出版年:
+
+ 2014-7
+
+
+
+ 321人想读
+
+ /
+
+ 1304人读过
+
+
+ 8.9
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 重庆出版社
+
+
+ 出版年:
+
+ 2009年4月1日
+
+
+
+ 81人想读
+
+ /
+
+ 465人读过
+
+
+ 9.1
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 群言出版社
+
+
+ 出版年:
+
+ 2014-12-1
+
+
+
+ 26人想读
+
+ /
+
+ 349人读过
+
+
+ 8.8
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 上海文化出版社
+
+
+ 出版年:
+
+ 2012-1
+
+
+
+ 67人想读
+
+ /
+
+ 381人读过
+
+
+ 8.7
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代(珍藏版)
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 译林出版社
+
+
+ 出版年:
+
+ 2017-2
+
+
+
+ 145人想读
+
+ /
+
+ 309人读过
+
+
+ 9.5
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代(精装珍藏版)
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 浙江文艺出版社
+
+
+ 出版年:
+
+ 2016-2
+
+
+
+ 99人想读
+
+ /
+
+ 251人读过
+
+
+ 9.3
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 译林出版社
+
+
+ 出版年:
+
+ 2015-8
+
+
+
+ 19人想读
+
+ /
+
+ 107人读过
+
+
+ 9.3
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 北京十月文艺出版社
+
+
+ 出版年:
+
+ 2014-11
+
+
+
+ 7人想读
+
+ /
+
+ 66人读过
+
+
+ 8.2
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ 黃金時代
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ 王小波
+
+
+ 出版社:
+
+ 自由之丘
+
+
+ 出版年:
+
+ 2012-11-10
+
+
+
+ 38人想读
+
+ /
+
+ 55人读过
+
+
+ 9.6
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ Wang in Love and Bondage
+
+
+
+
+
+
+
+
+ 译者:
+
+ Hongling Zhang
+
+
+ 作者:
+
+ Wang Xiaobo
+
+
+ 出版社:
+
+ State University of New York Press
+
+
+ 出版年:
+
+ 2007-3-8
+
+
+
+ 107人想读
+
+ /
+
+ 35人读过
+
+
+ 8.1
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+ L'Age d'or
+
+
+
+
+
+
+
+
+
+ 作者:
+
+ Wang Xiaobo
+
+
+ 出版社:
+
+ Éditions du Sorgho
+
+
+ 出版年:
+
+ 2001-7-1
+
+
+
+ 2人想读
+
+ /
+
+ 2人读过
+
+ 评价人数不足
+
+
+
+
+
+
+
+ 加入购书单
+ 已在购书单
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test_data/https___www_goodreads_com_work_editions_1383900 b/test_data/https___www_goodreads_com_work_editions_1383900
new file mode 100644
index 00000000..e4f53e8f
--- /dev/null
+++ b/test_data/https___www_goodreads_com_work_editions_1383900
@@ -0,0 +1,4165 @@
+
+
+
+ Editions of Hyperion by Dan Simmons
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Hyperion
+ > Editions
+
+
+
+
+
+
+ by Dan Simmons
+
+ First published May 26th 1989
+
+
+
+
+
+
+

+
+
+
+
+ Published March 1990
+ by Bantam Doubleday Dell Publishing Group
+
+
+ Mass Market Paperback, 500 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780553283686
+
+ (ISBN10: 0553283685)
+
+
+
+
+
+ ASIN:
+
+
+ 0553283685
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.24
+
+ (197,888 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 12th 2011
+ by Spectra
+
+
+ Kindle Edition, 483 pages
+
+
+
+
+
+ ASIN:
+
+
+ B004G60EHS
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.38
+
+ (6,609 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 12th 2011
+ by Spectra
+
+
+ Kindle Edition, 483 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.32
+
+ (6,696 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published August 5th 2010
+ by Gateway
+
+
+ Kindle Edition, 498 pages
+
+
+
+
+
+ ASIN:
+
+
+ B0043M6780
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.33
+
+ (2,279 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 12th 2011
+ by Spectra
+
+
+ Kindle Edition, 483 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.33
+
+ (1,121 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published May 12th 2011
+ by Gollancz
+
+
+ SF Masterworks, Paperback, 473 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780575099432
+
+ (ISBN10: 0575099437)
+
+
+
+
+
+ ASIN:
+
+
+ 0575099437
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.26
+
+ (853 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published August 15th 2017
+ by Del Rey Books
+
+
+ Paperback, 483 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780399178610
+
+ (ISBN10: 0399178619)
+
+
+
+
+
+ ASIN:
+
+
+ 0399178619
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.32
+
+ (423 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published November 2015
+ by Ediciones B
+
+
+ NOVA, Hardcover, 646 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788466658034
+
+ (ISBN10: 8466658033)
+
+
+
+
+
+ ASIN:
+
+
+ 8466658033
+
+
+
+
+ Edition language:
+
+
+ Spanish
+
+
+
+
+ Average rating:
+
+
+ 4.34
+
+ (370 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2000
+ by АСТ
+
+
+ Золотая библиотека фантастики, Hardcover, 672 pages
+
+
+
+
+
+ ISBN:
+
+
+
+ (ISBN10: 5237045200)
+
+
+
+
+
+ ASIN:
+
+
+ 5237045200
+
+
+
+
+ Edition language:
+
+
+ Russian
+
+
+
+
+ Average rating:
+
+
+ 4.47
+
+ (517 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published December 2005
+ by Gollancz
+
+
+ Paperback, 480 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780575076372
+
+ (ISBN10: 0575076372)
+
+
+
+
+
+ ASIN:
+
+
+ 0575076372
+
+
+
+
+ Average rating:
+
+
+ 4.24
+
+ (377 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published September 9th 2015
+ by MAG
+
+
+ Artefakty, Hardcover, 624 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788374805575
+
+ (ISBN10: 8374805579)
+
+
+
+
+
+ ASIN:
+
+
+ 8374805579
+
+
+
+
+ Edition language:
+
+
+ Polish
+
+
+
+
+ Average rating:
+
+
+ 4.43
+
+ (295 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2005
+ by Laguna
+
+
+ Paperback, 436 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788674362440
+
+ (ISBN10: 8674362443)
+
+
+
+
+
+ ASIN:
+
+
+ B004HBU5IU
+
+
+
+
+ Edition language:
+
+
+ Serbian
+
+
+
+
+ Average rating:
+
+
+ 4.49
+
+ (291 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 12th 2011
+ by Bantam Spectra
+
+
+ ebook, 496 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780307781888
+
+ (ISBN10: 0307781887)
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.19
+
+ (203 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published December 22nd 2008
+ by Audible Studios
+
+
+ Unabridged, Audible Audio, 22 pages
+
+
+
+
+
+ Edition language:
+
+
+ Spanish
+
+
+
+
+ Average rating:
+
+
+ 3.97
+
+ (173 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published May 26th 1989
+ by Broadway Books
+
+
+ Paperback, 492 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780385263481
+
+ (ISBN10: 0385263481)
+
+
+
+
+
+ ASIN:
+
+
+ 0385263481
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.38
+
+ (148 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published October 2011
+ by Fanucci
+
+
+ TIF Extra, Paperback, 455 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788834718155
+
+ (ISBN10: 8834718151)
+
+
+
+
+
+ ASIN:
+
+
+ 8834718151
+
+
+
+
+ Edition language:
+
+
+ Italian
+
+
+
+
+ Average rating:
+
+
+ 4.23
+
+ (193 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2005
+ by Gollancz
+
+
+ Paperback, 473 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.31
+
+ (173 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 1995
+ by Бард
+
+
+ "Избрана световна фантастика", № 20, Paperback, 544 pages
+
+
+
+
+
+ ISBN:
+
+
+
+ (ISBN10: 9545850031)
+
+
+
+
+
+ Edition language:
+
+
+ Bulgarian
+
+
+
+
+ Average rating:
+
+
+ 4.50
+
+ (206 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 1990
+ by Headline
+
+
+ Paperback, 502 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780747234821
+
+ (ISBN10: 0747234825)
+
+
+
+
+
+ ASIN:
+
+
+ 0747234825
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.23
+
+ (191 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published May 26th 1989
+ by Doubleday
+
+
+ Hardcover, 482 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780385249492
+
+ (ISBN10: 0385249497)
+
+
+
+
+
+ ASIN:
+
+
+ 0385249497
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.35
+
+ (133 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published December 22nd 2008
+ by Audible Frontiers
+
+
+ Audiobook
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.05
+
+ (242 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published June 1st 2005
+ by Ediciones B
+
+
+ Paperback, 618 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788466617352
+
+ (ISBN10: 8466617353)
+
+
+
+
+
+ ASIN:
+
+
+ 8466617353
+
+
+
+
+ Edition language:
+
+
+ Spanish
+
+
+
+
+ Average rating:
+
+
+ 4.29
+
+ (194 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published October 26th 2007
+ by Wydawnictwo Mag
+
+
+ Polish Edition, Hardcover, 617 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788374800747
+
+ (ISBN10: 8374800747)
+
+
+
+
+
+ ASIN:
+
+
+ 8374800747
+
+
+
+
+ Edition language:
+
+
+ Polish
+
+
+
+
+ Average rating:
+
+
+ 4.41
+
+ (229 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published September 2009
+ by B de Bolsillo
+
+
+ Mass Market Paperback, 618 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788498723069
+
+ (ISBN10: 849872306X)
+
+
+
+
+
+ ASIN:
+
+
+ 849872306X
+
+
+
+
+ Edition language:
+
+
+ Spanish
+
+
+
+
+ Average rating:
+
+
+ 4.32
+
+ (159 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2011
+ by Gollancz
+
+
+ Paperback, 473 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9781407234663
+
+ (ISBN10: 1407234668)
+
+
+
+
+
+ ASIN:
+
+
+ 1407234668
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.18
+
+ (129 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2016
+ by Навчальна книга — Богдан
+
+
+ Hardcover, 448 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9789661046435
+
+
+
+
+ Edition language:
+
+
+ Ukrainian
+
+
+
+
+ Average rating:
+
+
+ 4.63
+
+ (134 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published October 1993
+ by Mondadori
+
+
+ Bestsellers #350, Paperback, 422 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788804376149
+
+ (ISBN10: 8804376147)
+
+
+
+
+
+ ASIN:
+
+
+ 8804376147
+
+
+
+
+ Edition language:
+
+
+ Italian
+
+
+
+
+ Average rating:
+
+
+ 4.25
+
+ (125 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published September 10th 2014
+ by Pocket
+
+
+ Mass Market Paperback, 638 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9782266252584
+
+ (ISBN10: 2266252585)
+
+
+
+
+
+ ASIN:
+
+
+ 2266252585
+
+
+
+
+ Edition language:
+
+
+ French
+
+
+
+
+ Average rating:
+
+
+ 4.14
+
+ (97 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published November 18th 2015
+ by B DE BOOKS
+
+
+ Kindle Edition, 618 pages
+
+
+
+
+
+ ASIN:
+
+
+ B016OK7L38
+
+
+
+
+ Edition language:
+
+
+ Spanish
+
+
+
+
+ Average rating:
+
+
+ 4.53
+
+ (106 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2004
+ by Gollancz
+
+
+ Hardcover, 473 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780575081147
+
+ (ISBN10: 0575081147)
+
+
+
+
+
+ ASIN:
+
+
+ 0575081147
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.33
+
+ (97 ratings)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Welcome back. Just a moment while we sign you in to your Goodreads account.
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test_data/https___www_goodreads_com_work_editions_153313 b/test_data/https___www_goodreads_com_work_editions_153313
new file mode 100644
index 00000000..66e07e99
--- /dev/null
+++ b/test_data/https___www_goodreads_com_work_editions_153313
@@ -0,0 +1,4019 @@
+
+
+
+ Editions of 1984 by George Orwell
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1984
+ > Editions
+
+
+
+
+
+
+ by George Orwell
+
+ First published June 8th 1949
+
+
+
+
+
+
+

+
+
+
+
+ Published July 1st 1950
+ by New American Library
+
+
+ Signet Classics, Mass Market Paperback, 328 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.15
+
+ (2,243,089 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published September 3rd 2013
+ by Houghton Mifflin Harcourt
+
+
+ Kindle Edition, 298 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.24
+
+ (1,412,268 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 2022
+ by Plume
+
+
+ Centennial Edition, Paperback, 368 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780452284234
+
+ (ISBN10: 0452284236)
+
+
+
+
+
+ ASIN:
+
+
+ B00A2MTYAI
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.20
+
+ (128,662 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published September 3rd 2013
+ by Houghton Mifflin Harcourt
+
+
+ Kindle Edition, 258 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.23
+
+ (20,195 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 3rd 2008
+ by Penguin Books
+
+
+ Paperback, 336 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780141036144
+
+ (ISBN10: 0141036141)
+
+
+
+
+
+ ASIN:
+
+
+ B006QNC5VC
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.21
+
+ (23,826 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published May 6th 2003
+ by Plume
+
+
+ Centennial Edition, Paperback, 339 pages
+
+
+
+
+
+ ASIN:
+
+
+ 0452284236
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.23
+
+ (12,939 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published June 1st 2006
+ by المركز الثقافي العربي
+
+
+ First Edition, Paperback, 351 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9789953681443
+
+ (ISBN10: 9953681449)
+
+
+
+
+
+ ASIN:
+
+
+ 9953681449
+
+
+
+
+ Edition language:
+
+
+ Arabic
+
+
+
+
+ Average rating:
+
+
+ 4.28
+
+ (5,545 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 29th 2004
+ by Penguin Books Ltd
+
+
+ Penguin Modern Classics, Paperback, 355 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.28
+
+ (5,764 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 1989
+ by Mondadori
+
+
+ Oscar classici moderni #19, Paperback, 322 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788804507451
+
+ (ISBN10: 8804507454)
+
+
+
+
+
+ ASIN:
+
+
+ 8804507454
+
+
+
+
+ Edition language:
+
+
+ Italian
+
+
+
+
+ Average rating:
+
+
+ 4.44
+
+ (3,995 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published March 2013
+ by Debolsillo
+
+
+ Paperback, 350 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788499890944
+
+ (ISBN10: 8499890946)
+
+
+
+
+
+ ASIN:
+
+
+ 8499890946
+
+
+
+
+ Edition language:
+
+
+ Spanish
+
+
+
+
+ Average rating:
+
+
+ 4.26
+
+ (3,796 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 1998
+ by Panstwowy Instytut Wydawniczy
+
+
+ Klub interesujacej ksiazki, Paperback, 206 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788306018066
+
+ (ISBN10: 8306018060)
+
+
+
+
+
+ ASIN:
+
+
+ 8306018060
+
+
+
+
+ Edition language:
+
+
+ Polish
+
+
+
+
+ Average rating:
+
+
+ 4.43
+
+ (3,090 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 1982
+ by نیلوفر
+
+
+ Paperback, 272 pages
+
+
+
+
+
+ ASIN:
+
+
+ 9644480449
+
+
+
+
+ Edition language:
+
+
+ Persian
+
+
+
+
+ Average rating:
+
+
+ 4.25
+
+ (3,022 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2013
+ by Penguin Books
+
+
+ Great Orwell, Paperback, 355 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780141393049
+
+ (ISBN10: 0141393041)
+
+
+
+
+
+ ASIN:
+
+
+ 0141393041
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.30
+
+ (3,966 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published February 2014
+ by Can Yayınları
+
+
+ Paperback, 352 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9789750718533
+
+
+
+
+ ASIN:
+
+
+ 9750718534
+
+
+
+
+ Edition language:
+
+
+ Turkish
+
+
+
+
+ Average rating:
+
+
+ 4.56
+
+ (3,112 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published September 2021
+ by Houghton Mifflin Harcourt
+
+
+ Kindle Edition, 205 pages
+
+
+
+
+
+ ASIN:
+
+
+ B003JTHWKU
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.19
+
+ (1,517 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 1950
+ by Signet Classics
+
+
+ Mass Market Paperback, 268 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.12
+
+ (3,854 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 1990
+ by Penguin
+
+
+ Paperback, 326 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9780140126716
+
+ (ISBN10: 0140126716)
+
+
+
+
+
+ ASIN:
+
+
+ 0140126716
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.23
+
+ (3,246 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2003
+ by Signet Classic
+
+
+ George Orwell Centennial Edition, Mass Market Paperback, 328 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.24
+
+ (2,422 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 21st 2009
+ by Companhia das Letras
+
+
+ Paperback, 416 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788535914849
+
+ (ISBN10: 8535914846)
+
+
+
+
+
+ ASIN:
+
+
+ 8535914846
+
+
+
+
+ Edition language:
+
+
+ Portuguese
+
+
+
+
+ Average rating:
+
+
+ 4.47
+
+ (2,573 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 29th 2004
+ by Penguin
+
+
+ Kindle Edition, 322 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.39
+
+ (2,981 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published March 14th 2012
+ by Penguin Books
+
+
+ Penguin Modern Classics, Paperback, 355 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.19
+
+ (2,761 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published May 16th 2020
+
+
+ Kindle Edition, 205 pages
+
+
+
+
+
+ ASIN:
+
+
+ B088RKKYCC
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.25
+
+ (1,229 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published April 1st 1983
+ by Plume
+
+
+ Paperback, 294 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.14
+
+ (2,301 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 5th 2021
+
+
+ Kindle Edition, 310 pages
+
+
+
+
+
+ ASIN:
+
+
+ B088H7KLCG
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.28
+
+ (1,687 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2007
+ by Antígona
+
+
+ Paperback, 327 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9789726081890
+
+ (ISBN10: 9726081890)
+
+
+
+
+
+ ASIN:
+
+
+ B004ZKY8NG
+
+
+
+
+ Edition language:
+
+
+ Portuguese
+
+
+
+
+ Average rating:
+
+
+ 4.45
+
+ (2,078 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 1996
+ by Signet Classics
+
+
+ Mass Market Paperback, 268 pages
+
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.06
+
+ (2,398 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2013
+ by ناوەندی ئەندێشە
+
+
+ چاپی دووەم, 380 pages
+
+
+
+
+
+ Edition language:
+
+
+ Kurdish
+
+
+
+
+ Average rating:
+
+
+ 4.31
+
+ (1,209 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published May 25th 2017
+ by Biblios
+
+
+ Kindle Edition, 255 pages
+
+
+
+
+
+ ASIN:
+
+
+ B07DBP8T2F
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 4.25
+
+ (1,460 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published 2013
+ by المركز الثقافي العربي
+
+
+ الثالثة, Paperback, 351 pages
+
+
+
+
+
+ Edition language:
+
+
+ Arabic
+
+
+
+
+ Average rating:
+
+
+ 4.27
+
+ (1,352 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published June 21st 2016
+ by Mondadori
+
+
+ Oscar Moderni #36, Paperback, 323 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788804668237
+
+ (ISBN10: 8804668237)
+
+
+
+
+
+ ASIN:
+
+
+ 8804668237
+
+
+
+
+ Edition language:
+
+
+ Italian
+
+
+
+
+ Average rating:
+
+
+ 4.35
+
+ (1,622 ratings)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Welcome back. Just a moment while we sign you in to your Goodreads account.
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test_data/https___www_goodreads_com_work_editions_24173962 b/test_data/https___www_goodreads_com_work_editions_24173962
new file mode 100644
index 00000000..926b3443
--- /dev/null
+++ b/test_data/https___www_goodreads_com_work_editions_24173962
@@ -0,0 +1,4160 @@
+
+
+
+ Editions of 黄金时代 by Wang Xiaobo
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 黄金时代
+ > Editions
+
+
+
+
+
+
+ by Wang Xiaobo
+
+ First published 1991
+
+
+
+
+
+
+

+
+
+
+
+ Published November 22nd 2012
+ by 长江文艺出版社
+
+
+ 第1版, Kindle Edition, 298 pages
+
+
+
+
+
+ ASIN:
+
+
+ B009PG5Z96
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.39
+
+ (482 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 26th 2022
+ by Astra House
+
+
+ Hardcover, 288 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9781662601217
+
+ (ISBN10: 1662601212)
+
+
+
+
+
+ ASIN:
+
+
+ 1662601212
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 3.58
+
+ (31 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published March 11th 2020
+ by Galaxia Gutenberg
+
+
+ Paperback, 136 pages
+
+
+
+
+
+ ISBN:
+
+
+
+ (ISBN10: 9788417971)
+
+
+
+
+
+ Edition language:
+
+
+ Spanish
+
+
+
+
+ Average rating:
+
+
+ 3.26
+
+ (61 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published October 1st 2019
+ by منشورات المتوسط - بيت الحكمة
+
+
+ الطبعة الأولى, Paperback, 512 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788832201154
+
+
+
+
+ ASIN:
+
+
+ 8832201151
+
+
+
+
+ Edition language:
+
+
+ Arabic
+
+
+
+
+ Average rating:
+
+
+ 3.42
+
+ (12 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published November 18th 2021
+ by Państwowy Instytut Wydawniczy
+
+
+ Paperback, 190 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788381963343
+
+ (ISBN10: 8381963346)
+
+
+
+
+
+ ASIN:
+
+
+ 8381963346
+
+
+
+
+ Edition language:
+
+
+ Polish
+
+
+
+
+ Average rating:
+
+
+ 3.84
+
+ (19 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 1st 2010
+ by 长江文艺出版社
+
+
+ 王小波小说全集 丛书, Kindle Edition, 304 pages
+
+
+
+
+
+ ASIN:
+
+
+ B00DNX7Y1E
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.68
+
+ (22 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published December 1st 2014
+ by 群言出版社
+
+
+ 先锋文库03, Hardcover, 331 pages
+
+
+
+
+
+ ISBN:
+
+
+
+ (ISBN10: 780256610X)
+
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.57
+
+ (21 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published April 1999
+ by 花城出版社
+
+
+ Paperback, 375 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787536025080
+
+ (ISBN10: 7536025084)
+
+
+
+
+
+ ASIN:
+
+
+ 7806859950
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.63
+
+ (27 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 1st 2001
+ by Éditions du Sorgho
+
+
+ Paperback, 146 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9782914446013
+
+ (ISBN10: 2914446012)
+
+
+
+
+
+ ASIN:
+
+
+ 2914446012
+
+
+
+
+ Edition language:
+
+
+ French
+
+
+
+
+ Average rating:
+
+
+ 4.27
+
+ (22 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published June 1st 2013
+ by 长江文艺出版社
+
+
+ Hardcover, 396 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787535464187
+
+ (ISBN10: 7535464181)
+
+
+
+
+
+ ASIN:
+
+
+ 7535464181
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.46
+
+ (24 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published
+ by 长江文艺出版社
+
+
+ 王小波小说全集 丛书, Kindle Edition, 357 pages
+
+
+
+
+
+ ASIN:
+
+
+ B075QD9NZZ
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.80
+
+ (10 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 1st 2009
+ by 陕西师范大学出版社
+
+
+ Paperback, 413 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787561327470
+
+ (ISBN10: 7561327471)
+
+
+
+
+
+ ASIN:
+
+
+ 7561327471
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.65
+
+ (20 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published November 10th 2012
+ by 自由之丘
+
+
+ Paperback, 448 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9789868835986
+
+
+
+
+ ASIN:
+
+
+ 9868835984
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.20
+
+ (15 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 26th 2022
+ by Astra House
+
+
+ Kindle Edition, 288 pages
+
+
+
+
+
+ ASIN:
+
+
+ B09KFYM9HX
+
+
+
+
+ Edition language:
+
+
+ English
+
+
+
+
+ Average rating:
+
+
+ 2.60
+
+ (5 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published April 1st 2017
+ by 北京十月文艺出版社
+
+
+ Hardcover, 235 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787530216606
+
+
+
+
+ ASIN:
+
+
+ 7530216600
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.33
+
+ (15 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published April 1st 2017
+ by 北京十月文艺出版社
+
+
+ Kindle Edition, 235 pages
+
+
+
+
+
+ ASIN:
+
+
+ B074K4GLBX
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.20
+
+ (5 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published December 1st 2014
+ by 群言出版社
+
+
+ 先锋文库03, Hardcover, 331 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787802566101
+
+
+
+
+ ASIN:
+
+
+ 780256610X
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.22
+
+ (9 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 7th 2009
+ by 陕西师范大学出版社
+
+
+ 最新修订插图典藏版, Kindle Edition, 299 pages
+
+
+
+
+
+ ASIN:
+
+
+ B075QCLDHC
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.40
+
+ (5 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published March 11th 2020
+ by Galaxia Gutenberg
+
+
+ Paperback, 132 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9788417971625
+
+ (ISBN10: 8417971629)
+
+
+
+
+
+ ASIN:
+
+
+ 8417971629
+
+
+
+
+ Edition language:
+
+
+ Spanish
+
+
+
+
+ Average rating:
+
+
+ 3.50
+
+ (4 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 1st 2016
+ by 湖南文藝出版社
+
+
+ 插图珍藏本, Paperback, 393 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787540473853
+
+
+
+
+ ASIN:
+
+
+ 7540473851
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 5.00
+
+ (3 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published September 8th 2020
+ by Pine & Crane
+
+
+ Hardcover
+
+
+
+
+
+ ISBN:
+
+
+ 9781635923049
+
+ (ISBN10: 1635923042)
+
+
+
+
+
+ ASIN:
+
+
+ 1635923042
+
+
+
+
+ Average rating:
+
+
+ 2.50
+
+ (2 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 1st 2010
+
+
+ Kindle Edition, 400 pages
+
+
+
+
+
+ ASIN:
+
+
+ B07143MQKL
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.00
+
+ (2 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published August 1st 2006
+ by 长江文艺出版社
+
+
+ 王小波小说全集 丛书, Kindle Edition, 355 pages
+
+
+
+
+
+ ASIN:
+
+
+ B06XC77YJS
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.67
+
+ (3 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published May 2008
+ by 上海锦绣文章出版社
+
+
+ Large Print, Paperback, 138 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787806859957
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.00
+
+ (1 rating)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 1st 2016
+ by 作家出版社
+
+
+ Paperback, 384 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787506384100
+
+ (ISBN10: 7506384108)
+
+
+
+
+
+ ASIN:
+
+
+ 7506384108
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 2.00
+
+ (1 rating)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 2013
+ by 上海三联书店
+
+
+ Paperback, 400 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787542637949
+
+
+
+
+ ASIN:
+
+
+ 7542637940
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 5.00
+
+ (1 rating)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 1st 2016
+ by 浙江文藝出版社
+
+
+ 精选珍藏04, Hardcover, 386 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787533944254
+
+
+
+
+ ASIN:
+
+
+ 7533944259
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 0.0
+
+ (0 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published January 2008
+ by 上海三联书店
+
+
+ 505 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787542627049
+
+
+
+
+ ASIN:
+
+
+ 754262704X
+
+
+
+
+ Average rating:
+
+
+ 0.0
+
+ (0 ratings)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published July 2010
+ by 长江文艺出版社
+
+
+ Paperback, 298 pages
+
+
+
+
+
+ ISBN:
+
+
+ 9787535444752
+
+
+
+
+ ASIN:
+
+
+ 753544475X
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 5.00
+
+ (1 rating)
+
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+ Published August 1st 2006
+ by 长江文艺出版社
+
+
+ 王小波小说全集 丛书, Paperback
+
+
+
+
+
+ ISBN:
+
+
+ 9787535433459
+
+ (ISBN10: 7535433456)
+
+
+
+
+
+ ASIN:
+
+
+ 7535433456
+
+
+
+
+ Edition language:
+
+
+ Chinese
+
+
+
+
+ Average rating:
+
+
+ 4.00
+
+ (1 rating)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Welcome back. Just a moment while we sign you in to your Goodreads account.
+

+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file