网页数据的获取----案例

目录

  • 文本数据获取
  • 表格数据获取

正文

  • 文本数据获取

  • 】获取人民日报网页版2020年03月25日星期三01版文章《武汉以外地区解除离鄂通道管控》文本内容,网页网址:http://paper.people.com.cn/rmrb/html/2020-03/25/nw.D110000renmrb_20200325_8-01.htm
  • 分析】查看网页源代码,文章标题由h3、h1、h2、h4标题标签组成,文章内容由p标签组成,嵌套在< DIV id=ozoom style=“zoom:100%;”>下。因此,在获取文本内容时,通过h3、h1、h2、h4标题标签获得文章标题,通过find()函数获得属性id=ozoomDIV标签下的内容,在DIV标签的内容下通过findall()函数获得所有p标签内容获得需要的文本内容。
  • 代码如下
from bs4 import BeautifulSoup    #引入beautifulsoup库
import requests    #引入requests库
def get_html(url):
        try:
                r=requests.get(url)
                r.raise_for_status() 
                r.encoding=r.apparent_encoding
                return r.text
        except:
                r="fail"
                return r
if __name__=="__main__":    #程序的开始
	url='http://paper.people.com.cn/rmrb/html/2020-03/25/nw.D110000renmrb_20200325_8-01.htm'
	html=get_html(url)
	soup=BeautifulSoup(html,'html.parser')
	title=soup.h3.text+soup.h1.text+soup.h2.text+soup.h4.text
	#if soup.h4:
	#	title=title+soup.h4.text
	plist=soup.find('div',attrs={'id':'ozoom'}).find_all('p')
	content=''	
	for p in plist:
	 	content+=p.text+'\n'
	f1=open('d:\\books\\%s.txt'%(title),'w',encoding='utf-8')
	f1.write(content)    #将content的内容写入文件
	f1.close()    #关闭文件
  • 运行结果
    在这里插入图片描述
    在这里插入图片描述
  • 表格数据获取

  • 】爬取1960-2018年世界各国的gdp数据,网页网址:https://www.kuaiyilicai.com/stats/global/yearly overview/g gdp.html
  • 分析】在浏览器中输入网址,选择右侧的1960打开1960年世界各的GDP数据,网址为:www.kylc.com/stats/global/yearly/g_gdp/1960.html, 发现数据在一个表格内,查看源代码,与GDP表格数据相关的每行信息在标签内,每个单元格的数据在标签内。打开1961GDP数据,网址:www.kylc.com/stats/global/yearly/g_gdp/1961.html, 发现网址是将1960GDP数据网址中的1960改成1961,其他年份的网址也是这个规律,因此由1960年的网址就可以获得
    1961年-2018年的世界GDP数据网址,进而可以获取1960-2018年世界各国的GDP数据。
  • 代码如下
import requests    #引入requests库
from bs4 import BeautifulSoup    #引入beautifulsoup4库
import csv
def get_html(url):
	try:
		r=requests.get(url)
		r.raise_for_status()
		r.encoding=r.apparent_encoding
		return r.text
	except:
		r="fail"
		return r
def getGDP(ulist,html):
	soup=BeautifulSoup(html,"html.parser")
	trs=soup.find_all('tr')    #查找所有的tr标签,即表格的所有行内容
	for tr in trs:
		list=[]    #定义空列表list,保存当前行的数据
		for th in tr:    #表格每一行中的每一列单元格
			ts=th.string    #每个单元格的内容
			if ts=='\n':
				continue
			list.append(ts)    #将当前单元格的内容追加到列表list中
		ulist.append(list)    #将当前行的数据列表list追加到列表ulist
def saveGDP(ulist,s):
        file_name='GDP'+s+'.csv'
        with open(file_name,'a',errors='ignore',newline='') as f:
                f_csv=csv.writer(f)
                f_csv.writerows(ulist)
def main():    #主函数
	s='1960'    #字符s代表开始的年份
	for i in range(59):    #1960-2018一共59年,i取值0-58共循环59次
		unifo=[]    #空列表unifo,保存当前年份表格数据
		url='https://www.kylc.com/stats/global/yearly/g_gdp/'+s+'.html'
		html=get_html(url)    #获取url的内容
		getGDP(unifo,html)
		saveGDP(unifo,s)    #将列表unifo中的数据保存为csv文件
		s1=int(s)    #字符s的值转换为数值,存入s1
		s1=s1+1
		s=str(s1)    #s1的值转换给字符,存入s
if __name__=="__main__":
	main()    #调用main()函数
  • 运行结果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    如果对你有帮助,给个免费的赞支持一下吧!感谢阅读!
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张同学啦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值