我对Python相当陌生,第一次使用漂亮的汤,尽管我对硒有一些经验。我试图刮一个网站(http://cbseaff.nic.in/cbse_aff/schdir_Report/userview.aspx)所有的从属关系号码。
问题是它们在多个页面上(1上有20个结果,总计:21000个结果)
所以,我希望在某种循环中刮这些,可以在下一个页面上迭代btn,网页的URL中的问题不会改变,因此没有模式。
好吧,为此我尝试过,谷歌表导入超文本标记语言/导入XML方法,但由于大规模的问题,它只是挂起。接下来,我尝试了python,并开始阅读关于使用python抓取的内容(我是第一次这样做:))这个平台上的一些人建议了一种方法
(Python请求/美化对分页的组访问)
我也在尝试做同样的事情,但几乎没有成功。
此外,要获取结果,我们必须首先使用关键字“a”查询搜索栏--
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.by import By
import time
options = webdriver.ChromeOptions()
options.add_argument("headless")
driver = webdriver.Chrome(executable_path=r"C:\chromedriver.exe",options=options)
driver.get("http://cbseaff.nic.in/cbse_aff/schdir_Report/userview.aspx")
#click on the radio btn
driver.find_element(By.ID,'optlist_0').click()
time.sleep(2)
# Search the query with letter A And Click Search btn
driver.find_element(By.ID,'keytext').send_Keys("a")
driver.find_element(By.ID,'search').click()
time.sleep(2)
next_button = driver.find_element_by_id("Button1")
data = []
try:
while (next_button):
soup = BeautifulSoup(driver.page_source,'html.parser')
table = soup.find('table',{'id':'T1'}) #Main Table
table_body = table.find('tbody') #get inside the body
rows = table_body.find_all('tr') #look for all tablerow
for row in rows:
cols = row.find_all('td') # in every Tablerow, look for tabledata
for row2 in cols:
#table -> tbody ->tr ->td -><b> --> exit loop. ( only first tr is our required data, print this)
我期望的最终结果是跨多个页面的所有从属关系编号列表。
对while
循环中的代码进行了少量添加:
next_button = 1 #Initialise the variable for the first instance of while loop
while next_button:
#First scroll to the bottom of the page
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
#Now locate the button & click on it
next_button = driver.find_element(By.ID,'Button1')
next_button.click()
###
###Beautiful Soup Code : Fetch the page source now & do your thing###
###
#Adjust the timing as per your requirement
time.sleep(2)
请注意,滚动到页面底部很重要,否则会弹出一个错误,声称按钮1元素隐藏在页脚下。因此,有了脚本(在循环的开始),浏览器将向下移动到页面的底部。在这里,它可以清楚地看到'Button1'元素。现在,找到元素,执行单击操作
问题内容: 我正在尝试从PGA.com网站上获取数据,以获取美国所有高尔夫球场的表格。在我的CSV表中,我想包括高尔夫球场的名称,地址,所有权,网站,电话号码。有了这些数据,我想对其进行地理编码并放入地图中,并在计算机上拥有本地副本 我利用Python和Beautiful Soup4提取了我的数据。到目前为止,我已经提取了数据并将其导入CSV,但是现在我遇到了从PGA网站上的多个页面抓取数据的问题
问题内容: 下午全部。当前尝试使用Selenium Webdriver循环浏览页面上的链接列表。具体来说,它是单击链接,从所述页面上抓取一行文本以写入文件,然后返回,然后单击列表中的下一个链接。以下是我所拥有的: 运行时,它会转到初始页面,然后返回主页面,而不是应有的子页面。打印x,我可以看到它递增了三倍而不是一倍。此后它也崩溃。我已经检查了所有的xpath等,并确认列表中的链接数得到了正确的计数
raceback(最近的最后一次调用):File"/User/kaikeichan/Desktop/python_webpage/actionchain.py",第7行,在驱动程序=网络驱动程序中。Chrome(PATH)File"/Library/Framework/Python.framework/Versions/3.10/lib/python3.10/site-packages/selen
我得到一个使用下面的代码的锚的列表,然后我想去每个链接。我想出了下面的代码,但是在第一个循环之后,我得到了以下异常 org.openqa.selenium.staleElementReferenceException:过时元素引用:元素未附加到页面文档(会话信息:Chrome=55.0.2883.87) 有没有办法做到这一点,而不需要每次返回页面?
我有一个关于一些国家的下拉列表如下, 我想通过使用Selenium和Java将值US、CA、AF、AL、DZ、AS、AD发送到一个数组,循环它并打印。 我尝试了以下操作 这将打印美国,加拿大,阿富汗,阿尔巴尼亚等,但我想像美国CA AF AL DZ作为广告
我目前正在尝试使用Selenium和python来实现一个过程的自动化,但我遇到了一个障碍。该列表是树下列表的一部分。我已经用以下xpath标识了树的基础 我正在尝试循环通过“项目”部分,但需要和点击任何与“输入”标签 由于某些原因。如果我使用下面这样的东西,click()将不起作用。它只有在我使用WebDriverWait时才起作用。我必须使用web驱动等待方法,任何时候,我需要点击页面上的东西