资讯详情

9.8.2网络爬虫基础

题目如下:

1.设计get-content函数,url为了获取数据网站地址,函数返回值是网页文本

首先,我们介绍requests库和BeautifulSoup库,然后我们用requests库中的get获取网站内容的函数,并将其转换为text格式。要把r.encoding=r.apparent_encoding这样,中文也可以识别。

代码如下:

url="http://www.weather.com.cn/weather/101190801.shtml"
import requests from bs4 import BeautifulSoup def get_content(x):     try:         r=requests.get(x)         r.encoding=r.apparent_encoding         return r.text     except:         return print("爬取有误")

2.设计get-data函数,返回徐州七天的日期.天气.最高温度和最高温度;

第二个问题是,我们首先需要知道网页中存储的源代码是什么形式,所以我们打开网页并按下它F12查看源代码

首先,我们获取日期,先经历标签树,先观察日期对应的标签,(观察源代码后发现)标签为h1,然后使用find函数发现 h1标签 对应的内容,发现前7位是日期内容,存储在类表中。

代码如下:

def get_data(y):     #获取日期     soup=BeautifulSoup(y,'html.parser')     data1=soup.find_all("h1")     a=list()     for i in range(0,7):         a.append(data1[i].text)

天气条件与最高温度和最低温度相似:

观察天气情况,发现标签为p标签属性wea,这样我们就可以用了findall函数更准确地找到内容,然后将其存储在列表中

#获取天气条件     data2=soup.find_all("p","wea")     b=list()     for i in range(0,7):         b.append(data2[i].text)

最高温度与最低温度与天气条件相似:

 #获得最高温度和最低温度     data3=soup.find_all("p","tem")     c=list()     for i in range(0,7):         c.append(data3[i].text)

最后,我们用个大列表进行汇总即可:

d=list()     d.append(a)     d.append(b)     d.append(c)     return d

完整代码:

def get_data(y):     #获取日期     soup=BeautifulSoup(y,'html.parser')     data1=soup.find_all("h1")     a=list()     for i in range(0,7):         a.append(data1[i].text)     #获取天气条件     data2=soup.find_all("p","wea")     b=list()     for i in range(0,7):         b.append(data2[i].text)     #获得最高温度和最低温度     data3=soup.find_all("p","tem")     c=list()     for i in range(0,7):         c.append(data3[i].text)     d=list()     d.append(a)     d.append(b)     d.append(c)     return d

3.设计write-data函数写入内容fname文件

首先,函数的第二个参数是文件路径。为了方便和美观,我们将在这里查看data单个输出函数获取的内容,然后写入文件

代码:

def write_data(x,y):     a=list()     for i in range(0,3):         for j in range(0,7):             a.append(x[i][j])     f1=open(y,'w')     for i in a:         f1.write(str(i) "\n")     f1.close() 

4.设计主函数,调用三个函数爬行徐州日期的天气温度,并写入8-2.txt文件

调用函数,引入文件路径和网页网站:

url="http://www.weather.com.cn/weather/101190801.shtml" a=get_content(url) b=get_data(a) c="e://python/files/8-2.txt" write_data(b,c)

5.完整代码

import requests from bs4 import BeautifulSoup def get_content(x):     try:         r=requests.get(x)         r.encoding=r.apparent_encoding         return r.text     except:         return print("爬取有误") def get_data(y):     #获取日期     soup=BeautifulSoup(y,'html.parser')     data1=soup.find_all("h1")     a=list()     for i in range(0,7):         a.append(data1[i].text)     #获取天气条件     data2=soup.find_all("p","wea")     b=list()     for i in range(0,7):         b.append(data2[i].text)     #获得最高温度和最低温度     data3=soup.find_all("p","tem")     c=list()     for i in range(0,7):         c.append(data3[i].text)     d=list()     d.append(a)     d.append(b)     d.append(c)     return d def write_data(x,y):     a=list()     for i in range(0,3):         for j in range(0,7):             a.append(x[i][j])     f1=open(y,'w')     for i in a:         f1.write(str(i) "\n")     f1.close()   url="http://www.weather.com.cn/weather/101190801.shtml" a=get_content(url) b=get_data(a) c="e://python/files/8-2.txt" write_data(b,c)

标签: s3urd交流电压变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台