【问题标题】:Can't get rid of unwanted output when web scraping网页抓取时无法摆脱不需要的输出
【发布时间】:2021-06-18 03:19:07
【问题描述】:

我遇到了网络抓取问题。我需要从网站中提取名称和日期,我找到了一种找到它的方法,但我有不需要的输出(.text 不起作用)。我的代码:

wanted_name = 'clear'
link = f'https://namemc.com/name/{wanted_name}'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
}

html_text = requests.get(link, headers=headers)
soup = BeautifulSoup(html_text.text, 'lxml')
names = []
_dates = []

users = soup.find('div', class_='col-md-7')
for user in users:
    names.append(user.find('samp'))

dates = soup.find('div', class_='row no-gutters align-items-center')
for time in dates:
    _dates.append(time.find('time'))

输出:

[-1, <samp>clear</samp>, -1, None, -1]
[-1, None, -1, None, -1, <time class="text-nowrap" datetime="2021-03-22T17:06:03.000Z" id="availability-time"></time>, -1, None, -1

有没有办法输出用户名clear和日期2021-03-22T17:06:03.000Z

链接:https://namemc.com/name/clear

【问题讨论】:

    标签: python python-3.x web-scraping beautifulsoup python-requests


    【解决方案1】:

    您可以编写一个函数来返回值并选择共享父级。然后从中选择所需的项目。

    import requests
    from bs4 import BeautifulSoup
    
    def get_users(wanted_name):
        url = f'https://namemc.com/name/{wanted_name}'
        r = requests.get(url)
        soup = BeautifulSoup(r.text, "lxml")
        node = soup.select_one(f".card-body .row:has(a[href*='{wanted_name}'])")
        print(node.select_one('a').text)
        print(node.select_one('time').text)
        
    get_users('Clear')
    

    【讨论】:

      【解决方案2】:

      我认为您获得的价值超出了需要。如果您像这样深入了解用户和日期:

      users = soup.find('div', class_='col-md-7').find('samp') 
      for user in users:
          names.append(user)
      
      dates = soup.find('div', class_='row no-gutters align-items-center').find('time')
      _dates.append(dates['datetime'])
      

      然后你得到你想要的。

      【讨论】:

        【解决方案3】:

        user.find('samp').getText() 会给你用户名clear

        time.find('time')["datetime] 会给你2021-03-22T17:06:03.000Z。请务必处理 None-1

        的错误

        【讨论】:

          猜你喜欢
          • 2018-12-16
          • 1970-01-01
          • 2020-12-11
          • 2019-07-24
          • 2022-01-25
          • 1970-01-01
          • 2015-09-23
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多