Содержимое page_source не изменяется при использовании browser.page_source для чтения - PullRequest
0 голосов
/ 05 октября 2019

URL целевой страницы: "http://data.eastmoney.com/gzfx/list.html" В нижней части этой страницы есть таблица со списком акций, и в ней более 70 страниц, вы можете перейти на другие страницы, нажав кнопку" Далее "(" 下一页"), но ссылка на страницу никогда не меняется, она всегда показывает" http://data.eastmoney.com/gzfx/list.html"

. Я использовал селен, чтобы перейти на следующую страницу и использовать "html_code = browser.page_source", чтобы получить содержимое HTML, но я никогда не получаю содержимое новой страницы, оно всегда показывает первую страницу.

Я пытался использовать "browser.refresh ()", чтобы обновить страницу, но она вернется кпервая страница, вторая страница имеет ту же ссылку с первой страницей.

Мой вопрос заключается в том, как получить обновленное содержимое страницы после нажатия следующей кнопки.

ниже - мой код:

import html5lib
import re 
import time 
import random 
import json 
import sys 
from bs4 import BeautifulSoup as soup 
from selenium import webdriver 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

url="http://data.eastmoney.com/gzfx/list.html"
browser = webdriver.Chrome()
browser.get(url)


html_code=browser.page_source
soupcontent = soup(html_code,'html5lib')

while True:
    scripts = soupcontent.find_all('script')
    jsonObj = None
    for script in scripts:
        if 'pageData =' in script.text:
            jsonStr = script.text
            jsonStr = jsonStr.split("pageData =")[1]
            jsonObj = json.loads(jsonStr)
    products = jsonObj['data']

    for item in products:
        serialno=item['SECURITYCODE']
        stockname=item['SName']
        industry=item['HYName']
        market=item['MKT']        
        print (serialno+'\t'+stockname+'\t'+industry+'\t'+market+'\n')

    browser.find_element_by_link_text('下一页').click()
    wait = WebDriverWait(browser, 10)
    html_code=browser.page_source
    soupcontent = soup(html_code)

как я могу получить содержимое обновления новой страницы?

Спасибо!

1 Ответ

0 голосов
/ 05 октября 2019

Источник страницы не изменяется при обновлении содержимого, вызванном Javascript.

Вместо получения исходного кода страницы попробуйте получить содержимое элемента body. что-то в этом роде (код не проверен)

html_code = browser.find_element_by_tag_name("body")).text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...