• 网络爬虫例子


    一、最简单的一个例子

    代码如下:

    import requests
    url='http://www.nj29jt.net/ArticleShow.aspx?CateId=153&Id=2132'
    res=requests.get(url)
    res.encoding='utf-8'
    print(res.text)  #res.text是网页的内容,就是在浏览器中查看网页源代码看到的内容
    

      上面的 requests 就是用来访问网络获取信息的模块,其get方法用于获取网页的内容。

    二、解析html文件

      通过上面的 res.text 是一个纯文本的html页面内容,实际要获取页面中的信息,需要解析html文档。

    这里可使用 BeautifulSoup 模块,该模块aconcada已内置,如果要安装,可以 pip install  beautifulsoup4

    下面是一个例子

    import requests
    from bs4 import BeautifulSoup  #BeautifulSoup模块用于解析html页面
    url='http://www.nj29jt.net/ArticleShow.aspx?CateId=153&Id=2132'
    res=requests.get(url)
    res.encoding='utf-8'
    
    soup = BeautifulSoup(res.text)   
    print(soup.title) #输出网页的标题(含html标签)
    print(soup.title.name) #输出html标签
    print(soup.title.string) #输出标签的内容
    

      

    再看如何获取页面中的表格(上面例子网页中的教师信息是在很多个html的table中),代码如下

    import requests
    from bs4 import BeautifulSoup  #BeautifulSoup模块用于解析html页面
    url='http://www.nj29jt.net/ArticleShow.aspx?CateId=153&Id=2132'
    res=requests.get(url)
    res.encoding='utf-8'
    
    soup = BeautifulSoup(res.text)   
    alltables = soup.select('table') # 根据html的标签查找网页中所有的表格(表格元素的标签是table),
    print(type(alltables))  #alltables是一个 bs4.element.ResultSet对象,是一个结果集
    
    table = alltables[0] #按序号获取第一个元素
    print(type(table)) # bs4.element.Tag
    
    tableStr = str(table) #转换为字符串。
    
    for table in alltables:  #可以遍历表格
        pass
    

      

    三、利用pandas将 获取的网页中的table转换为 DataFrame,这样就可做更多处理,包括输出到excel中

    例子代码如下:

    import requests   # requests 模块用于获取网页信息
    import pandas as pd
    url='http://www.nj29jt.net/ArticleShow.aspx?CateId=153&Id=2132'
    res=requests.get(url)
    res.encoding='utf-8'
    
    tables = pd.read_html(res.text) #将网页内容res.text传递给read_html方法,会自动解析出其中所有的表格,返回一个列表(DataFrame对象的列表)
    print(len(tables)) tables[0].to_excel('user.xlsx',index=False) #输出到excel tables[0] #输出第一个表格 df = pd.concat(tables) #合并多个表格 df.to_excel('alluser.xlsx',index=False) #输出到excel

    for table in tables: #遍历
      pass

      

    实际上如果只是获取网页中的表格,pandas直接支持,并不需要使用requests模块,代码如下:

    import pandas as pd  
    url='http://www.nj29jt.net/ArticleShow.aspx?CateId=153&Id=2132'
    tables = pd.read_html(url) #pandas可以直接根据url地址,访问网页,获取其中的表格
    print(len(tables))
    tables[0].to_excel('user.xlsx',index=False) #输出到excel
    tables[0] #输出第一个表格
    
    df = pd.concat(tables) #合并多个表格
    df.to_excel('alluser.xlsx',index=False) #输出到excel
    

      

    BeautifulSoup 模块

  • 相关阅读:
    java虚拟机之类加载机制
    java虚拟机之垃圾收集器
    java虚拟机之内存模型
    java基础之NIO
    java基础之字符串
    Integer.valueOf源码分析
    将博客搬至CSDN
    url中向后台传递参数中文乱码
    Layui主窗口和Iframe层参数传递
    百度地图Api 加载海量点
  • 原文地址:https://www.cnblogs.com/51kata/p/16354848.html
Copyright © 2020-2023  润新知