【发布时间】:2017-12-26 19:17:40
【问题描述】:
我正在尝试从 Goodreads.com 上抓取一本特定书籍的所有评论。
url= https://www.goodreads.com/book/show/320.One_Hundred_Years_of_Solitude?ac=1&from_search=true
这在使用 python 和 Beautiful Soup 的第一页上非常成功,但我的问题是试图抓取后续页面的评论。我遇到了问题,因为生成的每个新页面都有相同的 url(所以我只得到第 1 页的评论)。当我检查 html 时,似乎新页面是通过 ajax 请求生成的。
<a class="previous_page" href="#" onclick="new Ajax.Request('/book/reviews/320.One_Hundred_Years_of_Solitude?authenticity_token=sZXyhbZUmjF0yvXFy3p2w3PllReMI02adUUeA5yOHzvY1ypaIv1z9e70UMgH1mDpx5FHr%2FakQ4rG7Ge5ZoD6zQ%3D%3D&amp;hide_last_page=true&amp;page=1', {asynchronous:true, evalScripts:true, method:'get', parameters:'authenticity_token=' + encodeURIComponent('4sfXlAmAjNZyCOAnywx+OVJZ1rHkR3E065/m/pbsTC6LhQ9LnSllEug2RSoHoGgT5i0ECZ7AfyRYNp9EbOKp2A==')}); return false;">« previous</a>
总的来说,我对网络抓取非常陌生,不知道如何从中获取我需要的信息。任何朝着正确方向的点都会很棒。
谢谢
【问题讨论】:
-
要么注意 Ajax 请求 URL 的模式,要么使用 selenium
标签: python html ajax web-scraping beautifulsoup