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

使用selenium和beautifulsoup进行网页抓取。。解析和选择按钮时出现问题

宗政坚白
2023-03-14

我正试图从以下网站“url=”上抓取内容https://angel.co/life-sciences' ". 该网站包含8000多个数据。从这个页面我需要像公司名称和链接,加入日期和追随者的信息。在此之前,我需要通过单击按钮对followers列进行排序。然后单击“更多隐藏”按钮加载更多信息。页面最多可点击20次(隐藏更多)内容,此后不会加载更多信息。但我只能通过排序来获取顶级追随者的信息。这里我实现了click()事件,但它显示了错误。

Unable to locate element: {"method":"xpath","selector":"//div[@class="column followers sortable sortable"]"} #before edit this was my problem, using wrong class name

所以我需要在这里给更多的睡眠时间吗?(尝试给,但相同的错误)

我需要解析所有上述信息,然后访问这些网站的个人链接,刮内容div的html页面只。

请给我建议一个方法

这是我目前的代码,我没有添加html解析部分使用美丽的汤。

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
from selenium import webdriver 
from bs4 import BeautifulSoup
#import urlib2
driver = webdriver.Chrome()
url='https://angel.co/life-sciences'
driver.get(url)
sleep(10)

driver.find_element_by_xpath('//div[@class="column followers sortable"]').click()#edited
sleep(5)
for i in range(2):
    driver.find_element_by_xpath('//div[@class="more hidden"]').click()
    sleep(8)

sleep(8)
element = driver.find_element_by_id("root").get_attribute('innerHTML')
#driver.execute_script("return document.getElementsByTagName('html')[0].innerHTML")
#WebDriverWait(driver, 10).until(EC.visibility_of_element_located((By.CLASS_NAME, 'more hidden')))
'''
results = html.find_elements_by_xpath('//div[@class="name"]')
 # wait for the page to load

for result in results:
    startup = result.find_elements_by_xpath('.//a')
    link = startup.get_attribute('href')
    print(link)
'''
page_source = driver.page_source

html = BeautifulSoup(element, 'html.parser')
#for link in html.findAll('a', {'class': 'startup-link'}):
#       print link

divs = html.find_all("div", class_=" dts27 frw44 _a _jm")

在我添加Followers click事件之前,上面的代码正在运行,并为我提供了html源代码。

我的最终目标是将所有这五个信息导入CSV或xls文件,如公司名称、链接、加入日期、追随者数量和公司描述(在访问各自的链接后获得)。

感谢您的帮助和评论。这是我第一次使用python和selenium,没有什么困惑,需要指导。

谢谢:-)

共有2个答案

吕德惠
2023-03-14

哎呀,我的键入错误或一些愚蠢的错误,我使用的div类名是错误的,它是“column followers sortable”,而我使用的是“column followers sortable selected”。:-(现在,上面的工作非常好..但是有谁能指导我使用beautifulsoup HTML解析部分吗?

鲜于华容
2023-03-14

click方法旨在模拟鼠标单击;它用于可单击的元素,如按钮、下拉列表、复选框等。您已将此方法应用于不可单击的div元素。诸如divspanframe等元素用于组织HTML并提供字体装饰等。

要使此代码正常工作,您需要识别页面中实际可单击的元素。

 类似资料:
  • 问题内容: 我正在使用Python从网站上抓取内容。首先,我用和Python的,但我看到,该网站有一个按钮,通过JavaScript创建的内容,所以我决定使用。 假设我可以使用Selenium等方法找到元素并获取其内容,那么当我可以对所有内容都使用Selenium时,有什么理由要使用? 在这种特殊情况下,我需要使用Selenium来单击JavaScript按钮,以便更好地使用Selenium进行解

  • 我正在尝试不同的方式选择一个特定的按钮使用seleninum webdriver与Java,但不幸的是,没有任何工作。 当我测试使用Selenium时,IDE是工作的。例如,我复制了相同的xpath,但当我试图在Java应用程序中进行测试时,任何东西都不起作用。我尝试使用不同的方法,通过.cssselector和通过.path。 这是我的HTML: 我需要选择带有文本“Create Applica

  • 我正在尝试从一组大小未知的单选按钮中进行选择。(多套,但一步一步..)在实际站点上,它们不是值的text1。表单id是随机生成的,但遵循一种模式。所以我不能真的使用它。我得到了一个一致的课程.. 我已经尝试添加结束,什么也不会发生。

  • 问题内容: 在网站上,有在标顶部的几个环节,,,和。如果按下以数字标记的链接,它将动态地将一些数据加载到content中。如果被按下,它会用标签页,,,和第4页中的数据显示。 我想从按下的所有链接的内容中抓取数据(我不知道有多少,一次只显示3个,然后) 请举一个例子。例如,考虑网站www.cnet.com。 请指导我下载使用selenium的一系列页面,并自行解析它们以处理漂亮的汤。 问题答案:

  • 问题内容: 我想从网站上获取每天的日出/日落时间。是否可以使用Python抓取网络内容?使用什么模块?有没有可用的教程? 问题答案: 结合使用urllib2和出色的BeautifulSoup库:

  • 问题内容: 我想在服务器端执行以下操作: 1)抓取网页 2)模拟对该页面的单击,然后导航到新页面。 3)刮开新页面 4)模拟新页面上的一些按钮单击 5)通过json或其他方式将数据发送回客户端 我正在考虑将其与Node.js一起使用。 但是我对应该使用哪个模块感到困惑 a)corpse b)Node.io c)Phantomjs d)JSDOM e)其他 我已经安装了node,io,但是无法通过命