如何使用Selenium+;python
我试图使用Selenium+Python逐个打开多个链接,但无法逐个单击每个链接并从每个链接获取数据 我试过:如何使用Selenium+;python,python,python-3.x,selenium,Python,Python 3.x,Selenium,我试图使用Selenium+Python逐个打开多个链接,但无法逐个单击每个链接并从每个链接获取数据 我试过: for i in range(0, 1): list_links = driver.find_elements_by_tag_name('a') i = [] for i in list_links: link = i.get_attribute('href') my_list = [link]
for i in range(0, 1):
list_links = driver.find_elements_by_tag_name('a')
i = []
for i in list_links:
link = i.get_attribute('href')
my_list = [link]
matching = [s for s in my_list if "https://www.magicbricks.com/propertyDetails/" in s]
str_list = list(filter(None, matching))
print (str_list)
我在打印上述代码后得到了以下结果:
['https://www.magicbricks.com/propertyDetails/3-BHK-1865-Sq-ft-Multistorey-Apartment-FOR-Sale-Mulund-West-in-Mumbai&id=4d423335383538333735']
[]
['https://www.magicbricks.com/propertyDetails/1-BHK-520-Sq-ft-Multistorey-Apartment-FOR-Sale-Kandivali-West-in-Mumbai&id=4d423333323636353737']
[]
['https://www.magicbricks.com/propertyDetails/2-BHK-938-Sq-ft-Multistorey-Apartment-FOR-Sale-Sion-in-Mumbai&id=4d423332393937303531']
[]
['https://www.magicbricks.com/propertyDetails/2-BHK-672-Sq-ft-Multistorey-Apartment-FOR-Sale-Goregaon-West-in-Mumbai&id=4d423334393532373231']
[]
['https://www.magicbricks.com/propertyDetails/3-BHK-1325-Sq-ft-Multistorey-Apartment-FOR-Sale-Madh-in-Mumbai&id=4d423236343136393731']
[]
对于“单击链接”,尝试了此操作,但无效:
for link in matching:
link.click()
print (link)
编辑:
我试过:
for s in my_list:
if "https://www.magicbricks.com/propertyDetails/" in s:
print (s)
driver.find_element[s].click()
获取错误:驱动程序。查找\u元素[s]。单击()类型错误:“方法”对象不可下标
or
driver.find_elements_by_link_text(s).click()
获取错误:AttributeError:“list”对象没有属性“click”
请提出一些建议。提前谢谢 因为您的列表包含字符串,但不包含Selenium的Web元素(只有在此之后才能执行“单击”操作) 要做到这一点,您还需要保存
列表链接中的这些对象
列表(根据“匹配”链接更新版本)
代码:
PS:另一种不用Web元素的方法:在Web驱动程序中使用JavaScript,并在选项卡/窗口中打开链接(匹配的列表)
希望它能帮助你 对于点击链接尝试了这个,但没有工作发生了什么?你有错误吗?用相关的HTML@John戈登,错误:link.click()属性错误:“str”对象没有属性“click”
我从这里获取所有链接https://www.magicbricks.com/property-for-sale/residential-real-estate?bedroom=1、2,3,4,5、%3E5和proptype=多层公寓、建筑楼层公寓、,Penthouse、Studio公寓、住宅、别墅、住宅小区&cityName=Mumbai
只需检查提取的所有链接是否都可单击,您可以通过检查元素的onClick()或类似属性来执行此操作。谢谢,您能给我一些示例吗要执行此操作,您还需要保存列表链接列表中的这些对象(根据“匹配”链接更新版本)。
my_needed_links = []
list_links = driver.find_elements_by_tag_name("a")
# Get unique links.
for link in list_links:
if "https://www.magicbricks.com/propertyDetails/" in link.get_attribute("href"):
if link not in my_needed_links:
my_needed_links.append(link)
# Go through of them and click on each.
for unique_link in my_needed_links:
unique_link.click()
# Switch to the tab.
driver.switch_to_window(driver.window_handles[1])
# Do some stuff inside tab.
# Close the tab.
driver.close()
# Switch back to the main tab/window.
driver.switch_to_window(driver.window_handles[0])