Python爬虫入门笔记

一、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:获取标签的文本字符串
      #根据标签名查找
      #1.导入模块 
      from bs4 import BeautifulSoup
      
      #2.文档内容
      html = """
      <!DOCTYPE html>
      <html>
      <head>
      <meta charset="utf-8">
      <title>xxxxx</title>
      </head>
      <body>
      
      <h1>我的第一个标题</h1>
      <p>我的第一个段落。</p>
      
      </body>
      </html>
      """
      #3.创建BeautifulSoup对象
      soup = BeautifulSoup(html, 'lxml')
      
      #4.查找title标签
      title = soup.find('title')
      print(title)
      
      #5. 查找a标签
      a = soup.find('a')
      print(a)
      
      #6. 查找所有的a标签
      a_s = soup.find_all('a')
      print(a_s)
      
      #二、根据属性进行查找
      #查找id为link1的标签
      #方式1: 通过命名参数进行制定的
      a = soup.find(id="link1")
      print(a)
      #方式2: 通过attrs来指定属性字典,进行查找
      a = soup.find(attrs={'id': 'link1'})
      print(a)
      
      #三、根据文本内容进行查找
      text = soup.find(text="菜鸟教程")
      print(text)
      
      #Tag对象
      #对应原始文档的XML和HTML标签
      #属性有
      # name 姓名
      # attrs 属性
      # text 文档内容
      print(type(a))
      print(a.name)
      print(a.attrs)
      print(a.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)
posted @ 2022-09-06 21:14  林枢  阅读(52)  评论(0编辑  收藏  举报