当前位置: 首页 > 知识库问答 >
问题:

如何单击元素并从链接的xml文件(python)中解析文本?

滕成双
2023-03-14

我想解析以下网站的地址:https://filialen.migros.ch/de/center:46.8202、6.9575/zoom:8/

import pandas as pd
import requests
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
from bs4 import BeautifulSoup
import time
import itertools
import os
import numpy as np
import csv
import pdb

os.chdir("Directory")
options = webdriver.ChromeOptions()
options.add_argument("--incognito")
driver = webdriver.Chrome('Directory/chromedriver.exe')
driver.get("https://filialen.migros.ch/de/center:46.8202,6.9575/zoom:8/")
time.sleep(1)
try:
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@class='close-icon']"))).click() # if there is smth to click away
except:
    pass
time.sleep(4)
#Version 1
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='sc-hKFxyN jdMjfs']"))).click() 

#Version 2
element = driver.find_element_by_class_name('sc-eCApnc kiXUNl sc-jSFjdj lcZmPE')
driver.execute_script("arguments[0].scrollIntoView();", element)
driver.execute_script("arguments[0].click();", element)

# Version 3    
element = driver.find_element_by_class_name('sc-eCApnc kiXUNl sc-jSFjdj lcZmPE')
driver.execute_script("arguments[0].click();", element)

#Version 4
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[@class='sc-eCApnc kiXUNl sc-jSFjdj lcZmPE']"))).click() 

# Version 5
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "/html/body/div[2]/div/main/nav/header/button[1]"))).click() 

# Version 6
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[text()='1163 STANDORTE']"))).click() 
    null

有什么建议吗?

我的问题类似于前面的问题:如何在Python中解析具有相同类名的网站的多个属性?对于Selenium-debugging:在点(X,Y)不能单击元素

共有1个答案

云鸿达
2023-03-14

您要查找的数据基于fetch/XHR调用。

不用刮就能拿到。见下文。

import requests

headers = {'Origin': 'https://filialen.migros.ch',
           'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'}

r = requests.get(
    'https://web-api.migros.ch/widgets/stores?key=loh7Diephiengaiv&aggregation_options[empty_buckets]=true&filters[markets][0][0]=super&filters[markets][0][1]=mno&filters[markets][0][2]=voi&filters[markets][0][3]=mp&filters[markets][0][4]=out&filters[markets][0][5]=spx&filters[markets][0][6]=doi&filters[markets][0][7]=mec&filters[markets][0][8]=mica&filters[markets][0][9]=res&filters[markets][0][10]=flori&filters[markets][0][11]=gour&filters[markets][0][12]=alna&filters[markets][0][13]=cof&filters[markets][0][14]=chng&verbosity=store&offset=0&limit=5000',
    headers=headers)
if r.status_code == 200:
    print('stores data below:')
    data = r.json()
    print(data)
else:
    print(f'Oops. Statud code is {r.status_code}')
 类似资料:
  • 我正在尝试用解析XML中不同元素的特定方法编写一些单元测试。但是我在单元测试中解析“测试”xml文件时遇到了一些问题。 我的问题并不是与XML/XSD文件有关,而是关于如何在单元测试中正确解析它们。 这是我到目前为止的代码: 即使我在实现方法中以同样的方式进行解析,我也会得到以下错误: 错误:读取文件“dir/testxsd.xsd”时出错:无法加载外部实体“dir/testxsd.xsd” 我尝

  • 我无法使用python检索以下xml中的性别字段。我试过以下方法: 我希望得到元素。但我得到“没有” XML页面 有人能帮我理解我做错了什么吗?

  • 我有文本文件包含的CSV文件格式的样本,我希望我的用户可以下载一个链接点击该文件。 此文件驻留在此文件夹结构中: 资产- 这是我一直尝试的代码: 此代码在页面加载时下载文件,而不是单击链接。此外,它还下载页面的整个html结构,我只需要我在文本文件中编写的文本。 请问问题出在哪里?

  • 问题内容: 假设我的网页上有这些元素。 我想单击带有文本的链接。如何使用 链接文本 来识别或单击该元素,而没有任何独特的属性,例如id或class。 在.Net中,我可以使用。nightwatch.js中的等效项是什么 问题答案: 定位器在内部使用XPath。 因此,使用XPath单击示例中的第二个链接: 请注意,根据内部HTML的不同,您可能需要连接子级并修剪空格:

  • 问题内容: 我正在尝试从这样的站点地图中提取URL:https : //www.bestbuy.com/sitemap_c_0.xml.gz 我已经解压缩并将.xml.gz文件另存为.xml文件。结构如下: 我正在尝试使用ElementTree提取整个文件中 loc 节点内的所有URL ,但仍在努力使其正常工作。 根据文档,我正在尝试这样的事情: 但是,没有任何东西可以载入价值。我的目标是提取lo

  • 我正在使用snmp4j开发snmp管理器。我需要读取MIB文本文件并生成相应的XML文件。是否有任何SNMP4j库可用于解析Mib文本文件并获取每个对象的数据。如果snmp4j不能解决我的问题,是否有其他类似的开源可用? 谢谢