c爬虫抓取网页数据(安装python运行pipinstallBeautifulSoup抓取网页完成必要工具安装后)
优采云 发布时间: 2021-11-01 18:03c爬虫抓取网页数据(安装python运行pipinstallBeautifulSoup抓取网页完成必要工具安装后)
本期文章将与大家分享如何使用Python爬虫爬取数据的内容。小编觉得很实用,所以分享出来供大家参考,跟着小编一起来看看吧。
工具安装
首先,您需要安装 Python requests 和 BeautifulSoup 库。我们使用 Requests 库抓取网页内容,使用 BeautifulSoup 库从网页中提取数据。
安装蟒蛇
运行 pip 安装请求
运行 pip install BeautifulSoup
爬网
完成必要工具的安装后,我们就正式开始编写我们的爬虫了。我们的首要任务是抓取豆瓣上的所有图书信息。举个例子,我们先来看看如何抓取网页的内容。
提取内容
抓取网页内容后,我们要做的就是提取我们想要的内容。在我们的第一个例子中,我们只需要提取书名。首先,我们导入 BeautifulSoup 库。使用BeautifulSoup,我们可以非常简单的提取网页的具体内容。
持续的网络爬行
至此,我们已经能够抓取单个网页的内容,现在让我们看看如何抓取网站的整个内容。我们知道网页是通过超链接相互连接的,我们可以通过链接访问整个网络。所以我们可以从每个页面中提取到其他网页的链接,然后重复抓取新的链接。
准备
IDE:pyCharm
库:请求,lxm
即将介绍,这两个库主要为我们服务
requests:获取网页源代码
lxml:获取网页源代码中的指定数据
简洁明了,有没有^_^
设置环境
这里的搭建环境不是搭建python开发环境。这里的构建环境是指我们使用pycharm新建一个python项目,然后用requests和lxml新建一个项目。里面什么都没有。创建一个新的 src 文件夹。然后直接在里面新建一个Test.py。
依赖库导入
在 Test.py 中输入:
*敏*感*词*请求
此时,请求将报告一条红线。这时候我们将光标指向requests,按快捷键:alt+enter,pycharm会给出解决方案。这时候选择安装包请求,pycharm会自动为我们安装。,我们只需要稍等片刻,库就安装好了。lxml的安装方法是一样的。
安装这两个库后,编译器不会报红线。
获取网页源代码
请求可以很容易地让我们得到网页的源代码。
获取源代码:
# 获取源代码
html = requests.get("")
# 打印源代码
打印 html.text
代码就这么简单,这个html.text就是这个网址的源码
获取指定数据
现在我们有了网页的源代码,我们需要使用lxml过滤掉我们需要的信息。
首先,我们需要分析源代码。我这里使用的是 Chrome 浏览器,所以右键点击查看。
然后在源代码中,找到第一个。
首先点击源页面右上角的箭头,然后在网页内容中选择文章标题。这时候源码会定位到这里的标题。
这时候选择源码的title元素,右键复制。
获取xpath,相当于一个地址。比如源代码中网页长图的位置。
表达式://*[@id="mainBox"]/main/div[2]/div[1]/h5/a
首先,//表示根节点,也就是说,这个//后面的东西是根,表示只有一个。我们需要的就在这里。
然后 / 表示寻找下层。根据图片也很明显,div -> main -> div[2] -> div[1] -> h5 -> a
跟踪到a这里,然后我们在最后加上/text表示我们要提取元素的内容,所以我们最终的表达式是这样的:
//*[@id="mainBox"]/main/div[2]/div[1]/h5/a/text()
这个表达只针对这个网页的这个元素,是不是很难理解?
那么这个东西是如何工作的呢?
所有代码:
*敏*感*词*请求
从 lxml 导入 etree
html = requests.get("")
# 打印 html.text
etree_html = etree.HTML(html.text)
content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h5/a/text()')
对于每个内容:
打印(每个)
这时候每个里面的数据就是我们想要得到的数据
打印结果:
如何拍打 ArrayList
打印结果就是这个结果,我们去掉了换行符和空格
*敏*感*词*请求
从 lxml 导入 etree
html = requests.get("")
# 打印 html.text
etree_html = etree.HTML(html.text)
content = etree_html.xpath('//*[@id="mainBox"]/main/div[2]/div[1]/h5/a/text()')
对于每个内容:
replace = each.replace('\n','').replace('','')
如果替换 =='\n' 或替换 =='':
继续
别的:
打印(替换)
打印结果:
如何拍打 ArrayList
感谢您的阅读!关于《如何使用Python爬虫抓取数据》这篇文章分享到这里,希望以上内容可以对大家有所帮助,让大家学到更多的知识,如果你觉得文章可以,可以分享出去让更多人看到!