实时动态抓取html,Selenium抓取动态网页数据

#-*-coding = utf-8 -*-

from selenium import webdriver

from selenium.webdriver.common.by import By

# chromedriver的绝对路径

driver_path = r'D:\ProgramApp\chromedriver\chromedriver.exe'

# 初始化一个driver,并且指定chromedriver的路径

driver = webdriver.Chrome(executable_path=driver_path)

# 请求网页

driver.get("https://www.baidu.com/")

# 通过page_source获取网页源代码

print(driver.page_source)

selenium常用操作

1.关闭页面:

driver.close():关闭当前页面。

driver.quit():退出整个浏览器。

2.定位元素:

a)find_element_by_id:根据id来查找某个元素。等价于:

submitTag = driver.find_element_by_id('su')

submitTag1 = driver.find_element(By.ID,'su')

b)find_element_by_class_name:根据类名查找元素。 等价于:

submitTag = driver.find_element_by_class_name('su')

submitTag1 = driver.find_element(By.CLASS_NAME,'su')

c)find_element_by_name:根据name属性的值来查找元素。等价于:

submitTag = driver.find_element_by_name('email')

submitTag1 = driver.find_element(By.NAME,'email')

d)find_element_by_tag_name:根据标签名来查找元素。等价于:

submitTag = driver.find_element_by_tag_name('div')

submitTag1 = driver.find_element(By.TAG_NAME,'div')

e)find_element_by_xpath:根据xpath语法来获取元素。等价于:

submitTag = driver.find_element_by_xpath('//div')

submitTag1 = driver.find_element(By.XPATH,'//div')

f)find_element_by_css_selector:根据css选择器选择元素。等价于:

submitTag = driver.find_element_by_css_selector('//div')

submitTag1 = driver.find_element(By.CSS_SELECTOR,'//div')

要注意,find_element是获取第一个满足条件的元素。find_elements是获取所有满足条件的元素。

3.操作表单元素:

a)操作输入框:分为两步。第一步:找到这个元素。第二步:使用send_keys(value),将数据填充进去。示例代码如下:

inputTag = driver.find_element_by_id('kw')

inputTag.send_keys('python')

使用clear方法可以清除输入框中的内容。示例代码如下:

inputTag.clear()

b)操作checkbox:因为要选中checkbox标签,在网页中是通过鼠标点击的。因此想要选中checkbox标签,那么先选中这个标签,然后执行click事件。示例代码如下:

rememberTag = driver.find_element_by_name("rememberMe")

rememberTag.click()

c)选择select:select元素不能直接点击。因为点击后还需要选中元素。这时候selenium就专门为select标签提供了一个类selenium.webdriver.support.ui.Select。将获取到的元素当成参数传到这个类中,创建这个对象。以后就可以使用这个对象进行选择了。示例代码如下:

from selenium.webdriver.support.ui import Select

# 选中这个标签,然后使用Select创建对象

selectTag = Select(driver.find_element_by_name("jumpMenu"))

# 根据索引选择

selectTag.select_by_index(1)

# 根据值选择

selectTag.select_by_value("http://www.95yueba.com")

# 根据可视的文本选择

selectTag.select_by_visible_text("95秀客户端")

# 取消选中所有选项

selectTag.deselect_all()

d)操作按钮:操作按钮有很多种方式。比如单击、右击、双击等。这里讲一个最常用的。就是点击。直接调用click函数就可以了。示例代码如下:

inputTag = driver.find_element_by_id('su')

inputTag.click()

4.行为链:

有时候在页面中的操作可能要有很多步,那么这时候可以使用鼠标行为链类ActionChains来完成。比如现在要将鼠标移动到某个元素上并执行点击事件。那么示例代码如下:

inputTag = driver.find_element_by_id('kw')

submitTag = driver.find_element_by_id('su')

actions = ActionChains(driver)

actions.move_to_element(inputTag)

actions.send_keys_to_element(inputTag,'python')

actions.move_to_element(submitTag)

actions.click(submitTag)

actions.perform()

还有更多的鼠标相关的操作:

click_and_hold(element):点击但不松开鼠标。

context_click(element):右键点击。

double_click(element):双击。

更多方法请参考:http://selenium-python.readthedocs.io/api.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Python和Selenium可以实现对动态网页抓取。首先,确保您已经安装了Python 3.5和Selenium。如果没有安装,您可以通过使用pip命令来安装Selenium:pip3 install selenium。 接下来,您需要下载并配置PhantomJS。PhantomJS是一个无界面浏览器,可以用于模拟用户与网页的交互。您可以从官方网站下载PhantomJS,并将其解压到Python的Scripts目录下。 接下来,您可以使用以下代码来实现动态网页抓取: ```python from selenium import webdriver # 创建PhantomJS浏览器对象 driver = webdriver.PhantomJS() # 打开网页 driver.get('http://example.com') # 执行一些操作,例如点击按钮或滚动页面 # 获取页面内容 content = driver.page_source # 关闭浏览器 driver.quit() # 处理页面内容,提取所需信息 # ... ``` 在这个例子中,我们首先创建了一个PhantomJS浏览器对象,然后使用`get()`方法打开了一个网页。您可以在此之后执行一些其他操作,例如点击按钮或滚动页面。 最后,使用`page_source`属性获取页面内容,然后可以根据需要处理页面内容并提取所需信息。 请注意,Selenium还支持其他浏览器,如Chrome和Firefox。您可以根据自己的需要选择使用哪个浏览器。 希望这个回答能够帮助到您。请随时提问,如果您有任何进一步的疑问。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值