爬虫总结备份

爬虫要根据当前url地址对应的响应为准,当前url地址的elements的内容和url的响应不一样

页面上的数据在哪里

  • 当前url地址对应的响应中
  • 其他的url地址对应的响应中
    • 比如ajax请求中
  • js生成的
    • 部分数据在响应中
    • 全部通过js生产

requsets中解决编解码的方法

  • response.content.decode()
  • response.content.decode(“gbk”)
  • response.text

requests.text 和requests.content的区别

  • 使用request.text时候,需要制定解码方式,response.encoding=“utf8”,否则中文乱码。
  • 使用requests.content时候,只需用requests.content.decode()一句话就可以了。

使用代理ip

  • 准备一堆的ip地址,组成ip池,随机选择一个ip来使用

  • 如何随机选择代理ip

    • {“ip”:ip,“time”:0}
    • [{},{},{},{},{}],对这个ip列表进行排序,按照使用次数进行排序
    • 选择使用次数较少的10个ip,从中随机选择一个。
  • 检测ip的可用性

    • 可以使用requests添加超时参数,判断ip地址的质量
    • 在线代理ip检测网站

requests小技巧

  • requests.util.dict_from_cookiejar 把cookie对象转化为字典

urllib

  • 下载图片文件
  • urllib.requests.urlretrieve(img,‘路径’)

lxml库

  • 导入lxml的etree库

    • from lxml import etree
  • 利用etree.HTML,将字符串转化为element对象

  • element对象具有xpath的方法

    • html = etree.HTML(text)

xpath 学习重点

  • 获取文本
    • a/text()
  • @符号
    • a/@herf
    • //ul[@id=""]
  • //
    • 在xpath开始的时候表示从当前html中任意位置开始选择
    • li//a 表示的示li下任何一个标签

xpath 的包含

  • //div[contains(@class,‘i’)]

BeautifulSoup

  • find_all的使用
    “”“python
    a = soup.find_all(‘a’)#查询所有的a标签
    “””
  • select
    • 通过标签名查找
    • 通过类名选择,在类的前面加一个点
    • 通过id名字选择 id前加#
    • 查找子孙元素 那么要在子孙元素中间有一个空格
    • 查找直接子元素,那么在父子元素中间有一个>
    • 跟据属性名字进行查找
      “”“python
      input[name=‘username’]
      “””

re

match

  • 从头开始匹配

匹配单个字符

  • "."匹配任意字符(换行符除外)
  • "\d"匹配数字(0-9)
  • "\D"匹配非数字
  • "\s"匹配空白字符(\n \r \t 空格)
  • "\w"匹配的是a-z,A-Z,数字和下划线
  • “\W"匹配与”\w"相反
  • “[]“组合的方式,只要满足中括号中的某一项都算匹配成功。
    “”“python
    text = “120-12455515”
    ret = re.match(”[\d-]”,text)
    ret.group() 1
    “””
  • “[]“中括号的形式代替”\d” [0-9]
  • “[]“中括号的形式代理”\D” 中括号(^0-9)
  • “[]“中括号的形式代替”\w” [a-zA-Z0-9_]

匹配多个字符

  • "*"匹配0或者任意多个字符
  • "+"匹配1个或者多个字符
  • "?"匹配0个或者1个字符
  • {m}匹配m个字符
  • {m,n}匹配m-n个字符

group

  • group()函数取所有“()用于分组”
  • group(1)取第一个分组

groups

  • 取所有的子分组

sub

  • 替换匹配的字符串

search

  • 返回第一个匹配的字符串

split

  • 分割

findall

  • 返回所有的符合规则的 以列表返回

re.S和re.DOTALL

  • 可以让“.”匹配到"\n"

JSON学习(本质就是一个字符串)

json支持数据格式

  • 对象(字典),使用花括号
  • 数组(列表),使用方括号
  • 整形、浮点型、布尔类型还有null类型
  • 字符串类型(字符串必须要用双引号,不能用单引号)

