読書メーターに登録した読みたい本からISBNをPythonでスクレイピング (Scraping bookmeter.com with Python)

読書メーターから「読みたい本」のISBNコードをスクレイピングした。読みたい本として登録した一覧は下記のURLでアクセスできる。
http://bookmeter.com/u/<bookmeterID>/booklistpre&p=<int:page_number>
xpath使ってそれぞれのISBNにアクセスする。読書メーター側に負担をかけないよう、ページの読み込みごとに1秒待たせている。

# main code

def get_isbns(bookmeterID):
    """
    bookmeterID: Access your bookmeter page. Check the URL. You will see bookmeter.com/u/. Let number be an argument.
    The function returns a list of ISBNs
    """
    ISBN10s = []
    page=1
    while True:
        url = 'http://bookmeter.com/u/{id}/booklistpre&p={page}'.format(**{'id':bookmeterID, 'page':page})
        nextISBN10s = getISBNfromURL(url)
#         print(page, nextISBN10s)
        if nextISBN10s:
            ISBN10s.extend(nextISBN10s)
            page+=1
            time.sleep(1)
        else:
            break
    return ISBN10s

def getISBNfromURL(url):
    """
    used in get_isbns(bookmeterID)
    """
    page = requests.get(url)
    tree = lxml.html.fromstring(page.content)
    href_list = tree.xpath('//div[@class="book_box_book_title"]/a/@href')
    ISBN10 = [href[3:] for href in href_list if href.startswith('/b')]
    return ISBN10

コメント