如何用python获取网页内容,python爬取网页内的指定内容
用Python做数据处理还是挺好的。如果想做爬虫,Python是个不错的选择。它有很多编写的类包,调用它们就可以完成很多复杂的功能。下面这篇文章主要介绍Python访问网页指定内容的相关信息。有需要的朋友可以参考一下。
00-1010前言1。抓取一个网页的源代码。抓取网页源代码中标签的内容3。抓取一个网页多个子标签的内容摘要。
目录
Python在数据处理方面相当不错。如果想做爬虫,Python是个不错的选择。它有很多写好的类包,你可以通过调用它们来完成很多复杂的功能。
在开始之前,我们需要安装一些环境依赖包并打开命令行。
确保你的电脑上有python和pip,如果没有,你需要自己安装。
之后,我们可以使用pip来安装先决模块请求。
pip安装请求
Requests是python实现的一个简单易用的HTTP库,使用起来比urllib简单很多。请求允许您发送HTTP/1.1请求。指定一个url并添加一个查询URL字符串以开始搜索web信息。
前言
以这个平台为例,抓取网页中的公司名称数据,网页链接:https://www.crrcgo.cc/admin/crr_supplier.html? page=1
目标网页的源代码如下:
首先,明确步骤
1.打开目标站点。
2.抓取目标站点代码并输出。
导入请求
导入我们需要的请求功能模块。
page=requests . get( https://www . crr CGO . cc/admin/crr _ supplier . html?page=1 )
这个命令意味着使用get来获取这个网页的数据。其实我们得到的是浏览器打开百度网站时首页的数据信息。
打印(page.text)
这句话是把我们得到的数据的文本内容打印出来。
import requests page=requests . get( https://www . crr CGO . cc/admin/crr _ supplier . html?page=1 )打印(page.text)
已成功抓取目标网页的源代码。
1.抓取网页源代码
但是上面抓取的代码是一段填充了尖括号的字符,对我们没有影响。这样用尖括号填充的数据就是我们从服务器接收的网页文件,就像Office的doc和pptx文件格式一样。网页文件通常是html格式的。我们的浏览器可以将这些html代码数据显示为我们看到的网页。
如果我们需要从这些字符中提取有价值的数据,我们必须首先了解标记元素。
每个标记的文本内容夹在两个尖括号之间,结束尖括号以/开头。尖括号(img和div)表示被标记元素的类型(图片或文本),尖括号中还可以有其他属性(比如src)。
标签内容文本是我们需要的数据,但我们需要使用id或class属性从众多标签中找到所需的标签元素。
我们可以在计算机浏览器中打开任何网页,按f12打开元素查看器,您可以看到数百个不同的标记元素组成了这个页面。
标签元素可以逐层嵌套。例如,下面是嵌套div元素的主体,主体是父元素和上层元素;Div是一个子层,是一个较低的元素。
身体
Div 10分钟开始使用数据爬虫/di
v>
</body>
回到抓取上面来,现在我只想在网页中抓取公司名这个数据,其他的我不想要
查看网页html代码,发现公司名在标签detail_head里面
import requestsreq=requests.get(https://www.crrcgo.cc/admin/crr_supplier.html?page=1)
这两行上面解释过了,是获取页面数据
from bs4 import BeautifulSoup
我们需要使用BeautifulSoup这个功能模块来把充满尖括号的html数据变为更好用的格式,from bs4 import BeautifulSoup这个是说从bs4这个功能模块中导入BeautifulSoup,是的,因为bs4中包含了多个模块,BeautifulSoup只是其中一个
req.encoding = "utf-8"
指定获取的网页内容用utf-8编码
soup = BeautifulSoup(html.text, html.parser)
这句代码用html解析器(parser)来分析我们requests得到的html文字内容,soup就是我们解析出来的结果。
company_item=soup.find_all(div,class_="detail_head")
find是查找,find_all查找全部。查找标记名是div并且class属性是detail_head的全部元素
dd = company_item.text.strip()
strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。在这里就是移除多余的尖括号的html数据
最后拼接之后代码如下:
import requestsfrom bs4 import BeautifulSoup
req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1")
req.encoding = "utf-8"
html=req.text
soup = BeautifulSoup(req.text,features="html.parser")
company_item = soup.find("div",class_="detail_head")
dd = company_item.text.strip()
print(dd)
最后执行结果成功的抓取到了网页中我们想要的公司信息,但是却只抓取到了一个公司,其余的则并未抓取到
所以我们需要加入一个循环,抓取网页中所有公司名,并没多大改变
for company_item in company_items:dd = company_item.text.strip()
print(dd)
最终代码如下:
import requestsfrom bs4 import BeautifulSoup
req = requests.get(url="https://www.crrcgo.cc/admin/crr_supplier.html?page=1")
req.encoding = "utf-8"
html=req.text
soup = BeautifulSoup(req.text,features="html.parser")
company_items = soup.find_all("div",class_="detail_head")
for company_item in company_items:
dd = company_item.text.strip()
print(dd)
最终运行结果查询出了该网页中所有的公司名
3.抓取多个网页子标签的内容
那我现在想要抓取多个网页中的公司名呢?很简单,大体代码都已经写出,我们只需要再次加入一个循环即可
查看我们需要进行抓取的网页,发现当网页变化时,就只有page后面的数字会发生变化。当然很多大的厂商的网页,例如京东、淘宝 它们的网页变化时常让人摸不着头脑,很难猜测。
inurl="https://www.crrcgo.cc/admin/crr_supplier.html?page="for num in range(1,6):
print("================正在爬虫第"+str(num)+"页数据==================")
写入循环,我们只抓取1到5页的内容,这里的循环我们使用range函数来实现,range函数左闭右开的特性使得我们要抓取到5页必须指定6
outurl=inurl+str(num)req = requests.get(url=outurl)
将循环值与url拼接成完整的url,并获取页面数据
完整代码如下:
import requestsfrom bs4 import BeautifulSoup
inurl="https://www.crrcgo.cc/admin/crr_supplier.html?page="
for num in range(1,6):
print("================正在爬虫第"+str(num)+"页数据==================")
outurl=inurl+str(num)
req = requests.get(url=outurl)
req.encoding = "utf-8"
html=req.text
soup = BeautifulSoup(req.text,features="html.parser")
company_items = soup.find_all("div",class_="detail_head")
for company_item in company_items:
dd = company_item.text.strip()
print(dd)
成功的抓取到了1-5页所有的公司名(子标签)内容
总结
到此这篇关于Python获取网页指定内容的文章就介绍到这了,更多相关Python获取网页指定内容内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。