python抓包代码_python selenium 抓包代码封装

# 导入selenium模块中的web引擎

from selenium import webdriver

from selenium.webdriver.chrome.options import Options

from pyquery import PyQuery as pq

# 时间 下载工具包

import time, wget, os

class Network(object):

def __init__(self, url, seconds=10):

# 这个是一个用来控制chrome以无界面模式打开的浏览器

# 创建一个参数对象,用来控制chrome以无界面的方式打开

options = Options()

options.add_experimental_option('excludeSwitches', ['enable-automation'])

options.add_argument('--headless') # 设置Chrome为无头模式

options.add_argument('--no-sandbox')

options.add_argument('--disable-dev-shm-usage')

options.add_argument('blink-settings=imagesEnabled=false')

options.add_argument('--disable-gpu')

# 建立浏览器对象 ,通过Phantomjs

self.browser = webdriver.Chrome(options=options)

self.url = url

# 发起请求

self.browser.get(url)

time.sleep(3) # 等待3s

# 等待一定时间,让js脚本加载完毕

self.browser.implicitly_wait(seconds) # seconds 隐式等待

# 静态文件,图片地址

cur_dir = os.path.split(os.path.realpath(__file__))[0]

self.static_src = os.path.abspath(cur_dir + '/./../static/')

# 常用变量 页面源码,挂载在jq上

self.JQuery = pq(self.browser.page_source)

# 浏览器器对象

def bom(self):

return self.browser

# 关闭浏览器

def close_browser(self):

self.browser.quit()

# 模拟浏览器抓取数据主业务 重构 返回浏览器对象

def main(self, url='', seconds=20):

# 访问url

if url == '':

url = self.url

self.browser.get(url)

time.sleep(3) # 等待3s

# 等待一定时间,让js脚本加载完毕

self.browser.implicitly_wait(seconds) # seconds 隐式等待

#页面源码 页面源码,挂载在jq上

self.JQuery = pq(self.browser.page_source)

return self.browser

# 如果列表的长度为1强制转换为字典

def list_or_dict(self, arr):

if len(arr) == 1:

return arr[0]

else:

return arr

# 通过tagName获取对象

def tag_name(self, tag_name):

return self.list_or_dict(self.browser.find_elements_by_tag_name(tag_name))

# 通过id获取对象

def id(self, id):

return self.browser.find_element_by_id(id)

# 通过className 获取对象

def class_name(self, class_name):

return self.list_or_dict(self.browser.find_elements_by_class_name(class_name))

# 通过a标签href属性获取对象 用链接文本定位超链接

def href_name(self, href_name):

return self.list_or_dict(self.browser.find_elements_by_partial_link_text(href_name))

# css选择器定位

def css_selector(self, css_selector):

return self.list_or_dict(self.browser.find_elements_by_css_selector(css_selector))

# find 定位选择

def find(self, element, name):

if element.find_elements_by_css_selector(name):

return element.find_elements_by_css_selector(name)

# 获取元素的属性

def attr(self, element, attr_name):

if isinstance(element, list):

arr = []

for e in element:

arr.append(e.get_attribute(attr_name))

return arr

else:

return element.get_attribute(attr_name)

# 获取元素的文本

def text(self, element):

if isinstance(element, list):

arr = []

for e in element:

arr.append(e.text)

return arr

else:

return element.text

# 获取页面body数据

def get_body(self):

# 返回body对象

return self.tag_name('body')[0]

# 下载文件,图片等

def download(self, urls, dir=''):

# 判断url的数据属性

if isinstance(urls, list):

for url in urls:

# 下载文件参数 文件url 保存的地址

f_name = url.split('/')[-1]

if dir != '':

wget.download(url, os.path.abspath(dir + '/' + f_name))

else:

wget.download(url, os.path.abspath(self.static_src + '/' + f_name))

else:

# 下载文件参数 文件url 保存的地址

f_name = urls.split('/')[-1]

if dir != '':

wget.download(urls, os.path.abspath(dir + '/' + f_name))

else:

wget.download(urls, os.path.abspath(self.static_src + '/' + f_name))

return True

# 调用

# 设置访问的url

url = "https://www.runoob.com/python3/python3-namespace-scope.html"

# 初始化实例

net = Network(url)

ths=net.JQuery.find('.table_wrapper-table thead th').items()

trs=net.JQuery.find('.table_wrapper-table tbody tr')

trs_len=trs.length

# 临时变量 存储 key名称

本文地址:https://blog.csdn.net/qq_24745557/article/details/107077075

希望与广大网友互动??

点此进行留言吧!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值