时间:2021-05-23
1.安装BeautifulSoup4
easy_install安装方式,easy_install需要提前安装
pip安装方式,pip也需要提前安装.此外PyPi中还有一个名字是 BeautifulSoup 的包,那是 Beautiful Soup3 的发布版本.在这里不建议安装.
pip install beautifulsoup4Debain或ubuntu安装方式
apt-get install Python-bs4你也可以通过源码安装,下载BS4源码
Python setup.py install2.小试牛刀
很简单,代码注释里面已经解释的很清楚了.BeautifulSoup提供了一个更简单灵活的方式,去分析网站源码,更快获取图片link.
3.爬取实例
3.1基本的抓取技术
在写一个爬虫脚本时,第一件事情就是手动观察要抓取的页面来确定数据如何定位。
首先,我们要看一看在 http://pyvideo.org/category/50/pycon-us-2014 上的 PyCon 大会视频列表。检查这个页面的 HTML 源代码我们发现视频列表的结果差不多是长这样的:
<div id="video-summary-content"> <div class="video-summary"> <!-- first video --> <div class="thumbnail-data">...</div> <div class="video-summary-data"> <div> <strong><a href="#link to video page#">#title#</a></strong> </div> </div> </div> <div class="video-summary"> <!-- second video --> ... </div> ...</div>那么第一个任务就是加载这个页面,然后抽取每个单独页面的链接,因为到 YouTube 视频的链接都在这些单独页面上。
使用requests来加载一个 web 页面是非常简单的:
import requestsresponse = requests.get('http://pyvideo.org/category/50/pycon-us-2014')就是它!在这个函数返回后就能从response.text中获得这个页面的 HTML 。
下一个任务是抽取每一个单独视频页面的链接。通过 BeautifulSoup 使用 CSS 选择器语法就能完成它,如果你是客户端开发者的话你可能对这会很熟悉。
为了获得这些链接,我们要使用一个选择器,它能抓取在每一个 id 为video-summary-data的<div>中所有的<a>元素。由于每个视频都有几个<a>元素,我们将只保留那些 URL 以/video开头的<a>元素,这些就是唯一的单独视频页面。实现上述标准的 CSS 选择器是div.video-summary-data a[href^=/video]。下面的代码片段通过 BeautifulSoup 使用这个选择器来获得指向视频页面的<a>元素:
import bs4soup = bs4.BeautifulSoup(response.text)links = soup.select('div.video-summary-data a[href^=/video]')因为我们真正关心的是这个链接本身而不是包含它的<a>元素,我们可以使用列表解析来改善上述代码。
links = [a.attrs.get('href') for a in soup.select('div.video-summary-data a[href^=/video]')]
现在,我们已经有了一个包含所有链接的数组,这些链接指向了每个单独页面。
下面这段脚本整理了目前我们提到的所有技术:
import requestsimport bs4root_url = 'http://pyvideo.org'index_url = root_url + '/category/50/pycon-us-2014'def get_video_page_urls(): response = requests.get(index_url) soup = bs4.BeautifulSoup(response.text) return [a.attrs.get('href') for a in soup.select('div.video-summary-data a[href^=/video]')]print(get_video_page_urls())如果你运行上面这段脚本你将会获得一个满是 URL 的数组。现在我们需要去解析每个 URL 以获得更多关于每场 PyCon 会议的信息。
3.2抓取相连页面
下一步是加载我们的 URL 数组中每一个页面。如果你想要看看这些页面长什么样的话,这儿是个样例:http://pyvideo.org/video/2668/writing-restful-web-services-with-flask。没错,那就是我,那是我会议中的一个!
从这些页面我们可以抓取到会议的标题,在页面的顶部能看到它。我们也可以从侧边栏获得演讲者的姓名和 YouTube 的链接,侧边栏在嵌入视频的右下方。获取这些元素的代码展示在下方:
def get_video_data(video_page_url): video_data = {} response = requests.get(root_url + video_page_url) soup = bs4.BeautifulSoup(response.text) video_data['title'] = soup.select('div#videobox h3')[0].get_text() video_data['speakers'] = [a.get_text() for a in soup.select('div#sidebar a[href^=/speaker]')] video_data['youtube_url'] = soup.select('div#sidebar a[href^=http://e Home: Python in Two Genders (Naomi Ceder) 958 6 0 Getting Started Testing (Ned Batchelder)声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
python爬虫-梨视频短视频爬取(线程池)示例代码importrequestsfromlxmlimportetreeimportrandomfrommulti
本文实例讲述了python爬虫模拟浏览器的两种方法。分享给大家供大家参考,具体如下:爬虫爬取网站出现403,因为站点做了防爬虫的设置一、Herders属性爬取C
本文实例讲述了Python实现的爬取小说爬虫功能。分享给大家供大家参考,具体如下:想把顶点小说网上的一篇持续更新的小说下下来,就写了一个简单的爬虫,可以爬取爬取
本文实例讲述了Python实现爬虫爬取NBA数据功能。分享给大家供大家参考,具体如下:爬取的网站为:stat-nba.com,这里爬取的是NBA2016-201
python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手。python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,