如何用python+selenium+phantomjs获得一个网页的动态生成的html代码
一般我们使用python的第三方库requests及框架scrapy来爬取网上的资源,但是设计javascript渲染的页面却不能抓取,此时,我们使用web自动化测试化工具Selenium+无界面浏览器PhantomJS来抓取javascript渲染的页面,下面实现一个简单的爬取环境搭建准备工具:python3.5,selenium,phantomjs我的电脑里面已经装好了python3.5安装Selenium1pip3 install selenium安装Phantomjs 按照系统环境下载phantomjs,下载完成之后,将phantomjs.exe解压到python的script文件夹下使用selenium+phantomjs实现简单爬虫123456789from selenium import webdriver driver = webdriver.PhantomJS()driver.get('httpdu.com') #加载网页data = driver.page_source #获取网页文本driver.save_screenshot('1.png') #截图保存print(data)driver.quit()selenium+phantomjs的一些使用方法设置请求头里的user-Agent123456789101112from selenium import webdriverfrom selenium.webdriver.common.desired_capabilities import DesiredCapabilities dcap = dict(DesiredCapabilities.PHANTOMJS) #设置useragentdcap['phantomjs.page.settings.userAgent'] = ('Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:25.0) Gecko/20100101 Firefox/25.0 ') #根据需要设置具体的浏览器信息driver = webdriver.PhantomJS(desired_capabilities=dcap) #封装浏览器信息driver.get('h.com') #加载网页data = driver.page_source #获取网页文本driver.save_screenshot('1.png') #截图保存print(data)driver.quit()请求超时设置webdriver类中有三个和时间相关的方法:1.pageLoadTimeout 设置页面完全加载的超时时间,完全加载即完全渲染完成,同步和异步脚本都执行完2.setScriptTimeout 设置异步脚本的超时时间3.implicitlyWait 识别对象的智能等待时间1234567from selenium import webdriver driver = webdriver.PhantomJS()driver.set_page_load_timeout(5) #设置超时时间driver.get('httbaidu.com')print(driver.title)driver.quit()设置浏览器窗口大小调用启动的浏览器不是全屏的,有时候会影响我们的某些操作,所以我们可以设置全屏 12driver.maximize_window() #设置全屏driver.set_window_size('480','800') #设置浏览器宽480,高800元素定位123456789101112131415161718from selenium import webdriver driver = webdriver.PhantomJS()driver.set_page_load_timeout(5)driver.get('idu.com')try: driver.get('.com') driver.find_element_by_id('kw') # 通过ID定位 driver.find_element_by_class_name('s_ipt') # 通过class属性定位 driver.find_element_by_name('wd') # 通过标签name属性定位 driver.find_element_by_tag_name('input') # 通过标签属性定位 driver.find_element_by_css_selector('#kw') # 通过css方式定位 driver.find_element_by_xpath("//input[@id='kw']") # 通过xpath方式定位 driver.find_element_by_link_text("贴吧") # 通过xpath方式定位 print(driver.find_element_by_id('kw').tag_name ) # 获取标签的类型except Exception as e: print(e)driver.quit()操作浏览器前进或后退1234567891011121314from selenium import webdriverdriver = webdriver.PhantomJS()try: driver.get('httaidu.com') #访问百度首页 driver.save_screenshot('1.png') driver.get('ht.sina.com.cn') #访问新浪首页 driver.save_screenshot('2.png') driver.back() #回退到百度首页 driver.save_screenshot('3.png') driver.forward() #前进到新浪首页 driver.save_screenshot('4.png')except Exception as e: print(e)driver.quit()好文要顶 关注我 收藏该文
python phantomjs渲染网页很慢怎么解决
调用是超级简单的from tornado_fetcher import Fetcher# 创建一个爬虫>>> fetcher=Fetcher( user_agent='phantomjs', # 模拟浏览器的User-Agent phantomjs_proxy='http://localhost:12306', # phantomjs的地址 poolsize=10, # 最大的httpclient数量 async=False # 同步还是异步 )# 开始连接Phantomjs的代理,可以渲染JS!>>> fetcher.phantomjs_fetch(url)# 渲染成功后执行额外的JS脚本(注意用function包起来!)>>> fetcher.phantomjs_fetch(url, js_script='function(){setTimeout("window.scrollTo(0,100000)}", 1000)')希望能帮到你!
怎样在手机里开启多个窗口
若手机支持分屏功能,请操作:方式一:长按近期任务键-选择任意两个应用程序在分屏中显示。方式二:1.长按屏幕右下角的返回键约2秒钟,点击手机屏幕边缘出现的半圆形/半月形图标,打开侧边栏(注:若点击返回键没有反应,可能是由于未开启多窗口功能,请进入设定-显示-多窗口-开启) 。2.从侧边栏中依次拖动两个图标至右侧,此时,在同一界面中即可上下分屏显示两个程序。 提示:不同型号手机操作路径可能略有不同。
如何关闭和开启 Wscript.Shell组件
关闭:
1、运行(打开)Wscript.Shell
regsvr32 %windir%\system32\wshom.ocx
2、卸载(关闭)Wscript.Shell
regsvr32 /u %windir%\system32\wshom.ocx
3、运行(打开)Wscript.Shell
regsvr32 %windir%\system32\shell32.dll
4、卸载(关闭)Wscript.Shell
regsvr32 /u %windir%\system32\shell32.dll
开启:
启用组件,先确定system32目录下wshom.ocx组件存在,然后
命令:
CMD> regsvr32 WSHom.Ocx
phantomjs能不能取出跳转页面网址
:
我现在要抓取一个网页a标签name属性为dttl的所有href的数据,我是以下面这两种方式做的,
var list = document.getElementsByName('dttl');
var list = document.querySelectorAll('a[name="dttl"]');
这两种方式得到的数据大小没问题,但里面只有第一个对象是有数据的,其它对象都是null,所以请教一下,是不是这样来获取数据,谢谢!
phantomjs 怎么抓取js动态加载数据
phantomjs 抓取js动态加载数据的方法:
phantomjs因为是无头浏览器可以跑js,用来进行网页抓取是再好不过了。
比如我们要批量抓取网页 “历史上的今天” 的内容。
第一行将会在终端打印出字符串,第二行 phantom.exit 将退出运行。
在该脚本中调用 phantom.exit 是非常重要的,否则 PhantomJS 将根本不会停 止。 pyspider 连上 PhantomJS 代理后,你就能通过在 self.crawl 添加 fetch_type='js' 的参数,开启使用 PhantomJS 抓取。
win7系统打开网页很慢怎么解决
方法/步骤一:
1
整理磁盘碎片的方法。
第一步:在“我的电脑”窗口里,右击需要清理的盘符,选择属性--磁盘清理。在弹出的窗口中,选中所有的选项点击确定
2
第二步:右键点击IE选择属性--常规。点击删除。完成后点击确定。
3
第三步:在“我的电脑”窗口,右键点击磁盘选择属性--工具。点击开始整理。在弹出的窗口中点击碎片整理。
END
方法二:
注册表优化。
第一步:通过快捷键“Win+R”打开运行程序菜单,输入Regedit,打开注册表编辑器。
第二步:选择HKEY_LOCAL_MACHINE,之后再选择HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters选择DefaultTTL,改变值为80(16进制)。