2016-07-18 7 views
0

私はそれが名内のすべてのテキストを印刷するスクリプトなぜ私のpythonスクレイピングスクリプトが別のURLのために働いていないのですか?

import requests 
from bs4 import BeautifulSoup 
url = requests.get("http://www.yellowpages.com/search?search_terms=coffee&geo_location_terms=Los%20Angeles%2C%20CA") 


url.content 
soup = BeautifulSoup(url.content) 
print (soup.prettify()) 


g_data = soup.find_all("div", {"class": "info"}) 
for item in g_data: 
print (item.contents[0].find_all("a", {"class": "business-name"})[0].text) 

以下の書いた2つの異なるURLが第一のURLのための

http://www.yellowpages.com/search?search_terms=coffee&geo_location_terms=Los%20Angeles%2C%20CA

http://www.yellowpages.com.au/search/listings?clue=concrete+contractors&locationClue=nsw+australia&lat=&lon=&selectedViewMode=list

のためのpythonを使用してスクレイピングスクリプトを書きましたビジネス。しかし、私は2番目のurlのために構造化されているが異なるスクリプトを使用していたとき、それはURLのコンテンツを取得しますが、1番目のURLと同じようにページのenitreコンテンツではありません。

第二URLスクリプト

import requests 
from bs4 import BeautifulSoup 
url = requests.get("http://www.yellowpages.com.au/search/listings?clue=concrete+contractors&locationClue=nsw+australia&lat=&lon=&selectedViewMode=list") 


url.content 
soup = BeautifulSoup(url.content) 
print (soup.prettify()) 


g_data = soup.find_all("div", {"class": "body left"}) 
for item in g_data: 
print (item.contents[0].find_all("a", {"class": "listing-name"})[0].text) 

それは最初のスクリプトとして動作していないとあなたが最初soup.prettify()の内容を確認する必要があり、ビジネス

答えて

0

の名前を与えていない理由私の質問です。 www.yellowpages.com.auのウェブサイトはファイアウォールで保護されているため、実際の人間が自分の情報にアクセスしていることが保証されます。
最初の手順が正常であれば、ウェブサイトのコンテンツを取得して残りのコードをデバッグできます。たぶんfind_allのattr引数が間違っている、Searching by CSS class

+0

soup.prettify()は動作していますが、最初のURLとしてページソースのenitre HTMLコンテンツを抽出していません。どのように私は最初のページとしてHTMLコンテンツを得ることができますか? – vishnu

+0

2番目のURLのコンテンツを取得すると、ウェブサイトで異常なトラフィックが検出されました。あなたのスクリプトを実行すると、HCI検証ページにリダイレクトされるブラウザで2番目のURLを開き、検証をバイパスする必要があります。あなたはgoogleでバイパスreCaptchaを検索することができます。 –

関連する問題