我的 Beautiful Soup 刮板没有按预期工作
My Beautiful Soup scraper is not working as intended
我正在尝试从以下网页中提取配料表:
https://skinsalvationsf.com/2012/08/updated-comedogenic-ingredients-list/
所以我要提取的第一个成分是乙酰化羊毛脂,最后一个成分是棕榈酸辛酯。
查看此 URL 的页面源代码,我了解到成分列表的模式如下所示:
<td valign="top" width="33%">Acetylated Lanolin <sup>5</sup></td>
所以我写了一些代码来提取列表,结果为零。下面是代码。
import requests
r = requests.get('https://skinsalvationsf.com/2012/08/updated-comedogenic-ingredients-list/')
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('td', attrs={'valign':'top'})
当我尝试 len(results)
时,结果为零。
我做错了什么?为什么我无法按预期提取列表?我是网络爬虫的初学者。
您的网络抓取代码正在按预期工作。但是,您的请求没有奏效。如果您检查请求的状态代码,您会看到您获得了 403 状态。
r = requests.get('https://skinsalvationsf.com/2012/08/updated-comedogenic-ingredients-list/')
print(r.status_code) # 403
服务器不允许 non-browser 请求。要使其正常工作,您需要在发出请求时使用 header。 header 应该类似于浏览器发送的内容:
headers = {
'User-Agent': ('Mozilla/5.0 (Windows NT 6.1; WOW64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/56.0.2924.76 Safari/537.36')
}
r = requests.get('https://skinsalvationsf.com/2012/08/updated-comedogenic-ingredients-list/', headers=headers)
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('td', attrs={'valign':'top'})
print(len(results))
您的汤请求被禁止。
因此您无法抓取它。似乎网站正在阻止抓取。
print(soup)
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr/><center>nginx</center>
</body>
</html>
我正在尝试从以下网页中提取配料表:
https://skinsalvationsf.com/2012/08/updated-comedogenic-ingredients-list/
所以我要提取的第一个成分是乙酰化羊毛脂,最后一个成分是棕榈酸辛酯。
查看此 URL 的页面源代码,我了解到成分列表的模式如下所示:
<td valign="top" width="33%">Acetylated Lanolin <sup>5</sup></td>
所以我写了一些代码来提取列表,结果为零。下面是代码。
import requests
r = requests.get('https://skinsalvationsf.com/2012/08/updated-comedogenic-ingredients-list/')
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('td', attrs={'valign':'top'})
当我尝试 len(results)
时,结果为零。
我做错了什么?为什么我无法按预期提取列表?我是网络爬虫的初学者。
您的网络抓取代码正在按预期工作。但是,您的请求没有奏效。如果您检查请求的状态代码,您会看到您获得了 403 状态。
r = requests.get('https://skinsalvationsf.com/2012/08/updated-comedogenic-ingredients-list/')
print(r.status_code) # 403
服务器不允许 non-browser 请求。要使其正常工作,您需要在发出请求时使用 header。 header 应该类似于浏览器发送的内容:
headers = {
'User-Agent': ('Mozilla/5.0 (Windows NT 6.1; WOW64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/56.0.2924.76 Safari/537.36')
}
r = requests.get('https://skinsalvationsf.com/2012/08/updated-comedogenic-ingredients-list/', headers=headers)
from bs4 import BeautifulSoup
soup = BeautifulSoup(r.text, 'html.parser')
results = soup.find_all('td', attrs={'valign':'top'})
print(len(results))
您的汤请求被禁止。
因此您无法抓取它。似乎网站正在阻止抓取。
print(soup)
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr/><center>nginx</center>
</body>
</html>