【问题标题】:Scraping Deeply Nested HTML Tags, Python抓取深度嵌套的 HTML 标签,Python
【发布时间】:2021-10-08 10:15:23
【问题描述】:

我知道有类似的问题,但没有一个答案对我有用。我正在尝试从带有“ui mini avatar image”类的 img 标签中获取 src 链接,如下图所示:

我不想通过 6 个 div 标签来达到它,但两种方式都行不通。搜索返回 NoneType。这是我尝试使用的代码:

urls = df.iloc[:,-1].values  
for url in urls:
  soup = BeautifulSoup(url, 'lxml')
  a_tag = soup.find('a', class_ ='left')
  img = a_tag.find('img', class_= 'ui mini avatar image')
  link = img.get_attribute('src')
  print(link)
  break

请注意,我将所需的链接存储在 csv 文件中,并且我正在使用 Pandas 来读取它。 如果您需要查看,这是第一个链接:https://www.zomato.com/review/kMZEvAx

【问题讨论】:

    标签: python web-scraping beautifulsoup


    【解决方案1】:

    使用带有select_one的css选择器:

    from bs4 import BeautifulSoup
    import requests
    
    headers = {
        "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"
    }
    
    
    soup = BeautifulSoup(requests.get("https://www.zomato.com/review/kMZEvAx", headers=headers).text)
    print(soup.select_one(".ui.mini.avatar.image").get("src"))
    

    打印:

    'https://b.zmtcdn.com/images/placeholder_200.png'
    

    • 为什么您的解决方案不起作用?

    您的方法find 只会返回第一个<a> 标记,该标记是left

    【讨论】:

    • 我开始认为我的问题是从 csv 读取网址。 Pandas 不起作用,所以我尝试了 csv 阅读器,我正在尝试解决这个问题。
    • @Jana.k 只需调试以测试您的代码,不要忘记为您的请求添加标头。
    猜你喜欢
    • 1970-01-01
    • 2014-05-11
    • 2019-07-23
    • 2021-12-09
    • 1970-01-01
    • 1970-01-01
    • 2014-06-10
    • 2019-12-04
    • 2021-12-28
    相关资源
    最近更新 更多