简单爬虫三步走,So easy~

本文介绍一个使用python实现爬虫的超简单方法,精通爬虫挺难,但学会实现一个能满足简单需求的爬虫,只需10分钟,往下读吧~

该方法不能用于带有反爬机制的页面,但对于我这样的非专业爬虫使用者,几乎遇到的各种简单爬虫需求都是可以搞定的。

归纳起来,只有简单的3步

  • 使用开发人员工具分析网页HTML
  • 请求网页
  • 获取相应信息

我们以一个简单的需求为例:
从wiki百科标普500指数页面中,利用爬虫自动获取 S&P 500指数所对应的所有股票。如图所示:


第一步:使用开发人员工具分析网页HTML

首先我们要对待爬取的网页人工的进行结构分析
这里我使用的是Google浏览器
进入页面后,按下F12,打开开发人员工具

选择开发人员工具左上角的小箭头
这是一个映射工具
通过它你可以轻松的观察网页中每一个渲染后的元素所对应于网页HTML中的位置
这能够帮我们很轻松的完成html的结构分析,从而快速实现一个爬虫
就像这样

通过观察,我们发现,所有待爬取的股票信息都位于一个表格中
这个表格对应于一个<table class="wikitable sortable jquery-tablesorter"> 标签

而表格中每一行的的股票信息又对应了table 下的一个tr 标签
因此我们爬虫的工作就是get到table 下的所有tr 标签,并解析出相应内容
第一步网页HTML分析,完成!


第二步:请求网页

下面开始进入代码阶段
这里我使用的是Python3
需要用到requestsBeautifulSoup 这两个库
因此别忘记引用:

import bs4
import requests

首先我们需要请求网页:

response = requests.get("http://en.wikipedia.org/wiki/List_of_S%26P_500_companies")

随后使用BeautifulSoup解析

soup = bs4.BeautifulSoup(response.text,"html5lib")

没有错,就是这么简单~


第三步:获取相应信息

结合第一步的分析
我们爬虫的工作就是get到table 下的所有tr 标签,并解析出相应内容
通过BeautifulSoup库的一个核心的方法select 我们便能完成这个工作
首先获取所有的tr 标签

symbolslist = soup.select('table')[0].select('tr')[1:]

然后获取tr 标签中所需的属性并打印出来

