今天我要和大家分享一个比较基础、简单的抓爬网页文本内容的代码。
实现这个功能非常简单,他主要就是基于一个最最基础的python爬虫包——requests。
抓爬普通网页我们只需要把它分成几步就可以完成:
首先,抓爬获取源码是首要。我们可以在需要抓爬的网站里敲击F12查看网页源码,如下图:
在这里,我就以刚刚这个网站为例,网址:世界名猫品种大全
抓爬网页源代码如下:
import requests
page=requests.get('http://www.360doc.com/content/19/0113/16/276037_808591294.shtml')
print(page.text)
通过这段代码,我们可以看到网页的全部代码,而我们需要的文本内容也就藏在这些代码之中:
自此,我们思维导图的第一部分就算完成了。
接下来,我们需要读懂这些代码是什么意思。这里我们需要引进一些新的词语:我们在源码中会看到这样的格式<div class="xxx" "猫咪是·······" </div>这样的格式。这里的<div我们把它称之为标记名,class(也可为其他的)=“xxx”我们称之为标记属性。这两点内容也就是我们抓爬定位文本的重要要素。
第二步就是要定位到文本了,通过观察代码我们不难发现,该网站许多文本开头标记都为“p”,而class标记属性为class=similar-text
定位到文本就可以开始我们接下来的代码了:
import requests #导入requests包
from bs4 import BeautifulSoup #导入BS4
req = requests.get(url="http://www.360doc.com/content/19/0113/16/276037_808591294.shtml") #抓爬网站
req.encoding = "utf-8" #解码(如果不进行解码很大概率会出现乱码)
html=req.text #用text将乱码去除
soup = BeautifulSoup(req.text,features="html.parser") #获取内容
x = soup.find_all("p",class_="similar-text") #抓取相关标记的内容
for y in x: #如果想要抓取全部符合属性的文本就需要加入循环
dd = y.text.strip() #text.strip可以将标记删除干净
print(dd) #打印内容
通过这个代码就可以抓取文章里面的文本了。
总结一下:抓爬的关键因素在于找标记,找到后通过BS4包来抓取就行了。
如果学会的话就点个赞吧