【发布时间】:2021-05-11 18:18:51
【问题描述】:
对不起,如果我的问题格式错误,因为我是编程和 StackOverFlow 的新手。我无法使用类或任何其他方法找到下载按钮。目前正在尝试使用 xpath 解决,但我听说 xpath 不是可靠的方法。我正在尝试抓取 wikiloc 站点以下载特定位置内的所有轨道路径。登录的问题可能是我在抓取时可能没有登录。顺便说一句,我主要使用谷歌 colab。我的代码如下:
driver.get('https://www.wikiloc.com/wikiloc/start.do')
driver.find_element_by_name('email').send_keys('testacount852')
driver.find_element_by_name('password').send_keys('49Vchu4njDrrT7.')
driver.find_element_by_id('submit-button').click()
time.sleep(10)
driver.get("https://www.wikiloc.com/trails/outdoor/france/brittany")
links = []
temp_links = []
names = []
temp_names = []
for _ in range(4):
temp = driver.find_elements_by_css_selector('a.trail-title.dont-break-out')
temp_links = [x.get_attribute('href') for x in temp]
temp_names = [x.text for x in temp]
links = links+temp_links
names = names+temp_names
try:
driver.find_element_by_class_name('next').click()
time.sleep(2)
except:
break
for link in links:
driver.get(link)
driver.find_element_by_id('download-button').click()
time.sleep(4)
driver.find_element_by_class_name('active').click()
time.sleep(4)
driver.find_element_by_xpath("/html/body/main/div/div[2]/div/div[1]/div/div[2]/div/div[2]/form/div[2]/input").click()
time.sleep(4)
df['Names'] = pd.Series(names)
df['Links'] = pd.Series(links)
df.to_csv('test1.csv')
driver.close()
这是我的凭据的链接 [1]:https://i.stack.imgur.com/HZ6bZ.png
【问题讨论】:
-
哪个元素不起作用,那么长的 xpath?为了找到一个好的选择器,我们需要被测页面的完整 HTML。我尝试按照您的测试步骤访问该页面,但无法登录。
-
是的!长 xpath 。这就是我认为可能登录不起作用所以下载按钮不出现。有没有办法让我的登录正常工作
-
好吧,您需要一个有效的用户名和密码,而这些似乎不是。我认为这里没有人可以帮助您。
-
凭据正确。我自己检查过它们,但无头浏览器似乎无法正确登录。我试过没有无头,它似乎把凭据然后打开指定的链接。作为测试,我在那里停止了我的脚本并检查我是否已登录,我发现我没有被浏览器登录。我在 facebook 上使用的方法相同(当然还有其他凭据),但完全没有问题。
标签: python selenium screen-scraping