【问题标题】:Web Scraping specific page with Python使用 Python 抓取特定页面
【发布时间】:2018-05-08 14:48:57
【问题描述】:

最近我一直在学习使用 Python 和 Beautiful Soup 进行网页抓取。但是,在尝试抓取以下页面时,我遇到了一些问题:

http://www.librarything.com/work/3203347

我想要从页面中获取的数据是这本书的标签,但我找不到任何方法来获取数据,尽管我花了很多时间在互联网上拖网。

我尝试遵循一些在线指南,但似乎没有一个有效。我尝试将页面转换为 XML 和 JSON,但仍然找不到数据。

目前很困惑,如果能提供任何帮助,我将不胜感激。

谢谢。

【问题讨论】:

  • 你的意思是抓取页面上的特定元素吗? IE,Tags 头下的数据?

标签: python json xml web-scraping beautifulsoup


【解决方案1】:

分析 HTML 和脚本后,通过 AJAX 加载标签并请求 AJAX url 使我们的生活变得轻松。这是python脚本。

import requests
from bs4 import BeautifulSoup

content = requests.get("http://www.librarything.com/ajax_work_makeworkCloud.php?work=3203347&check=2801929225").text
soup = BeautifulSoup(content)

for tag in soup.find_all('a'):
    print(tag)

【讨论】:

  • 天哪。经过数小时和数小时的互联网搜索后,我发现了一些有用的东西。非常感谢!!
【解决方案2】:

不确定要从页面中抓取哪些数据。但是,当检查时,页面会通过页面加载后启动的 javascript 加载动态“标签”。如果您的爬虫仅加载 DOM 控制器并在后台解析网页而不在浏览器中加载,则很可能页面中的任何动态数据都不会加载。

一种可能的解决方案是使用 selenium 完全加载页面,然后将其刮掉。

【讨论】:

    【解决方案3】:

    没有BS的可能实现:

    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 selenium.common.exceptions import TimeoutException
    
    my_url = 'http://www.librarything.com/work/3203347'
    driver = webdriver.Chrome()
    driver.get(my_url)
    
    delay = 5 # seconds
    
    try:
        WebDriverWait(driver, delay).until(EC.presence_of_element_located((By.CSS_SELECTOR, 'span.tag')))
        print("Page is ready!")
        for element in driver.find_elements_by_css_selector('span.tag'):
            print(element.text)
    except TimeoutException:
        print("Couldn't load page")
    finally:
        driver.quit()
    

    实施来源:

    Waiting until an element identified by its css is present

    Locating elements with selenium

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-29
      • 2021-06-09
      • 1970-01-01
      • 2022-11-17
      相关资源
      最近更新 更多