被简单的网络爬虫卡住了

时间:2021-03-19 16:29:12

标签: python web-scraping beautifulsoup

我正在尝试从以下网站抓取硬币名称。
https://www.block123.com/en/nav/065285354703.htm
我已经对堆栈溢出进行了拖网处理,但不明白为什么我没有得到
网站上的完整名称列表。我是新手,所以感谢大家
帮助和耐心

    url = 'https://www.block123.com/en/nav/065285354703.htm'

    r = requests.get(url)

    soup = BeautifulSoup(r.text, 'html.parser')


    for coin in soup.find_all('div', attrs={'class':'portfolio-content item-content'}):
      print(coin.find("div", attrs={"class":"name"}))

   

我现在已经用 selenium 编写了一个 scraper 来输入密码信息。
然后,我可以访问完整的投资组合详细信息,并且我已经刮掉了所有的硬币,但也得到了许多具有相同类名的不需要的文本。
提供的答案中建议的代码非常有助于删除这些内容,方法是仅包含在之前的
中具有“Portfolio”的元素 我不确定在使用硒时如何应用它,任何帮助将不胜感激

    driver.get(links['https://www.block123.com/en/nav/065285354703.htm'])
    coins = driver.find_elements_by_class_name("portfolio-item")
    coin_names = [coin.find_element_by_class_name('name').text for coin in coins]

    

1 个答案:

答案 0 :(得分:1)

检查每个<div>的前一个div'class':'portfolio-content item-content'是否包含文本Portfolio以识别div是否包含硬币,如果是,提取硬币名称

for item in soup.find_all('div', attrs={'class':'portfolio-content item-content'}):
    if 'Portfolio' in item.find_previous('div').text:
        coins = [coin.text for coin in item.find_all("div", attrs={"class":"name"})]
        print(coins)
['YEECO', 'SoundArio', 'COVA']