*敏*感*词* | 范例+代码:一文带你上手Python网页抓取神器BeautifulS

优采云 发布时间: 2022-05-15 01:23

  *敏*感*词* | 范例+代码:一文带你上手Python网页抓取神器BeautifulS

  代码段落并提取相应值

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

  在我们得到标签之后,我们可以用name_box的text属性获取相应值

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

  print name

  采用相似的方法,我们可以得到股指价格数据。

  # 获取股指价格数据

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

  price = price_box.text

  print price

  

  当你运行程序时,应该可以看到程序输出当前的标普500指数的价格。

  导出Excel CSV格式数据

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

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

  import csv

  from datetime import datetime

  在您代码的最下方,加上把数据写入CSV文件的代码。

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

  with open(‘index.csv’, ‘a’) as csv_file:

  writer = csv.writer(csv_file)

  writer.writerow([name, price, datetime.now()])

  

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

  所以如果您每天都运行这个程序,您就可以很简单的获取标准普尔指数价格,不需要像之前一样在网站上翻找。

  更进一步(高级用法)

  多个股指

  抓取一个股指信息对您来说不够,对吗?我们可以试试同时提取多个股指信息。首先,我们需要修改quote_page,把它定义为网址的数组。

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

  然后我们把数据提取部分代码改成一个for循环。这个循环可以一一处理网址,并以元组(tuple)类型把所有数据存入变量data.

  # for 循环

  data = []

  for pg in quote_page:

  # 检索网站并返回HTML代码,存入变量‘page’

  page = urllib2.urlopen(pg)

  # 用 beautifulSoup 解析HTML代码并存入变量 `soup`

  soup = BeautifulSoup(page, ‘html.parser’)

  # 获取“名称”类的

  代码段落并提取相应值

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

  name = name_box.text.strip() # strip() is used to remove starting and trailing

  # 获取股指价格数据

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

  price = price_box.text

  # 用元组类型存储数据

  data.append((name, price))

  并且,修改保存部分以便一行行保存数据

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

  with open(‘index.csv’, ‘a’) as csv_file:

  writer = csv.writer(csv_file)

  # for 循环

  for name, price in data:

  writer.writerow([name, price, datetime.now()])

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

  高级抓取技术

  BeautifulSoup 库使用简单,能很好的完成小量的网站抓取。但是如果您对大量的抓取信息感兴趣,您可以考虑其他方法:

  1. 强大的Python数据抓取框架Scrapy。

  2. 您可以试试把一些公共应用程序接口(Application programming interface, API) 整合入您的代码。这个获取数据的方法远比网页抓取高效。举个例子来说,您可以试试Facebook Graph API,这个应用程序接口可以帮助您获取脸书网站上不显示的隐藏信息。

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

  采取“别重复”方法

  

  DRY是“别重复你做过的事”的英文简写。您可以尝试像链接中的这个人一样把日常的工作自动化。同时您还可以考虑其他有趣的项目,比如说掌握您的脸书好友的上线时间(当然在征得他们同意的情况下),或者获取某个论坛的讲座主题列表来尝试自然语言处理(这是目前人工智能的热门话题)!

  原文链接:

  2017年7月《顶级数据团队建设全景报告》下载

  

  <p style="margin-top: -1.4em; margin-bottom: 15px; max-width: 100%; min-height: 1em; border: none; line-height: 1.75em; box-sizing: border-box !important; word-wrap: break-word !important;">关于转载

  如需转载,请在开篇显著位置注明作者和出处(转自:大数据文摘 | bigdatadigest),并在文章结尾放置大数据文摘醒目二维码。无原创标识文章请按照转载要求编辑,可直接转载,转载后请将转载链接发送给我们;有原创标识文章,请发送【文章名称-待授权公众号名称及ID】给我们申请白名单授权。未经许可的转载以及改编者,我们将*敏*感*词*追究其法律责任。联系邮箱:zz@bigdatadigest.cn。</p>

  志愿者介绍

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线