python抓取网页数据(soup()如何依靠类标签找到数据的位置?)

优采云 发布时间: 2021-11-27 00:26

  python抓取网页数据(soup()如何依靠类标签找到数据的位置?)

  .

  同样,如果将光标放在名称“标准普尔指数”上并单击,则可以看到控制台中的此信息收录在标签中。

  

  现在我们知道如何依靠类标签来查找我们需要的数据了。

  学习代码 现在我们知道了我们需要的数据的位置,我们可以开始编写代码来构建我们的网络爬虫。现在请打开您的文本编辑工具!

  首先,我们必须导入我们想要使用的各种库。

  # 导入各种库

  导入 urllib2

  从 bs4 导入 BeautifulSoup

  然后,我们定义一个变量(quote_page)并赋值给网站的URL链接。

  #赋值网站链接

  quote_page =':IND'

  接下来使用Python的urllib2库获取刚刚定义的URLquote_page的HTML页面信息。

  # 检索网站并得到html代码,保存在变量“page”中

  page = urllib2.urlopen(quote_page)

  最后,我们将网页解析为 BeautifulSoup 格式,以便我们可以使用 BeautifulSoup 库来分析网页。

  # 使用beautifulSoup解析HTML代码并将其存储在变量“soup”中`

  汤 = BeautifulSoup(page,'html.parser')

  现在我们有了收录整个网页的 HTML 代码的变量汤。我们开始从汤中提取信息。

  不要忘记我们的数据存储在一个独特的层次结构中。BeautifulSoup 库中的 find() 函数可以帮助我们进入不同的层次来提取内容。我们需要的 HTML 类型“名称”在整个网页中是唯一的,所以我们可以简单地找到

  # 获取“名称”类别

  代码段并提取对应值

  name_box = soup.find('h1', attrs={'class':'name'})

  拿到label后,我们可以使用name_box的text属性来获取对应的值

  name = name_box.text.strip() #strip()函数用于去除前后空格

  印刷名称

  使用类似的方法,我们可以得到股票指数价格数据。

  # 获取股指价格数据

  price_box = soup.find('div', attrs={'class':'price'})

  价格 = price_box.text

  印刷价格

  

  当您运行程序时,您应该能够看到程序输出标准普尔 500 指数的当前价格。

  以Excel CSV 格式导出数据我们已经学习了如何获取数据,现在我们将学习如何存储数据。Excel 的逗号分隔数据格式 (CSV) 是一个不错的选择。这样,我们就可以在 Excel 中打开数据文件进行查看和进一步处理。

  在此之前,我们需要导入 Python 的 csv 模块和 datetime 模块。Datetime 模块用于获取数据记录时间。请将以下代码行插入您的导入代码部分。

  导入 csv

  从日期时间导入日期时间

  在代码底部,添加将数据写入 CSV 文件的代码。

  #以“添加”方式打开一个csv文件,保证文件的原创信息不被覆盖

  使用 open('index.csv','a') 作为 csv_file:

  writer = csv.writer(csv_file)

  writer.writerow([名称, 价格, datetime.now()])

  

  现在,如果您运行该程序,您应该能够导出一个 index.csv 文件。可以在Excel中打开文件,看到如图所示的一行数据。

  所以如果你每天运行这个程序,你就可以轻松获得标准普尔指数价格,而不必像以前那样在网站上搜索。

  进一步(高级用法)多个股票指数

  抓取一个股指信息对你来说还不够,对吧?我们可以尝试同时提取多个股指信息。首先,我们需要修改quote_page 将其定义为一个URL 数组。

  quote_page = [':IND',':IND']

  然后我们把代码的数据提取部分改成了for循环。这个循环可以一个一个地处理URL,并将变量data中的所有数据以元组类型存储。

  # for 循环

  数据 = []

  对于quote_page 中的pg:

  # 检索网站并返回HTML代码,并将其存储在变量'page'中

  页 = urllib2.urlopen(pg)

  # 使用beautifulSoup解析HTML代码并将其存储在变量`soup`中

  汤 = BeautifulSoup(page,'html.parser')

  # 获取“名称”类别

  代码段并提取对应值

  name_box = soup.find('h1', attrs={'class':'name'})

  name = name_box.text.strip() # strip() 用于去除开头和结尾

  # 获取股指价格数据

  price_box = soup.find('div', attrs={'class':'price'})

  价格 = price_box.text

  # 使用元组类型存储数据

  数据.附加((名称,价格))

  并且,修改保存部分,逐行保存数据

  #以“添加”方式打开一个csv文件,保证文件的原创信息不被覆盖

  使用 open('index.csv','a') 作为 csv_file:

  writer = csv.writer(csv_file)

  # for 循环

  对于名称,数据中的价格:

  writer.writerow([名称, 价格, datetime.now()])

  重新运行程序,应该可以同时提取两个股指价格信息了!

  BeautifulSoup 库,一种先进的爬取技术,使用方便,可以很好地执行少量的网站爬取。但是如果你对大量的爬取信息感兴趣,可以考虑其他方法:

  1. Scrapy,一个强大的 Python 数据捕获框架。

  2. 您可以尝试将一些公共应用程序编程接口 (API) 集成到您的代码中。这种获取数据的方法远比网络爬行高效。例如,您可以尝试 Facebook Graph API。该 API 可以帮助您获取 Facebook 网站 上未显示的隐藏信息。

  3. 如果数据量太大,可以考虑使用类似于MySQL的数据库后端来存储数据。

  采取“不要重复”的方法

  

  DRY 是英语中“不要重复你做过的事情”的缩写。您可以尝试像链接中的人一样自动化您的日常工作。同时,你也可以考虑其他有趣的项目,比如掌握你的 Facebook 好友的在线时间(当然他们同意),或者在论坛中获取演讲主题列表来尝试自然语言处理(这是当前人工智能的热门话题)!

  原文链接:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线