Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在selenium Python中逐个动态获取Url?_Python_Selenium_For Loop_Selenium Webdriver_Selenium Chromedriver - Fatal编程技术网

如何在selenium Python中逐个动态获取Url?

如何在selenium Python中逐个动态获取Url?,python,selenium,for-loop,selenium-webdriver,selenium-chromedriver,Python,Selenium,For Loop,Selenium Webdriver,Selenium Chromedriver,我是新来的。我想在谷歌上搜索一个关键词并打开它,在结果部分,我想点击第一个url并获取数据,然后返回,点击第二个链接并获取数据……以此类推,直到10个url。我在下面的代码中使用了x-path,但是我想动态地执行它,而不需要编写一个链接的特定x-path? 我已经尝试过使用for循环,但我无法做到。 总之,我希望在不指定特定x路径的情况下获得以下代码的结果,但动态获取任何关键字的url from selenium import webdriver from selenium.webdriver

我是新来的。我想在谷歌上搜索一个关键词并打开它,在结果部分,我想点击第一个url并获取数据,然后返回,点击第二个链接并获取数据……以此类推,直到10个url。我在下面的代码中使用了x-path,但是我想动态地执行它,而不需要编写一个链接的特定x-path? 我已经尝试过使用for循环,但我无法做到。 总之,我希望在不指定特定x路径的情况下获得以下代码的结果,但动态获取任何关键字的url

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By
import time

driver=webdriver.Chrome(executable_path="E:\Sahil\selenium\chromedriver\chromedriver.exe")

driver.get("https://www.google.com/")

print(driver.title)

driver.maximize_window()
time.sleep(2)

driver.find_element(By.XPATH, "//input[@name='q']").send_keys('selenium')

driver.find_element(By.XPATH, "//div[@class='FPdoLc tfB0Bf']//input[@name='btnK']").send_keys(Keys.ENTER)
# time.sleep(5)

# 1>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "Selenium Web Driver").click()

a=driver.find_elements(By.TAG_NAME, "p")

for data in a:
    print(data.text)
driver.back()

# 2>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "The Selenium Browser Automation Project :: Documentation ...").click()

b=driver.find_elements(By.TAG_NAME, "p")

for data in b:
    print(data.text)
driver.back()

# 3>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "Selenium Tutorial for Beginners: Learn WebDriver in 7 Days").click()

c=driver.find_elements(By.TAG_NAME, "p")

for data in c:
    print(data.text)
driver.back()

# 4>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "Selenium with Python — Selenium Python Bindings 2 ...").click()

d=driver.find_elements(By.TAG_NAME, "p")

for data in d:
    print(data.text)
driver.back()

# 5>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "Selenium: Definition, How it works and Why you need it ...").click()

e=driver.find_elements(By.TAG_NAME, "p")

for data in e:
    print(data.text)
driver.back()

# 6>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "selenium · PyPI").click()

f=driver.find_elements(By.TAG_NAME, "p")

for data in f:
    print(data.text)
driver.back()

# 7>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "Selenium (software) - Wikipedia").click()

g=driver.find_elements(By.TAG_NAME, "p")

for data in g:
    print(data.text)
driver.back()

# 8>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "Selenium: Health benefits, sources, and potential risks").click()

h=driver.find_elements(By.TAG_NAME, "p")

for data in h:
    print(data.text)
driver.back()

# 9>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "SeleniumHQ/selenium: A browser automation ... - GitHub").click()

i=driver.find_elements(By.TAG_NAME, "p")
for data in i:
    print(data.text)
driver.back()

# Next Page
driver.find_element(By.LINK_TEXT, "2").click()

# 10>>>
driver.find_element(By.PARTIAL_LINK_TEXT, "Selenium - Testing Framework | Sauce Labs").click()
j=driver.find_elements(By.TAG_NAME, "p")

for data in j:
    print(data.text)
driver.back()
driver.close();
试试这个:

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By
import time

driver=webdriver.Chrome("chromedriver.exe")

driver.get("https://www.google.com/")

print(driver.title)

