获取订单列表页面源代码的问题
来源:4-3 selenium实现订单数据抓取
坻屿
2021-09-29 09:47:46
#coding:utf-8
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from lxml import etree
import pymongo
import time
class crawl_project(object):
def __init__(self,chrome_options):
self.driver=webdriver.Chrome(options=chrome_options)
self.driver.maximize_window()
#创建与mongodb的连接
client=pymongo.MongoClient("mongodb://127.0.0.1:1112")
db=client["db_order"]
self.mycollection=db["order_info"]
def login(self,url):
print(f"登录系统:{url}")
self.driver.get(url)
if WebDriverWait(self.driver,5,0.5).until(EC.presence_of_element_located((By.CLASS_NAME,"login-form"))): #监控登录页面
self.driver.find_element_by_xpath("//button").click()
if WebDriverWait(self.driver,5,0.5).until(EC.presence_of_element_located((By.CLASS_NAME,"welcome"))): #检验是否登陆成功
print("登陆成功")
return True
else:
print("登陆失败")
return False
def parse_html(self,content):
html=etree.HTML(content)
items=html.xpath("//tbody/tr")
for i in items:
datas=i.xpath("./td/div/text()")
print(datas)
def crawl_website(self,url):
if self.login(url):
self.driver.implicitly_wait(5)
self.driver.find_element_by_xpath(
"//ul[@class='el-menu-vertical-demo el-menu']/li[1]/div[@class='el-submenu__title']").click()
self.driver.find_element_by_link_text("订单列表").click() #点击开订单列表页面
self.parse_html(content=self.driver.page_source)
time.sleep(10)
self.driver.quit()
def main():
options={}
chrome_options=Options()
for k,v in options.items():
print(f"设置浏览器参数{v}")
chrome_options.add_argument(v)
s=crawl_project(chrome_options)
url="http://sleeve.talelin.com/#/login"
s.crawl_website(url)
if __name__=="__main__":
main()
代码如上,为什么在验证后没有直接使用订单页面的url进入该页面而是通过selenium模拟的鼠标点击操作进入该页面就无法获取订单页面的源代码了?还是说这里必须得直接使用订单页面的url(http://sleeve.talelin.com/#/statics/order/list)才能获取到这个页面的源代码?
1回答
同学,你好!可以在点击"订单列表"之后使用time.sleep()强制等待一段时间,让页面数据加载一会再获取数据即可
祝学习愉快!