2017-03-31 5 views
0

enter image description hereリンクからいくつかのデータを削り取ろうとしています:http://www.airlinequality.com/airline-reviews/vietjetair/?sortby=post_date%3ADesc&pagesize=100 たとえば、私はBeautifulSoupを使って各レビューアの名前を抽出しようとしていますが、動作しません。私は他のウェブサイトでBeautifulSoupを使う前に試してみました。私は何が起こっているのか分からない。手伝って頂けますか。コードは以下の通りです:Beautifulsoup-Pythonでラッピングする

from bs4 import BeautifulSoup 
import os 
import urllib.request 


file1 = open(os.path.expanduser(r"~/Desktop/Skytrax Reviews1.csv"), "wb") 

file1.write(b"Reviewer" + b"\n") 

WebSites = ["http://www.airlinequality.com/airline-reviews/vietjetair/?sortby=post_date%3ADesc&pagesize=100"] 


# looping through each site until it hits a break. I will create a loop. It is not ready yet 
for theurl in WebSites: 
    thepage = urllib.request.urlopen(theurl) 
    print(thepage) 
    soup = BeautifulSoup(thepage,'lxml') 
    print(soup) #<-------This is the main problem 

#Maybe it is not correct too but the main problem is at the above lines 
    for Reviewer in soup.findAll(attrs={"class": "text_sub_header userStatusWrapper"}).text: 
     print(Reviewer) 

     Record1 = Reviewer 
     file1.write(bytes(Record1, encoding="ascii", errors='ignore') + b"\n") 


file1.close() 

答えて

0

サイトを試す、あなたがブラウザに表示されるものを返すされていません。

wget -qO- http://www.airlinequality.com/airline-reviews/vietjetair/?sortby=post_date%3ADesc&pagesize=100 

やリクエストのユーザーエージェントを変更してみてください。

+0

。私はあなたのものと同じリンクを使用してPythonで新しいです。 –

0

Chrome Network ToolsまたはFirebugでそのウェブサイトを開くと、cookiesを使用してリクエストを検証することに気づくでしょう。

クッキーをエミュレートするには、dictをPythonで作成し、要求に応じて送信します。

私の例では、私はrequestsを使用しています。また、ループに.textを入れてはいけません。エラーになります。あなたの答えをありがとう@Rusa_x

from bs4 import BeautifulSoup 
import requests 

cookies = { 
'PHPSESSID':'1gd0sknluds2uvumsglth523g5', 
'visid_incap_965359':'UGNtvJR1TAmP1y+/M85QuJ1s3lgAAAAAQUIPAAAAAAB5IOYuRCw/9mMOpTnRDCJ6', 
'incap_ses_315_965359':'PRZ8WIgqnhyeicz5PxxfBLFs3lgAAAAAYWoblc6exwqhEeGRPqgA5Q==' 
} 

response = requests.get('http://www.airlinequality.com/airline- 
reviews/vietjetair/?sortby=post_date%3ADesc&pagesize=100', cookies=cookies) 
soup = BeautifulSoup(response.content, "html.parser") 
for Reviewer in soup.findAll(attrs={"class": "text_sub_header userStatusWrapper"}): 
    print(Reviewer.get_text(strip=True)) 

Cookies

+0

あなたの答えをありがとう!しかし、スープを作る= BeautifulSoup(response.content、 "html.parser")私は同じ答えをとる。<

+0

さまざまなクッキー値を使用する - ネットワークツールにアクセスし、テストするユーザーを探します。 – Zroq

+0

@Zrop。私はクッキーを変更しますが、コードプリント(Reviewer.get_text(strip = True))は何も印刷しません。 –

関連する問題