首页 > 编程语言 >Python爬虫入门笔记

Python爬虫入门笔记

时间:2022-09-06 21:22:39浏览次数:64  
标签:入门 Python text 爬虫 find re json print response

一、requests请求库

  • requests安装:pip install requests

  • request使用3步骤

    ①导入模块

    ②发送get请求,获取响应:response = requests.get(url)

    ③从响应中获取数据

    #1.导入模块
    import requests
    
    #2.发送请求,获取响应
    response = request.get('http://www.baidu.com')
    
    #3.从响应中获取数据
    print(response.text)
    
  • response常见属性

    • response.text:响应体str类型

    • response.encoding:二进制转换字符使用的编码

    • response.content:响应体bytes类型

# 3.从响应中获取数据
# 打印所使用的编码:ISO-8859-1
print(response.encoding)
# 设置编码为:UTF-8
response.encoding = 'utf-8'
print(response.text)

# 打印响应的二进制数据
print(response.content)
# 把二进制数据转换字符串
print(response.content.decode())

二、Beautiful Soup解析库

  • Beautiful Soup 4安装:pip install bs4

  • lxml安装:pip install lxml

  • 创建BeautifulSoup对象:soup = BeautifulSoup(html,'lxml')

    # 1.导入模块
    from bs4 import BeautifulSoup
    
    # 2.创建BeautifulSoup对象
    soup = BeautifulSoup('<html>data</html>','lxml')
    print(soup)
    
  • BeautifulSoup对象的find方法

    1、根据标签名:soup.find('a')

    2、根据属性查找:soup.find(id='link1')或soup.find(attrs={'id':'link1'})

    3、根据文本内容查找:soup.find(text='Elsie')

    • find方法的作用:搜索文档树

    • find(self,name=None,attrs={},recursive=True,text=None,**kwargs)

      • 参数
        • name:标签名
        • attrs:属性字典
        • recursive:是否递归循环查找
        • text:根据文本内容查找
      • 返回
        • 查找到的第一个元素对象
    • tag对象

      tag对象对应于原始文档中的XML或HTML标签

      Tag有很多方法和属性,可用于遍历文档树和搜索文档树以及获取标签内容

    • tag对象常见属性

      • name:获取标签名称
      • attrs:获取标签所有属性的键和值
      • text:获取标签的文本字符串

三、正则表达式

  • 概念

    正则表达式是一种字符串匹配的模式(pattern)。

  • 作用

    从某个字符串中提取符合某种条件的子串

  • 语法

    1、. 匹配除换行符(\n)以外所有字符

    2、\d 匹配[0-9]的数字

    3、\w 匹配字母数字_和中文

    4、* 前面的一个匹配模式出现0次或多次

    5、+ 前面的一个匹配模式出现1次或多次

    6、? 前面的一个匹配模式出现0次或1次

  • re.findall()方法

    • 如果正则表达式中没有()则返回与整个正则匹配的列表

    • 如果正则表达式中有(),则返回()中匹配的内容列表,小括号两边东西都是负责确定提取数据所在位置。

      re = re.findall("a.+bc","a\nbc",re.DOTALL)
      print(rs)
      //结果:['a\nbc']
      re = re.findall("a(.+)bc","a\nbc",re.DOTALL)
      print(rs)
      //结果:['\n']
      
  • 正则表达式中的r原串的使用

    • 正则中使用r原始字符串,能够忽略转义符号带来的影响
    • 待匹配的字符串中有多少个\,r原串正则中就添加多少个\即可

四、json模块

  • json模块

    json模块是Python自带的模块,用于json与python数据之间的相互转换。

  • json转换成python

    • json字符串 —>python数据类型:json.loads(s)
    • json格式的文件对象 —>python数据类型:json.load(fp)
  • python转换为json

    • python类型数据 —>json字符串:json.dumps(obj)
    • python类型数据 —>json格式文件:json.dump(obj,fp)

标签:入门,Python,text,爬虫,find,re,json,print,response
From: https://www.cnblogs.com/ls66666/p/16663335.html

相关文章

  • Python入门系列(十一)一篇搞定python操作MySQL数据库
    开始安装MySQL驱动$python-mpipinstallmysql-connector-python测试MySQL连接器importmysql.connector测试MySQL连接importmysql.connectormydb=mysql.c......
  • 乾坤(qiankun)结合vue入门
    前言官方入门教程:https://qiankun.umijs.org/zh/cookbook微应用路由模式选择:location.pathname--hashdemo参考常见问题在主应用的某个路由页面加载微应用注意事......
  • python fastapi + uvicorn 记录日志的最佳实践,结合nb_log
      pythonfastapi+uvicorn记录日志的最佳实践,要记录对fastapi什么时候请求了什么url和入参,只需要记录uvicorn命名空间的日志就可以了。文章使用nb_log五彩日志来......
  • 奶奶常说,黑白照片看的不清晰,还好我会Python,分分钟给她变成彩色的~
    咳咳~其实是奶奶常说,艾欧尼亚昂扬不灭,正义将指引着我们! 好吧,并不是奶奶说,只是最近回家发现一些黑白老照片,看着不够清晰,然后实验了一波用Python把老照片变成彩......
  • jenkins+python构建项目
    1.下载jenkinswindows版本2.安装:需要检验端口,因为本机8080被别的项目占用了,选择了80端口3.新建一个free风格项目  配置:github,github管理代码,相当于本地代码需要推......
  • centos 7.X 安装python3.X 使得python3.X 和 python2.x共存
    https://www.cnblogs.com/JahanGu/p/7452527.html(以亲试)https://blog.csdn.net/eastlhu/article/details/74931913https://www.cnblogs.com/FZfangzheng/p/7588944.html......
  • python(三)函数
    (六)字符串的比较is是通过比较两个对象的内存地址,查看内存地址的方法是id()in是包含==是类型和内容一致a=1b=1print(id(a))print(id(b))ifaisb: print......
  • pythonⅢ
    '''字符串的比较is:看通过id()对象的内存地址,查看内存地址的方式in:包含==:类型及内容一致'''a=1b=1print(id(a))print(id(b))ifaisb:    print('a和b内存地址都一样......
  • CentOS7 安装 python 3.7.4
     CentOS7安装python3.7.4 #安装环境(最小化安装)CentOSLinuxrelease7.0.1406(Core)#下载安装包https://www.python.org/ftp/python/3.7.4/Python-3.7.4.......
  • python struct unpack
    pythonstructunpackmsg=self.serverSocket.recv(1024)#接受服务端消息AngleSensorST,y_Angle_deg,x_Angle_deg,Z_Angle_deg,AngleDeviceTEMP,WatchdogCount=st......