Beispiel #1
0
原网址: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")
Beispiel #2
0
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)  # 正则匹配而已