【发布时间】:2019-06-13 16:29:52
【问题描述】:
我正在处理这个 csv (https://www.kaggle.com/jtrofe/beer-recipes),我想抓取数据框中的每个 URL,但我不能,因为我有问题/错误,我无法抓取所有 URL,如果我尝试使用 1 个 URL,没关系,但功能有问题...有人可以帮助我吗?
这是我的代码:
import requests
from bs4 import BeautifulSoup
from time import sleep
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'
}
base = 'https://www.brewersfriend.com'
links = [f'{base}{r}' for r in df['URL']]
while True:
try:
r = requests.get(links, headers=headers, stream=False, timeout=8).text
break
except:
if r.status_code == 404:
print("Client error")
r.raise_for_status()
sleep(1)
soup = BeautifulSoup(r, 'html5lib')
rating = soup.find('span', {'itemprop': 'ratingValue'})
DEFAULT_VALUE = 'NaN'
if rating is None:
rating = DEFAULT_VALUE
print(rating.text)
我已经知道在某些页面中没有评分,因此我使用 Not a Number 创建了 DEFAULT_VALURE,但也可能是一个错误。
这段代码前面有数据框,我就不放了。
希望有人能帮帮我!
非常感谢
【问题讨论】:
标签: python pandas dataframe beautifulsoup screen-scraping