csv的读取和写入

  • 读取
  • 写入
    • 第一种方法
      “”“python
      import csv
      headers = [‘name’,‘age’,‘height’]
      values = [
      (‘张三’,18,160),
      (‘李四’,19,180),
      (‘王五’,20,170)
      ]
      with open(‘classroom.csv’,‘w’,encoding=‘utf-8’,newline=’’) as f:
      writer = csv.writer(f)
      writer.writerow(headers)
      writer.writerows(values)
      “””
    • 第二种方法
      “”“python
      headers = [‘name’,‘age’,‘height’]
      values = [
      {‘name’:‘张三’,‘age’:18,‘height’:160},
      {‘name’:‘李四’,‘age’:19,‘height’:180},
      {‘name’:‘王五’,‘age’:20,‘height’:170}
      ]
      with open(‘classroom.csv’,‘w’,encoding=‘utf-8’,newline=’’) as f:
      writer = csv.Dictwriter(f,headers)
      writer.writeheader()
      writer.writerows(values)
      “””
      queue
    • q.put(block=False)默认是阻塞状态 如果put时队列满了一直阻塞到放进去为止。
    • q.get(block=False)

实现爬虫的套路

  • 准备url
    • 准备start_url
      • url地址规律不明显,总数不确定
      • 通过代码提取下一页的url
        • xpath
        • 寻找url地址,部分参数在当前的响应中(比如当前页码数和总的页码数)
    • 准备url-list
      • 页码总数明确
      • url地址规律明显
  • 发送请求,获取响应
    • 添加随机的user-agent,反反爬虫
    • 添加随机的代理ip,反反爬虫
    • 在对方判断出我们是爬虫之后,应该添加更多的headers字段,包括cookie

后续爬虫代码的建议

  • 尽量减少请求次数
    • 能抓取列表页就不抓详情页
    • 保存获取到的html页面,供查错和重复请求使用
  • 关注网站的所有类型的页面
    • wap页面,触屏版页面
    • H5页面
    • APP
  • 多伪装
    • 动态的UA
    • 代理ip
    • 不使用cookie
  • 利用多线程分布式
    • 在不被ban的请求下尽可能的提高速度

