使用Beautiful Soup、urllib2和Python刮取一个PHP变量
我正在尝试使用BeautifulSoup和Python从网站上获取PHP值 我还尝试使用lxml库 有没有办法这样做?或者我应该使用不同的东西?提前谢谢 遵循的步骤使用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]
//*[@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()