欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

十分钟能学会的简单python爬虫

发布时间:2024/7/23 python 68 豆豆
生活随笔 收集整理的这篇文章主要介绍了 十分钟能学会的简单python爬虫 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

简单爬虫三步走,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
需要用到requests 和 BeautifulSoup 这两个库
因此别忘记引用:

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爬虫的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。