如何使用 robobrowser 抓取 'aria-label'
How to scrape 'aria-label' with robobrowser
我是网络抓取的新手,目前正在使用 robobrowser 抓取网页。
我正在尝试抓取某个 class 下的 'aria-label' 的值,但不知道该怎么做。
这是我的代码。
from robobrowser import RoboBrowser
browser = RoboBrowser(history=True, parser='html.parser')
browser.open('https://www.scrapingwebsite.com')
links = browser.find_all(class_='searchResult__373c0__1yggB')
for link in links:
print(link.find(class_='big_braket_class').text)
problem_part = link.find(class_='subsidiary_class')
print(problem_part.get('aria-label'))
根本行不通。有什么办法让它发挥作用吗?
感谢
您可以将内容从 robobrowser 转储到 bs4。然后使用 bs4 4.7.1 使用 :has 和 :contains 来定位所需的项目。
from bs4 import BeautifulSoup
#...your code
soup = browser.parsed
data = [(item.select_one('[class*=businessName]').text.replace('\xa0',''), item.select_one('[class*="i-stars"]')['aria-label']) for item in soup.select('li:has(h3:contains("All Results")) ~ li:has([class*=businessName])')]
print(data)
结果样本:
我是网络抓取的新手,目前正在使用 robobrowser 抓取网页。 我正在尝试抓取某个 class 下的 'aria-label' 的值,但不知道该怎么做。
这是我的代码。
from robobrowser import RoboBrowser
browser = RoboBrowser(history=True, parser='html.parser')
browser.open('https://www.scrapingwebsite.com')
links = browser.find_all(class_='searchResult__373c0__1yggB')
for link in links:
print(link.find(class_='big_braket_class').text)
problem_part = link.find(class_='subsidiary_class')
print(problem_part.get('aria-label'))
根本行不通。有什么办法让它发挥作用吗? 感谢
您可以将内容从 robobrowser 转储到 bs4。然后使用 bs4 4.7.1 使用 :has 和 :contains 来定位所需的项目。
from bs4 import BeautifulSoup
#...your code
soup = browser.parsed
data = [(item.select_one('[class*=businessName]').text.replace('\xa0',''), item.select_one('[class*="i-stars"]')['aria-label']) for item in soup.select('li:has(h3:contains("All Results")) ~ li:has([class*=businessName])')]
print(data)
结果样本: