2016-10-11 25 views
-2

私はコードがスクレーパーの私の上の部分である(教育目的のために)イエローページなぜforループ全体をスキップしていますか?

def actual_yellow_pages_scrape(link,no,dir,gui,sel,ypfind,terminal,user,password,port,type): 
print(link,no,dir,gui,sel,ypfind,terminal,user,password,port,type) 
r = requests.get(link,headers=REQUEST_HEADERS) 
soup = BeautifulSoup(r.content,"html.parser") 
workbook = xlwt.Workbook() 
sheet = workbook.add_sheet(str(ypfind)) 
count = 0 

for i in soup.find_all(class_="business-name"): 
     sheet.write(count,0,str(i.text)) 
     sheet.write(count,1,str("http://www.yellowpages.com"+i.get("href"))) 
     r1 = requests.get("http://www.yellowpages.com"+i.get("href")) 
     soup1 = BeautifulSoup(r1.content,"html.parser") 
     website = soup1.find("a",class_="custom-link") 
     try: 
      print("Acquiring Website") 
      sheet.write(count,2,str(website.get("href"))) 
     except: 
      sheet.write(count,2,str("None")) 
     email = soup1.find("a",class_="email-business") 
     try: 
      print(email.get("href")) 
      EMAIL = re.sub("mailto:","",str(email.get("href"))) 
      sheet.write(count,3,str(EMAIL)) 
     except: 
      sheet.write(count,3,str("None")) 
     phonetemp = soup1.find("div",class_="contact") 
     try: 
      phone = phonetemp.find("p") 
      print(phone.text) 
      sheet.write(count,4,str(phone.text)) 
     except: 
      sheet.write(count,4,str("None")) 
     reviews = soup1.find(class_="count") 
     try: 
      print(reviews.text) 
      sheet.write(count,5,str(reviews.text)) 
     except: 
      sheet.write(count,5,str("None")) 
     count+=1 
save = dir+"\\"+ypfind+str(no)+".xls" 
workbook.save(save) 
no+=1 
for i in soup.find_all("a",class_="next ajax-page"): 
    print(i.get("href")) 
    actual_yellow_pages_scrape("http://www.yellowpages.com"+str(i.get("href")),no,dir,gui,sel,ypfind,terminal,user,password,port,type) 

からすべての情報をこすりますウェブサイトのスクレーパーを作成しました。私はスープでブレークポイントを作成し、forループではforループの一行も実行されません。スローされたエラーはありません。私は1-10から番号を印刷することで同じことを試みましたが、これはなぜ機能していませんか?

は、私が「r.content」であるものを見つけるために、テキストvisulaizerを使用し、

+0

おそらく 'find_all'の結果は空であるでしょうか?あなたはそれを全くチェックしましたか? – Julien

+0

あなたの反復処理はおそらく空であるためです。 –

+0

'print()'を使って変数に何があるのか​​調べます。 – furas

答えて

0

回答が発見されたありがとう、私はそれをsoupified、クリーンなHTMLを持って、HTMLファイルを経て、最終的にブラウザがサポートされていないので、リクエストヘッダーを削除してコードを実行しました。私が望んだコードを最終的に得ました。

関連する問題