selenium使用的注意点

  • 获取文本和获取属性

    • 先定位到元素,然后调用.text或者get_attribute方法来取。
  • selenium获取的页面数据是浏览器中elements的内容。

  • pass

  • 如果页面中含有iframe。frame,需要先调用driver.switch_to.frame的方法或者switch_to_frame切换到frame中才能定位元素。
    selenium常用操作

  • driver = webdriver.Chrom(executable_path=‘chromedriver路径’)

  • 获取页面原码 driver.page_source

  • 关闭当前页面:driver.close()

  • 退出浏览器:driver.quit()

  • 定位元素(element查找第一个,elements查找所有)

    • 根据id来查找元素:find_element_by_id
    • 根据类名查找元素:find_element_by_class_name
    • 根据name属性的值来查找元素:find_element_by_name
    • 根据标签名来查找元素:fing_element_by_tag_name
    • 根据xpath语法获取元素find_element_by_xpath
    • 根据css选择器选择元素:find_element_by_css_selector/find_element(BY.CSS_SELECTOR,“规则”)
  • 常见的表单操作

    • input标签
      • 输入字符串:send_keys(‘python’)
      • 清除 :clear()
    • checkbok标签
      • 选中/取消选中:click()
    • select 标签
      • select_by_index(0)
      • select_by_value(“sdfsfaf”)
      • select_by_visible_text(“sfaksfla”)
      • 取消说有选中:deselect_all()
  • 行为链(鼠标的一些操作)

    • from selenium.webdriver.common.action_chains import ActionCharins
  • Cookie操作

    • 获取所有的cookie:driver.get_cookies() 得到一个列表for循环取值
    • 根据cookie的key:driver.get_cookie(“key”)
    • 根据key删除cookie:driver.delete_cookie(“key”)
    • 删除所有cookie:driver.delete_all_cookies()
  • 隐式等待和显示等待

  • 打开多窗口

    • driver.execute_script(“window.open(‘http://www.’)”)
  • 切换窗口

    • driver.switch_to_window(driver.window_handles[1])
  • 设置代理ip
    “”“python
    options = webdriver.ChromeOptions()
    options.add_argument(”–proxy-server=http://120.121.12:9999")
    driver = webdriver.Chrome(executable_path=‘路径’,chrome_options=options)
    “”"

标题SpringBoot智能在线预约挂号系统研究AI更换标题第1章引言介绍智能在线预约挂号系统的研究背景、意义、国内外研究现状及论文创新点。1.1研究背景与意义阐述智能在线预约挂号系统对提升医疗服务效率的重要性。1.2国内外研究现状分析国内外智能在线预约挂号系统的研究与应用情况。1.3研究方法及创新点概述本文采用的技术路线、研究方法及主要创新点。第2章相关理论总结智能在线预约挂号系统相关理论,包括系统架构、开发技术等。2.1系统架构设计理论介绍系统架构设计的基本原则和常用方法。2.2SpringBoot开发框架理论阐述SpringBoot框架的特点、优势及其在系统开发中的应用。2.3数据库设计与管理理论介绍数据库设计原则、数据模型及数据库管理系统。2.4网络安全与数据保护理论讨论网络安全威胁、数据保护技术及其在系统中的应用。第3章SpringBoot智能在线预约挂号系统设计详细介绍系统的设计方案,包括功能模块划分、数据库设计等。3.1系统功能模块设计划分系统功能模块,如用户管理、挂号管理、医生排班等。3.2数据库设计与实现设计数据库表结构,确定字段类型、主键及外键关系。3.3用户界面设计设计用户友好的界面,提升用户体验。3.4系统安全设计阐述系统安全策略,包括用户认证、数据加密等。第4章系统实现与测试介绍系统的实现过程,包括编码、测试及优化等。4.1系统编码实现采用SpringBoot框架进行系统编码实现。4.2系统测试方法介绍系统测试的方法、步骤及测试用例设计。4.3系统性能测试与分析对系统进行性能测试,分析测试结果并提出优化建议。4.4系统优化与改进根据测试结果对系统进行优化和改进,提升系统性能。第5章研究结果呈现系统实现后的效果,包括功能实现、性能提升等。5.1系统功能实现效果展示系统各功能模块的实现效果,如挂号成功界面等。5.2系统性能提升效果对比优化前后的系统性能
在金融行业中,对信用风险的判断是核心环节之一,其结果对机构的信贷政策和风险控制策略有直接影响。本文将围绕如何借助机器学习方法,尤其是Sklearn工具包,建立用于判断信用状况的预测系统。文中将涵盖逻辑回归、支持向量机等常见方法,并通过实际操作流程进行说明。 一、机器学习基本概念 机器学习属于人工智能的子领域,其基本理念是通过数据自动学习规律,而非依赖人工设定规则。在信贷分析中,该技术可用于挖掘历史数据中的潜在规律,进而对未来的信用表现进行预测。 二、Sklearn工具包概述 Sklearn(Scikit-learn)是Python语言中广泛使用的机器学习模块,提供多种数据处理和建模功能。它简化了数据清洗、特征提取、模型构建、验证与优化等流程,是数据科学项目中的常用工具。 三、逻辑回归模型 逻辑回归是一种常用于分类任务的线性模型,特别适用于二类问题。在信用评估中,该模型可用于判断借款人是否可能违约。其通过逻辑函数将输出映射为0到1之间的概率值,从而表示违约的可能性。 四、支持向量机模型 支持向量机是一种用于监督学习的算法,适用于数据维度高、样本量小的情况。在信用分析中,该方法能够通过寻找最佳分割面,区分违约与非违约客户。通过选用不同核函数,可应对复杂的非线性关系,提升预测精度。 五、数据预处理步骤 在建模前,需对原始数据进行清理与转换,包括处理缺失值、识别异常点、标准化数值、筛选有效特征等。对于信用评分,常见的输入变量包括收入水平、负债比例、信用历史记录、职业稳定性等。预处理有助于减少噪声干扰,增强模型的适应性。 六、模型构建与验证 借助Sklearn,可以将数据集划分为训练集和测试集,并通过交叉验证调整参数以提升模型性能。常用评估指标包括准确率、召回率、F1值以及AUC-ROC曲线。在处理不平衡数据时,更应关注模型的召回率与特异性。 七、集成学习方法 为提升模型预测能力,可采用集成策略,如结合多个模型的预测结果。这有助于降低单一模型的偏差与方差,增强整体预测的稳定性与准确性。 综上,基于机器学习的信用评估系统可通过Sklearn中的多种算法,结合合理的数据处理与模型优化,实现对借款人信用状况的精准判断。在实际应用中,需持续调整模型以适应市场变化,保障预测结果的长期有效性。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值