symbols = []
for i, symbol in enumerate(symbolslist):tds = symbol.select('td')symbols.append((tds[0].select('a')[0].text,  # Tickertds[1].select('a')[0].text,  # Nametds[3].text,                 # Sector))

大功告成,最终的程序运行结果如下:

全部代码如下:

import bs4
import requestsif __name__ == "__main__":"""Download and parse the Wikipedia list of S&P500 constituents using requests and BeautifulSoup.Returns a list of tuples for to add to MySQL."""# Use requests and BeautifulSoup to download the# list of S&P500 companies and obtain the symbol tableresponse = requests.get("http://en.wikipedia.org/wiki/List_of_S%26P_500_companies")soup = bs4.BeautifulSoup(response.text,"html5lib")# This selects the first table, using CSS Selector syntax# and then ignores the header row ([1:])symbolslist = soup.select('table')[0].select('tr')[1:]# Obtain the symbol information for each# row in the S&P500 constituent tablesymbols = []for i, symbol in enumerate(symbolslist):tds = symbol.select('td')symbols.append((tds[0].select('a')[0].text,  # Tickertds[1].select('a')[0].text,  # Nametds[3].text,                 # Sector))# show the symbolsshowNum =10for i in range(showNum):print(symbols[i])

十分钟能学会的简单python爬虫相关推荐

  1. python批量删缩进_鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频?...

    鬼畜小姐姐+野狼disco,十分钟教你如何用Python剪辑一个牛逼的抖音小视频? 前言 半个月前,后台有个小伙伴问我,如何将视频中的音频提取出来,并且将声音转成文字写入到 word 中,正好接下来的 ...

  2. Bee框架,一个十分钟即可学会的ORM框架--Bee

    Bee 是一个ORM框架.关注:省时/优雅.简易.自动( Tea: Timesaving/Tasteful, Easy, Automatic) 特性.减少开发人员的编码量,只为一个目标--让别人不再叫 ...

  3. 十分钟用Windows服务器简单搭建DHCP中继代理!!

                         十分钟用Windows服务器简单搭建DHCP中继代理!! 一.什么是中继代理? 大家都知道DHCP分配地址都需要用到IP广播,但是广播是不能在两个网段之间进行 ...

  4. 简单python爬虫爬取游戏wiki立绘

    简单python爬虫爬取游戏wiki立绘 玩二次元手游是感叹美少女立绘真好看啊,可惜就是抽不到,于是看到b站wiki上有角色立绘,就写了个爬虫准备将立绘趴下来欣赏(舔). 本人爬虫的技术只算是初学,代 ...

  5. 十分钟轻松学会python-10分钟轻松学会python turtle绘图

    python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使用导入即可 import turtle 先说明一下turtl ...

  6. 四句话让你学会一个简单的爬虫【python】

    首先我们先导入request库,这样才能调用requests里面的函数 os库是为了存放我们爬过来的文件 import requests import os 如何四句话实现一个简单的爬虫 pic = ...

  7. 十分钟,学会使用js三种方法创建本地json数据文件

    前言 在干业务时,需要得到一份全国省市到街道的区划数据,刚好业务中连接了高德地图,高德地图又提供了区划的api,这下只需要把数据写到json里了.什么!你说你还不会用js创建json文件?没关系,只需 ...

  8. 记第一次写出自己的简单python爬虫:GCZW3

    经过差不多一个星期的折腾,当然这其中也有做很多其他事情.周四写出来直接通过浏览器Network找到观察者网评论链接进行的爬虫,今天下午有折腾了差不多一下午,终于通过BeautifulSoup解析出的h ...

  9. 在职爬虫工程师,带给大家超简单 Python 爬虫教程

    本篇 Python 爬虫教程主要讲解以下5部分内容,请按照顺序进行学习. 爬虫概述:介绍什么是爬虫,爬虫的目的和应用. 爬虫基础知识:介绍爬虫的基本概念,例如网络协议,HTML 结构,CSS 样式表等 ...

最新文章

  1. 洛谷 [P1801] 黑匣子
  2. 定义一个dto对象_正确理解DTO、值对象和POCO
  3. visio 转 pdf 裁边 ——使用pdfcrop对PDF裁边
  4. Bootstrap页面布局14 - BS按钮群组
  5. 敏捷系列情景剧 | 如何“正确”开每日站会
  6. java下载txt文本文件
  7. javascript数据结构与算法--散列
  8. 中国好声音不如有中国好创意
  9. linux下删除带特殊符号的文件
  10. 什么是自签名证书?自签名SSL证书的优缺点?
  11. 微信公众号订阅号与微信服务号有什么不同
  12. 机器人国际会议与期刊列表
  13. 破解物联网落地困境-阿里云硬件接入最佳实践
  14. 设计模式-工厂模式(Factory)
  15. 初识云原生安全:云时代的最佳保障
  16. RN-路由---基础
  17. 解决ECharts中使用tooltip时鼠标移入抖动问题
  18. 数学专业英语 -- 数理逻辑入门
  19. fastadmin html模板,使用fastadmin的页面异常模板
  20. QML类型:Repeater

热门文章

  1. 基于知识图谱的直升机飞行指挥模型研究
  2. 技术者利用wordpress+阿里云服务器+LAMP新搭建的博客网站:www.youngxy.top
  3. Java 日期与时间
  4. 循环,函数,指针作业
  5. vue中检测对象和数组值变化的问题
  6. 关于mysql ERROR 1045 (28000)错误的解决办法
  7. jQuery 插件格式 规范
  8. 使用flot绘图出现window.G_vmlCanvasManager is null or not an Object
  9. 知识管理≈内容管理≈文档管理≈项目文档管理
  10. spring-security-学习笔记-01-基本概念