动态网页抓取(爬取一个动态网页刷新问题,解决方案如下思路使用 )

优采云 发布时间: 2021-10-19 06:20

  动态网页抓取(爬取一个动态网页刷新问题,解决方案如下思路使用

)

  更新。. . . . 这个动态网页其实可以直接抓取Ajax请求。这很简单。之前觉得很复杂。虽然已经实现了,但是效率极低,不过还好。只需将其视为对硒的研究。

  1. 最近在爬动态网页。为了更新页面,需要选择不同的选项,即对下拉框进行处理。这里的下拉框是一个用输入实现的假下拉框,但后面还有一个。一个隐藏的select,本来想用js脚本修改隐藏的select变为可见,然后点击等操作,但是使用网上的方法后,发现select是visible变为visible的,但是之后没有效果点击 ,各方搜索无果,最后决定自己解决这个问题。解决方法如下

  思路是用selenium完全模拟人的操作,一步一步点击可见按钮

  ,一,找到下拉框按钮,点击,

  其次,点击下拉框按钮后,会出现一个列表。在列表中找到一个元素并单击。注意这一步一定要在下拉框按钮点击后进行(使用time.sleep()等待几秒,否则(会提示点击的内容不存在)

  通过这两个步骤,我们就可以改变动态网页的信息了,代码如下

  def getButton(browser):

# 获取下拉框按钮

Button = browser.find_elements_by_class_name("textbox-icon") # 定位哪一栋楼按钮

buildButton = Button[0]

floorButton = Button[1]

buildingsAndFloors = browser.find_elements_by_class_name("combobox-item") # 楼选项

floors = buildingsAndFloors[30:]

buildings = buildingsAndFloors[:30]

info = dict()

info['floors'] = floors

info['buildings'] = buildings

info['buildButton'] = buildButton

info['floorButton'] = floorButton

return info

  

  2. 还有,在爬取的时候,经常会提示点击按钮或者不存在的东西,所以一定要设置一个延迟。

  3.你得到的一些动态网页的源码和你在网页f12上看到的不一样,我的解决办法是你先在网页上进行一个操作,然后得到源码就会普通的

  4.动态网页有不断刷新的问题,但是每次刷新后都会提示旧元素不能使用,所以必须重新获取不可用信息,如下,getButton()函数获取Button信息,每次页面刷新后需要点击按钮时都会检索到这些信息,

  # 获取某一栋楼某一层的信息所对应页面的源代码

def getSoup(buildNumber, floor):

info = getButton(browser)

info['buildButton'].click() # 点击指定楼

info['buildings'][buildNumber].click()

time.sleep(1)

info = getButton(browser) # 重新获取信息

time.sleep(1)

info['floorButton'].click() # 点击指定楼层

info['floors'][floor].click()

soup = BeautifulSoup(browser.page_source, 'html.parser')

return soup

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线