Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Beautiful Soup、urllib2和Python刮取一个PHP变量_Php_Python_Html_Beautifulsoup_Urllib2 - Fatal编程技术网

使用Beautiful Soup、urllib2和Python刮取一个PHP变量

使用Beautiful Soup、urllib2和Python刮取一个PHP变量,php,python,html,beautifulsoup,urllib2,Php,Python,Html,Beautifulsoup,Urllib2,我正在尝试使用BeautifulSoup和Python从网站上获取PHP值 我还尝试使用lxml库 有没有办法这样做?或者我应该使用不同的东西?提前谢谢 遵循的步骤 查找所需的嵌套HTML标记。在本例中为“320” 解析HTML页面 搜索第一个“div”标记 尝试搜索“div”标记的所有子项 将整个HTML页面输出到文本文件 Grep所需的“span”标记名 请注意,该值是一个PHP变量 xPath: //*[@id="monetary_offer_content"]/div[1]/div[2]

我正在尝试使用BeautifulSoup和Python从网站上获取PHP值

我还尝试使用lxml库

有没有办法这样做?或者我应该使用不同的东西?提前谢谢

遵循的步骤

  • 查找所需的嵌套HTML标记。在本例中为“320”
  • 解析HTML页面
  • 搜索第一个“div”标记
  • 尝试搜索“div”标记的所有子项
  • 将整个HTML页面输出到文本文件
  • Grep所需的“span”标记名
  • 请注意,该值是一个PHP变量
  • xPath:

    //*[@id="monetary_offer_content"]/div[1]/div[2]/div/div[1]/h3/span
    
    <span data-oldoffer="">320</span>
    
    CSS选择器

    monetary_offer_content > div.monetary_offer > div.offers.clear > div > div.clearfix > h3 > span
    
    HTML:

    //*[@id="monetary_offer_content"]/div[1]/div[2]/div/div[1]/h3/span
    
    <span data-oldoffer="">320</span>
    

    看起来该值是通过浏览器中的javascript动态设置的。使用
    urllib2
    下载的页面源代码仅包含初始HTML

    您可以通过以下示例启动并控制真正的浏览器:


    非常感谢。我不知道为什么我被否决了。我觉得如果没有人在S.O.上投反对票,我就永远不会问任何问题。我会尽量把问题弄清楚,尽量让人觉得得体。我试着研究这个问题好几个小时,然后发布我自己的问题。啊。太令人沮丧了。因此,当浏览器呈现网页时,它每次都会设置值,但如果使用urllib2,它将只包含初始HTML。谢谢你的解释@我个人认为你的问题不值得否决,因为它很清楚,有一个结构,并且显示了你的尝试,但我想这只是我的观点。@Speakeasy尽管不要忘记遵守规则,请参见。并且,仔细检查你之前的问题,看看是否有值得接受的答案。非常感谢。我不知道我甚至可以选择最好的答案。我一直认为我只能问问题,因为我的声誉很低。你能分享这个url吗?@padraiccningham我相信这是gazelle.com上的一个特定产品。
    from selenium import webdriver
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.select import Select
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    url = "http://website_url.com"
    
    driver = webdriver.Firefox()
    wait = WebDriverWait(driver, 10)
    driver.get(url)
    
    elm = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "#monetary_offer_content > div.monetary_offer > div.offers.clear > div > div.clearfix > h3 > span")))
    print(elm.text)
    
    driver.close()