beauthulsoup select all href在某个具有特定类的元素中

2024-09-27 21:27:35 发布

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

我正在尝试从this网站上删除图像。我试过用Scrapy(使用Docker)和Scrapy/slenium。Scrapy在windows10 home中似乎不起作用,所以我现在尝试使用Selenium/Beautifulsoup。我用Python3.6和Spider进入一个Python环境。在

我需要的href元素如下所示:

<a class="emblem" href="detail/emblem/av1615001">

我有大问题:
-如何使用beauthoulsoup选择href?在下面我的代码中,您可以看到我尝试了什么(但没有成功)
-由于可以观察到href只是指向url的部分路径…我应该如何处理此问题?在

这里是我目前为止的代码:

^{pr2}$

Tags: docker代码图像home环境网站seleniumthis
3条回答

不确定以上答案是否起作用。这是一个为我做工作的。在

url = "SOME-URL-YOU-WANT-TO-SCRAPE"
response = requests.get(url=url)
urls = BeautifulSoup(response.content, 'lxml').find_all('a', attrs={"class": ["YOUR-CLASS-NAME"]}, href=True)

您可以通过类名获取href:

问题1:

for link in soup.findAll('a', {'class': 'emblem'}):
   try:
      print link['href']
   except KeyError:
      pass`

试试这个。它将给你所有的网址遍历所有网页在该网站。我使用了Explicit Wait使它更快、更动态。在

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup

driver = webdriver.Chrome()
url = "http://emblematica.grainger.illinois.edu/"
wait = WebDriverWait(driver, 10)
driver.get("http://emblematica.grainger.illinois.edu/browse/emblems?Filter.Collection=Utrecht&Skip=0&Take=18")
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, ".emblem")))

while True:
    soup = BeautifulSoup(driver.page_source,"lxml")
    for item in soup.select('.emblem'):
        links = url + item['href']
        print(links)

    try:
        link = driver.find_element_by_id("next")
        link.click()
        wait.until(EC.staleness_of(link))
    except Exception:
        break
driver.quit()

部分输出:

^{pr2}$

相关问题 更多 >

    热门问题