原网址:http://ac.qq.com/ComicView/index/id/521825/cid/1 ,但是该网址拒绝查看源代码,通过观察进一步发现给原网址添加一个view-source: 就可以出现园代码了,即view-source:http://ac.qq.com/ComicView/index/id/521825/cid/1 """ from selenium.webdriver import PhantomJS, DesiredCapabilities import time import re header = DesiredCapabilities.CHROME.copy() # DesiredCapabilities可以伪装谷歌浏览器 web = PhantomJS(desired_capabilities=header, executable_path='F:/phantomjs-2.1.1-windows/bin/phantomjs' ) # 需要设置PhantomJS的路径,否则无法运行 web.maximize_window() # 设置浏览器屏幕最大化 web.get('http://ac.qq.com/ComicView/index/id/521825/cid/1') # 获取网页 web.get_screenshot_as_file( './abc.png') # 网页截图,可以看到一个网页图片,以png的格式保存到指定位置,名称为abc.png for page in range(1, 30): # window.scrollTo(0,{})往下翻页 web.execute_script('window.scrollTo(0,{})'.format( 1080 * page)) # execute_script表示执行翻页的脚本,1080*1表示第一页,1080*2表示第二页,以此类推。。。 time.sleep(1) web.get_screenshot_as_file('./abc.png') # 下载最后一页 pat = 'https://manhua.qpic.cn/vertical/0/(.*?)"' # 通过正则获取图片地址 ls = re.compile(pat, re.S).findall(web.page_source) # web.page_source表示源代码 import urllib.request as r for i in range(len(ls)): r.urlretrieve("http://www.baidu.com", filename="F:\pa/aa.html")
class Client(object): """Client HTTP pour tester fonctionnellement Strass Adapteur du pilote Selenium, avec une interface inspirée de Nightwatch.js, et quelques paramètres spécifiques à Strass.""" def __init__(self): self.driver = PhantomJS() self.driver.set_window_size(1120, 550) def __del__(self): self.driver.quit() def get(self, query=None): server = os.environ.get('STRASS_TEST_SERVER', 'http://localhost:8000') url = server + (query or '/') self.driver.get(url) return self def find(self, selector): return self.driver.find_element_by_css_selector(selector) def click(self, selector): self.find(selector).click() return self def fill(self, selector, value): if isinstance(value, datetime.date): self.fill(selector + ' input.day', str(value.day)) self.fill(selector + ' input.month', str(value.month)) self.fill(selector + ' input.year', str(value.year)) else: control = self.find(selector) try: control.clear() except selexc.InvalidElementStateException: # On doit tenter de nettoyer un input[type=file]. On zap. pass control.send_keys(value) return self def select(self, selector, value): Select(self.find(selector)).select_by_value(value) return self def submit(self, selector='#document button[type=submit]'): return self.click(selector) def close(self): self.driver.close() if self.driver.window_handles: self.driver.switch_to.window(self.driver.window_handles[0]) self.driver.set_window_size(1120, 550) return self def screenshot(self, filename): self.driver.get_screenshot_as_file(filename) sys.stderr.write("Capture d'écran enregistrée dans %r\n" % (filename,)) return self def save(self, filename): with open(filename, 'w') as fo: fo.write(self.driver.page_source) sys.stderr.write("HTML enregistré dans %r\n" % (filename,)) return self def __getattr__(self, name): return getattr(self.driver, name)
# -*- coding: utf-8 -*- """ 另类爬虫selenium @author: 肖 """ # 首先进行安装 执行: pip install -U selenium / pip install selenium # test1: from selenium.webdriver import PhantomJS import re web = PhantomJS(executable_path='F:/phantomjs-2.1.1-windows/bin/phantomjs' ) # 需要设置PhantomJS的路径,否则无法运行 web.get('http://www.baidu.com') # 获取网页 print(web.page_source) # 打印网页源代码 print(web.page_source[0:300]) # 打印网页部分源代码,前面300个元素 web.get_screenshot_as_file( './baidu.png') # 网页截图,可以看到一个网页图片,以png的格式保存到指定位置,名称为baidu.png # test2: element = web.find_element_by_xpath('//*[@id="kw"]') # 通过xpath方式进行获取,定位百度的输入栏 element.send_keys('python') # 输入关键字 element = web.find_element_by_xpath( '//*[@id="su"]') # 定位百度的百度一下按钮,定位方式都是通过右键copy xpath即可,不是以往的xpath定位 element.click() # 促发按钮点击事件 web.get_screenshot_as_file( './baidusearch.png') # 网页截图,可以看到一个网页图片,以png的格式保存到指定位置,名称为baidusearch.png print(element) # 打印此时的element print(web.page_source) # 打印源代码 re.compile('<title>(.*?)</title>').findall(web.page_source) # 正则匹配而已