driver.maximize_window()
time.sleep(2)

driver.find_element(By.XPATH, "//input[@name='q']").send_keys('selenium')

driver.find_element(By.XPATH, "//div[@class='FPdoLc tfB0Bf']//input[@name='btnK']").send_keys(Keys.ENTER)

a = driver.find_elements_by_xpath("//div[@class='r']/a") 
links = []
for x in a:      # this loop get all the webpages link and store into 'links' list.
    links.append(x.get_attribute('href'))
link_data = []
for new_url in links:    #go on every webpage and store page source in link_data list.
    print('new url : ' , new_url)
    driver.get(new_url)
    link_data.append(driver.page_source)
    driver.back()

#print('link data len : ' ,len(link_data)) 
#print('link data [0] : ' , link_data[0])  # print first webpage source.
此代码从所有链接获取所有数据并保存在
link\u data
列表中

对于p标签,您可以使用以下代码:

from bs4 import BeautifulSoup as bs
page = bs(link_data[0],'html.parser')
p_tag = page.find_all('p')
print(p_tag)
试试这个:

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

from selenium.webdriver.common.by import By
import time

driver=webdriver.Chrome("chromedriver.exe")

driver.get("https://www.google.com/")

print(driver.title)

driver.maximize_window()
time.sleep(2)

driver.find_element(By.XPATH, "//input[@name='q']").send_keys('selenium')

driver.find_element(By.XPATH, "//div[@class='FPdoLc tfB0Bf']//input[@name='btnK']").send_keys(Keys.ENTER)

a = driver.find_elements_by_xpath("//div[@class='r']/a") 
links = []
for x in a:      # this loop get all the webpages link and store into 'links' list.
    links.append(x.get_attribute('href'))
link_data = []
for new_url in links:    #go on every webpage and store page source in link_data list.
    print('new url : ' , new_url)
    driver.get(new_url)
    link_data.append(driver.page_source)
    driver.back()

#print('link data len : ' ,len(link_data)) 
#print('link data [0] : ' , link_data[0])  # print first webpage source.
此代码从所有链接获取所有数据并保存在
link\u data
列表中

对于p标签,您可以使用以下代码:

from bs4 import BeautifulSoup as bs
page = bs(link_data[0],'html.parser')
p_tag = page.find_all('p')
print(p_tag)

它工作正常,但并没有从所有打开的网页中获取内容。例如,我希望打开URL的p标记的内容。这段代码捕获url名称并存储在新的url中,并显示相同的内容。我希望p标签的数据显示在打开的网站上,而不是url名称。编辑:我使用:a=driver.find_元素(By.tag_NAME,“p”)获得了p标记中的数据,用于a:print(data.text)中的数据。谢谢上面的代码。您还可以解释上面的代码,比如数组和for循环之间的代码。每行的作用??取消注释最后两行,这两行存储所有打开的网页的所有内容。谢谢。而且,如果我们想获得我前面提到的指定标记的内容,比如p标记。或者其他我们需要做什么?在这段代码中的链接,我们正在获取网页源。我想在网页上的eg文章写的数据。此外,我有几个问题,我想问我应该只在这里问吗?告诉我你想谈什么。这是工作正常,但它不是从所有的网页打开的内容。例如,我希望打开URL的p标记的内容。这段代码捕获url名称并存储在新的url中,并显示相同的内容。我希望p标签的数据显示在打开的网站上,而不是url名称。编辑:我使用:a=driver.find_元素(By.tag_NAME,“p”)获得了p标记中的数据,用于a:print(data.text)中的数据。谢谢上面的代码。您还可以解释上面的代码,比如数组和for循环之间的代码。每行的作用??取消注释最后两行,这两行存储所有打开的网页的所有内容。谢谢。而且,如果我们想获得我前面提到的指定标记的内容,比如p标记。或者其他我们需要做什么?链接在这段代码中,我们正在获取页面源代码。我想要在网页中为eg文章编写的数据。另外,我有几个问题想问,我应该只在这里问吗?告诉我你想在哪里谈。