我正在使用selenium在各种网站上自动执行任务。我想做的一切都很好,除了有很多重复的工作。
例如,假设您在搜索页面上填写了表单。搜索结果页面为您提供如下内容:
1. Result1
2. Result2
3. Result3
> Next page
Result1
,Result2
,Result3
和> Next page
的所有内容都与我关注的信息相关联。
理想情况下,我想获取所有结果的页面源,并耗尽所有分页链接。
目前,我的流程是这样的:
- Get search page
- Fill out and submit form
- Click link 1
- Return page Source
- Get search page
- Fill out and submit form
- Click link 2
- Return page source
...
- Get search page
- Fill out and submit form
- Click next page link
- Click link for Result 1 on next page
- Return source
显然,这里有太多的重复工作。理想情况下,我想克隆我的浏览器,以便我可以有这样的流程:
browser = webdriver.PhantomJS()
browser.get(search_page)
# fill out and submit form, wait for results
links = extract_links(browser.page_source)
sources = [browser.page_source]
for link in links:
browser_clone = clone(browser)
click link in browser_clone
sources.append(browser_clone.page_source)
return sources
我在这里遇到的问题是browser_clone = clone(browser)
。 deepcopy
不起作用,因为它会影响browser
。我无法pickle
浏览器,因为它不适用于webdriver元素。有没有办法做到这一点?