我目前正在編寫此代碼以從他們的Yelp頁面中獲取餐館的官方網站鏈接。代碼主要工作,但它返回第一個鏈接兩次,而不是通過列表並返回每個項目一次。我試圖解決這個問題,但我只是停留在導致這種情況發生的原因上。你能發現我做錯了什麼嗎?Python 3.5刮板只運行列表中的第一個網站
我還有一個關於抓取Yelp鏈接的問題。我知道Yelp可能不喜歡它,但我真的無法手工複製和粘貼20,000頁的鏈接,所以我必須使用它。
他們會阻止我的IP嗎?在請求之間插入2秒延遲會阻止他們阻止我嗎?除插入延遲之外是否還有其他方法?
import urllib
import urllib.request
from bs4 import BeautifulSoup
url=[
"https://www.yelp.com/biz/buffalo-wild-wings-ann-arbor-3",
"https://www.yelp.com/biz/good-burger-east-dearborn-dearborn?osq=mac+donalds"
]
def make_soup(url):
for i in url:
thepage=urllib.request.urlopen(i)
soupdata=BeautifulSoup(thepage, "html.parser")
return soupdata
compoundfinal=''
soup=make_soup(url)
for i in url:
for thing1 in soup.findAll('div',{'class':'mapbox-text'}):
for thing2 in thing1.findAll('a',{'rel':'nofollow'}):
final='"http://www.'+thing2.text+'",\n'
compoundfinal=compoundfinal+final
print(compoundfinal)
非常感謝!你不僅幫我解決了這個問題,還從這篇文章中學到了很多東西。 – James