Python selenium,webdriver.page\u单击后源代码未刷新

Python selenium,webdriver.page\u单击后源代码未刷新,python,selenium,web,Python,Selenium,Web,我试图将给定社区服务的网页地址列表复制到一个新文档中,这样我就可以对地图中的所有位置进行地理编码。我一次只能下载一个包裹,一页只能下载25个包裹编号,而无法获得所有包裹的列表。因此,这将非常耗时 我想开发一个脚本,查看页面源代码(包括表标记中包含的25个地址),单击下一页按钮,复制下一页,依此类推,直到达到最大页面。之后,我可以格式化文本,使其与地理编码兼容 下面的代码完成了所有这些操作,除了它只会一次又一次地复制第一页,尽管我可以清楚地看到程序已成功导航到下一页: # Open chrome

我试图将给定社区服务的网页地址列表复制到一个新文档中,这样我就可以对地图中的所有位置进行地理编码。我一次只能下载一个包裹,一页只能下载25个包裹编号,而无法获得所有包裹的列表。因此,这将非常耗时

我想开发一个脚本,查看页面源代码(包括表标记中包含的25个地址),单击下一页按钮,复制下一页,依此类推,直到达到最大页面。之后,我可以格式化文本,使其与地理编码兼容

下面的代码完成了所有这些操作,除了它只会一次又一次地复制第一页,尽管我可以清楚地看到程序已成功导航到下一页:

# Open chrome
br = webdriver.Chrome()

raw_input("Navigate to web page. Press enter when done: ")

pg_src = br.page_source.encode("utf") 
soup = BeautifulSoup(pg_src)

max_page = 122 #int(max_page)

#open a text doc to write the results to

f = open(r'C:\Geocoding\results.txt', 'w')

# write results page by page until max page number is reached

pg_cnt = 1 # start on 1 as we should already have the first page
while pg_cnt < max_page:
    tble_elems = soup.findAll('table')
    soup = BeautifulSoup(str(tble_elems))
    f.write(str(soup))
    time.sleep(5)
    pg_cnt +=1
    # clicks the next button
    br.find_element_by_xpath("//div[@class='next button']").click()
    # give some time for the page to load
    time.sleep(5)
    # get the new page source (THIS IS THE PART THAT DOESN'T SEEM TO BE WORKING)
    page_src = br.page_source.encode("utf")
    soup = BeautifulSoup(pg_src)

f.close()
#打开chrome
br=webdriver.Chrome()
原始输入(“导航到网页。完成后按enter:”)
pg_src=br.page_source.encode(“utf”)
汤=美汤(pg_src)
最大页数=122整型(最大页数)
#打开一个文本文档,将结果写入其中
f=打开(r'C:\Geocoding\results.txt,'w')
#逐页写入结果,直到达到最大页码
pg_cnt=1#从1开始,因为我们应该已经有了第一页
当pg_cnt
我也面临同样的问题。 我认为问题在于一些Java脚本没有完全加载。 您所需要的只是等待对象加载。下面的代码为我工作

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
        delay = 10 # seconds
        try:
            myElem = WebDriverWait(drivr, delay).until(EC.presence_of_element_located((By.CLASS_NAME, 'legal-attribute-row')))
        except :
            print ("Loading took too much time!")

在声明
br=webdriver.Chrome()
之后,在使用BeautifulSoup对页面内容进行处理之前,您不会将页面加载到Chrome中。我会在浏览器打开后导航到该页面。我在最初的帖子中排除了代码的原始输入部分。它现在就在那里。代码中的内容在哪里?@Bill Bell在br=webdriver.Chrome()的后面(a)要将页面加载到
br
中,您可以使用它的
get
方法:例如,
br.get('http://bbc.co.uk)
。(b) 将页面加载到浏览器实例与BeautifulSoup无关。(c) 使用
raw_input
而不捕获其结果不会给您带来任何好处。如果你想让用户给你一个url,那么你必须使用这样的语句,
url=raw\u input(“url,请”)
。既然您似乎知道xpath,我建议您不要使用BeautifulSoup,而只使用selenium。