2017-07-28 120 views
0

我有這個網址:https://www.ft.com/content/87d644fc-73a4-11e7-aca6-c6bd07df1a3c登錄和刮像ft.com網站與BeautifulSoup

它對應於需要註冊的文章。我註冊並可以在瀏覽器中看到內容。但是,當我使用上面的網址代碼:

soup = BeautifulSoup(urllib2.urlopen(url), 'lxml') 
with open('ctp_output.txt', 'w') as f: 
    for tag in soup.find_all('p'): 
     f.write(tag.text.encode('utf-8') + '\n') 

尤其是,它在註冊頁面上重定向我。刮刮時有沒有辦法登錄來訪問文章?

回答

0

以下是基本知識。

轉到登錄頁面。如果您使用Chrome瀏覽器,則可以將鼠標放在電子郵件輸入區域上,然後使用上下文菜單(在Windows中),然後使用其「檢查」條目來顯示將用於提交電子郵件地址的form元素。它看起來像這樣。

<form name="enter-email-form" action="/login/submitEmail" class="js-email-lookup-form" method="POST" data-test-id="enter-email-form" novalidate="true"> 
     <input type="hidden" name="location" value="https://www.ft.com/content/87d644fc-73a4-11e7-aca6-c6bd07df1a3c"> 
     <input type="hidden" name="continueUrl" value=""> 
     <input type="hidden" name="readerId" value=""> 
     <input type="hidden" name="loginUrl" value="/login?location=https%3A%2F%2Fwww.ft.com%2Fcontent%2F87d644fc-73a4-11e7-aca6-c6bd07df1a3c"> 
     <div class="lgn-box__title"> 
      <h1 class="lgn-heading--alpha">Sign in</h1> 
     </div> 
     <div class="o-forms-group"> 
      <label for="email" class="o-forms-label">Email address</label> 
      <input type="email" id="email" class="o-forms-text js-email" name="email" maxlength="64" autocomplete="off" autofocus="" required=""> 
      <input type="password" id="password" name="password" style="display:none"> 
      <label for="password"> 
     </label></div> 
     <div class="o-forms-group"> 
      <button class="o-buttons o-buttons--standout o-buttons--big" type="submit" name="Next">Next</button> 
     </div> 
    </form> 

您將需要從form元素收集action屬性和所有input報表的名稱 - 值對。您可以在requests library的POST請求中使用它們。

您可以爲您的電子郵件地址和密碼輸入一次。然後,您應該可以通過請求發佈URL的GET。

我必須警告你,我沒有真正嘗試過這個特定的網站。

+0

好的,謝謝,我會盡力,並讓你張貼! – ben

+0

如果你這樣做,那麼我們可以改變你的問題的標題,例如登錄到ft.com,以便其他人可以從你的經驗中受益。 –

+1

絕對是!有效! – ben