【发布时间】:2018-02-24 18:42:14
【问题描述】:
我试图抓取一个主要是 angularjs 的网站。 我的基本代码如下所示。
我正在传递参数,取回 html,然后通过查找我知道存在的 id 为“next”的元素来检查是否存在分页。
问题是,对于一个我知道“下一个”元素打开的页面,我的代码只在某些时候找到它,而其他时候它根本看不到它。
我认为这可能与我在呈现 html 之前检查这一事实有关,但我不确定为什么它有时会起作用。
感谢任何指针或建议。
def getBrowser():
browser = webdriver.Chrome('C:\\chromedriver_win32\\chromedriver.exe')
return browser
def getPage(browser):
html = browser.page_source
soup = BeautifulSoup(html, "lxml")
return soup
webBrowser = getBrowser()
webBrowser.get("my page")
mainPage = getPage(webBrowser)
pagination = mainPage.select('#next')
#this value is randomly populated, and randomly a blank list.
print(pagination)
【问题讨论】:
-
您应该等待 N 时间,或者可能在获取页面源之前等待存在的元素...您在哪里指定要加载的页面?或者你只是在等待主页?这里似乎缺少很多代码,这些代码将显示您指示浏览器检索的内容...
-
只是缺少实际链接,我不想发布主链接。差不多就是这样。我尝试添加一个 sleep() 命令,达到 20 秒之类的疯狂值,它没有任何区别。即使没有睡眠,我也可以“随机”获得“下一个”元素。
-
找到了解决方案。需要第二次 sleep(),一次在 webBrowser.get("my page") 之后约 5 秒,另一次在 mainPage = getPage(webBrowser) 之后再持续 5 秒。
标签: python selenium screen-scraping