ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

网络爬虫例子

2022-06-08 11:01:10  阅读:193  来源: 互联网

标签:tables url res html 爬虫 例子 table 网络 requests


一、最简单的一个例子

代码如下:

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 模块

标签:tables,url,res,html,爬虫,例子,table,网络,requests
来源: https://www.cnblogs.com/51kata/p/16354848.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有