我是使用selenium进行网络抓取的新手,我正在抓取SeeTicket。我们的刮刀工作原理如下。
现在的问题是,某些事件不包含某些元素,例如此事件:https://wl.seetickets.us/event/Beta-Hi-Fi/484490?afflky=WorldCafeLive
其中不包含定价表,但此表包含
https://www.seetickets.us/event/Wake-Up-Daisy-1100AM/477633
所以我使用了尝试,除了块
try:
find element
except:
return none
但是如果它在try中没有找到元素,则需要5秒才能转到,除非因为我使用了
webdriver.implicitwait(5)
现在,如果任何页面不包含多个元素,selenium会花费大量时间来抓取该页面。
我有数千页要刮。应该做些什么来加快这一进程。
谢谢
而不是使用 implicitWait 并等待每个单独的元素,只需等待满页加载,例如等待 h1 标记,这将指示已加载整个页面,然后继续提取。
#wait for page load
try:
pageLoadCheck=WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.XPATH, "(//h1)[1]"))).get_attribute("textContent").strip()
#extract data without any wait once the page is loaded
try:
dataOne=driver.find_element_by_xpath("((//h1/following-sibling::div)[1]//a[contains(@href,'tel:')])[1]").get_attribute("textContent").strip()
except:
dataOne=''
except Exception as e:
print(e)
尝试使用显式等待,而不是隐式等待,而是将其应用于搜索主容器以等待内容加载。对于所有内部元素,应用find_element
,无需等待。
附言:分享你的真实代码而不是伪代码总是更好的。
要使用硒加速卷筒纸刮擦:
您的有效代码块将是:
try:
element = WebDriverWait(driver, 3).until(EC.visibility_of_element_located((By.ID, "input"))))
print("Element is visible")
except TimeoutException:
print("Element is not visible")
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
我是selenium的新手,正在尝试一个需要从页面中抓取URL的项目。 来源:-https://www.autofurnish.com/audi-car-accessories 我想搜集数据以获取这些产品的URL。我能够完成它,但面临滚动部分的问题。我需要抓取这个页面上所有产品的所有URL。这是一个巨大的页面,有很多结果。 我尝试过:- 1. 我试过这个代码,但它只是向下滚动到最后,所有的产品都没
所以我想在速卖通上把一个产品的价格刮下来。我试着检查这个元素 null null 我正在尝试运行以下代码 ''' '''但我一直得到一个空输出。我一定是做错了什么,但这些方法似乎在我看到的教程中起作用。
问题内容: 到目前为止,我一直只使用scrapy并编写自定义类来使用ajax处理网站。 但是,如果我要使用scrapy-splash,据我所知,它会在javascript之后刮擦呈现的html,那么对我的抓取工具的速度会产生重大影响吗? 用scrapy刮擦香草html页面与使用scrapy-splash渲染javascript html所花费的时间之间的比较是什么? 最后,scrapy-splas
我需要刮http://www.vintagetoday.be/fr/montres但它有动态内容。 我该怎么做呢? 从bs4导入请求导入美丽汤t=requests.get("vintagetoday.be/fr/catalogue.awp"). text print(len(美丽汤(t,"lxml"). findAll("td",{"class":"Lien2"}))
问题内容: 我正尝试在此网站上搜索selenium表中的清单。我是新手,并编写了以下代码: 但是,我可以获取以下标签,但不能获取其中的数据。 我以前也尝试过BS4进行刮擦,但失败了。任何帮助深表感谢。 问题答案: 该 结果是在一个iframe -切换到它,然后得到: 我还要添加一个等待表加载的方法:
实现一个刮刮乐的刮奖效果。即用手指滑动刮奖区,会刮去上面一层视图,显示下面一层视图的内容。 [Code4App.com]