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

我不能刮每个链接内容为特定的时间段从确实

谷泳
2023-03-14

我不熟悉python和web抓取。谢谢你的帮助。我是编程和实践方面的新手。我正在使用python和selenium进行web抓取

目标是找到过去24小时张贴的所有工作,并刮掉工作详细信息页面上可用的外部链接,链接文本“在公司网站上申请”,标题,公司,名称,位置,工作描述。

我编写了以下代码,但它正确地获取了页面上的所有链接,然后当我尝试打开每个链接时,它只打开了第一个链接。我怎样才能打开我一个接一个获取的所有链接。提前感谢,以下是我的代码示例:

import time
from selenium import webdriver
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.common.keys import Keys

Path = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(Path)

driver.get("https://indeed.ae/")
print(driver.title)
search = driver.find_element_by_name("l")
search.send_keys("Dubai")
search.send_keys(Keys.RETURN)

try:
    td = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "resultsCol"))
    )
    divs = td.find_elements_by_tag_name("div")

    for div in divs:
        try:
            title = div.find_element_by_class_name("title")
            anchors = title.find_elements_by_tag_name('a')
            links = []
            for anchor in anchors:
                link = anchor.get_attribute('href')
                links.append(link)
                print(links)
                for link in links:
                    url = driver.get(link)
        except:
            continue

finally:
    driver.quit()


driver.quit()

共有2个答案

王航
2023-03-14

我认为你在错误的地方运行循环,这就是为什么你只得到1个链接。

try:
        title = div.find_element_by_class_name("title")
        anchors = title.find_elements_by_tag_name('a')
        links = []
        for anchor in anchors:
            link = anchor.get_attribute('href')
            links.append(link)
        print(links)
        for link in links:
            url = driver.get(link)

我不使用selenium,但我擅长网络抓取主题。请告诉我你在链接列表循环中想做什么?

for link in links:
            url = driver.get(link)
商宝
2023-03-14

问题是你得到了href,转到页面,刮下它并说给我下一个href,但是现在你看,你再也找不到了,因为你在另一个页面上。

解决方案:清除所有URL并将其放入列表中。迭代该列表,然后逐个遍历其中的每个元素,将其刮除并从该列表中选择下一个元素。

 类似资料:
  • 问题内容: 我只想验证一下内容,但无法在Express文档或在线文档中找到与此相关的内容(尽管我知道这是一个功能)。 我可以对其进行测试,但我实际上并没有一个很好的模板,想听听社区的意见。 如果我这样定义快递路线: 我还可以定义一个中间件并直接加载它,例如 但是,我还可以链接这些路由中的至少一个来运行额外的中间件,例如身份验证,如下所示: 这些是无限可链接的吗?如果我愿意,可以在给定的路由上添加1

  • 我的用例——我是一名医生。在某一天,我可以工作几个小时,但有些时间不可用。我想创建一个对象“周期我的工作日”。当有人预约上午8点到9点(即“周期病人1预约”)时,该时段将从我的工作日“删除”。当新患者访问myWorkDay时,他只看到myWorkDay-病人1约会。如果病人1释放了他的时隙,那么新患者会看到完整的myWorkDay。 有可能使用JodaTime做到这一点吗? 有一个额外的要求是不必

  • 我在使用discord。py创建一个discord机器人,我需要每天在特定的时间执行某些操作。我看到了这个答案:如何在不和谐中循环。py重写?到目前为止,我一直在使用它。 当我在heroku免费计划上托管我的机器人时,问题就开始了。Heroku上的服务器每天至少重置一次,这会弄乱计时器,如该帖子所示。 我还看到了日程库。这个的问题是它似乎使用了一个无限循环。这不会阻止我在24小时内运行其他任何东西

  • 问题内容: 我有一个-link元素,该元素具有指向页面的href链接,但是我必须使用Ajax从href -url加载该内容,而不是将用户重定向到该页面。如何修改链接以仅从该链接加载内容,以便可以将该内容注入当前页面? 我做了这个,但是没用。 问题答案: 的负载功能并不旨在收集请求响应,该功能用于负载HTML从远程文件并注入到一个DOM元素,例如: 如果处理锚元素的单击事件,则应防止浏览器跟随链接h

  • 问题内容: 我正在尝试用Jade编写一些段落,但是当段落中有链接时会发现很难。 我能想到的最好的,我想知道是否有一种方法可以减少标记: 问题答案: 从jade 1.0开始,有一种更简单的方法可以解决此问题,但是不幸的是,我在官方文档中找不到它。 您可以使用以下语法添加内联元素: 因此,没有在ap中插入多行的示例将是这样的: 您还可以执行嵌套的内联元素:

  • 无论如何,我都可以让python点击一个链接,比如bit。是否删除链接,然后刮取生成的链接?当我抓取某个页面时,我能抓取的唯一链接是重定向的链接,它重定向到的位置就是我需要的信息所在的位置。