yangjinbobo 发表于 2018-10-12 18:15:47

【python】selenium使用过程中遇到一个问题

我想用selenium访问中国天气网,并且搜索某个城市的天气,最后输出天气信息,但是我用page_source获取到的页面代码和我想要的页面代码不一样
from pyquery import PyQuery as pq
from selenium import webdriver

city = input('请输入要查询的城市:')
browser = webdriver.Chrome()
browser.get('http://www.weather.com.cn/')
input = browser.find_element_by_id('txtZip')
input.send_keys(city)
button = browser.find_element_by_class_name('input-btn')
button.click()
html = browser.page_source
# browser.close()
doc = pq(html)
tem = doc('.tem')
# print(city+'现在是:'+tem.text()+'摄氏度')
print(html)

爱学习的喵 发表于 2018-10-12 21:03:09

你得到的数据是'http://www.weather.com.cn/'而不是新页面的数据
需要使用browser.get("新链接")再获取一次页面才能成功

yangjinbobo 发表于 2018-10-12 21:04:47

【已解决】用selenium打开窗口A,在A窗口上继续用click打开窗口B,搜索B窗口里内容。
   如果此时定位元素会发现仍是在A窗口上操作,若想在B窗口上操作,需要切换窗口:
(1)用handles = browser.window_handles来获取浏览器此时打开的所有窗口的handle
(2)用browser.switch_to.window(handles[-1])切换窗口至最新打开的窗口
【另外】注意browser.close()函数是用来关闭窗口的,而browser.quit()函数是关闭浏览器的
【代码】
from pyquery import PyQuery as pq
from selenium import webdriver
import time

city = input('请输入要查询的城市:')
browser = webdriver.Chrome()
browser.get('http://www.weather.com.cn/')
browser.find_element_by_id('txtZip').send_keys(city)
browser.find_element_by_class_name('input-btn').click()
time.sleep(2)
handles = browser.window_handles
browser.switch_to.window(handles[-1])
tem = browser.find_element_by_class_name('tem').text
print(city+'现在是:'+tem+'摄氏度')
browser.quit()

yangjinbobo 发表于 2018-10-12 21:08:03

爱学习的喵 发表于 2018-10-12 21:03
你得到的数据是'http://www.weather.com.cn/'而不是新页面的数据
需要使用browser.get("新链接")再获取一 ...

已经解决了,切换一下窗口就OK了。
页: [1]
查看完整版本: 【python】selenium使用过程中遇到一个问题