如何用BeautifulSoup从页面中进行刮取

2024-07-04 08:20:08 发布

您现在位置:Python中文网/ 问答频道 /正文

问的问题很简单,但对我来说,这不管用,我也不知道!你知道吗

我想用BeautifulSoup从这个页面https://www.brewersfriend.com/homebrew/recipe/view/16367/southern-tier-pumking-clone中获取评级啤酒,但它不起作用。你知道吗

这是我的密码:

import requests import bs4 from bs4 import BeautifulSoup url = 'https://www.brewersfriend.com/homebrew/recipe/view/16367/southern-tier-pumking-clone' test_html = requests.get(url).text soup = BeautifulSoup(test_html, "lxml") rating = soup.findAll("span", class_="ratingValue") rating

当我完成时,它不工作,但如果我对另一页做同样的事情就是工作。。。我不知道。有人能帮我吗?评分结果为4.58

谢谢大家!你知道吗


Tags: httpsimportcomviewclonewwwreciperequests
3条回答

您请求响应的页面被禁止为403,因此您可能没有收到错误,但它将为您提供空白结果[]。为了避免这种情况,我们添加了用户代理,这段代码将得到您想要的结果。你知道吗

import urllib.request
from bs4 import BeautifulSoup

user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'

url = "https://www.brewersfriend.com/homebrew/recipe/view/16367/southern-tier-pumking-clone"
headers={'User-Agent':user_agent} 

request=urllib.request.Request(url,None,headers) #The assembled request
response = urllib.request.urlopen(request)
soup = BeautifulSoup(response, "lxml")

rating = soup.find('span', {'itemprop':'ratingValue'})

rating.text

获取禁止状态码(HTTP错误403)背后的原因,这意味着服务器将无法满足您的请求,尽管了解响应。你一定会得到这个错误,如果你尝试刮了很多更流行的网站将有安全功能,以防止机器人。所以你需要掩饰你的要求!你知道吗

  1. 为此,您需要使用Headers。你知道吗
  2. 您还需要更正您试图获取其数据的标记属性,即itemprop
  3. 使用lxml作为树生成器,或您选择的任何其他方法

    import requests
    from bs4 import BeautifulSoup
    
    
    url = 'https://www.brewersfriend.com/homebrew/recipe/view/16367/southern-tier-pumking-clone'
    
    # Add this 
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'}
    
    test_html = requests.get(url, headers=headers).text      
    
    soup = BeautifulSoup(test_html, 'lxml')
    
    rating = soup.find('span', {'itemprop':'ratingValue'})
    
    print(rating.text)
    

如果您打印test_html,您会发现得到403禁止响应。你知道吗

您应该向GET请求添加一个头(至少是一个用户代理:))。你知道吗

import requests
from bs4 import BeautifulSoup


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'
}

url = 'https://www.brewersfriend.com/homebrew/recipe/view/16367/southern-tier-pumking-clone'

test_html = requests.get(url, headers=headers).text

soup = BeautifulSoup(test_html, 'html5lib')

rating = soup.find('span', {'itemprop': 'ratingValue'})

print(rating.text)

# 4.58

相关问题 更多 >

    热门问题