find和find_all多个匹配的问题,子集与父集的抓取
在上次代码能正常输出之后,则进行了代码的再次完善,但是呢因为所需要抓取的信息拥有多个p标签得子集,所以在抓取时做了蠢事

在这里也说一下爬虫萌新容易犯得错,因为要抓取精准信息啊,所以要对该属性进行查询也就是find,

但是这样的查询会只查询第一个p标签,这时候聪明的人呢就会使用find_all来进行所有的p标签查询,这样呢确实可以对content下所有的p标签进行查询输出,


但是呢这个时候会带着所有的p标签一起输出,而find_all所输出的并不是一个字符串,find_all输出的是一个字符集,所以想要在进行保存的操作则会进行报错,因为这是字符集格式,不是字符串格式,其实还是我们想的太多,既然conent这个父集中p子集太多不好处理我们完全可以查询该子集的父集,将父集进行全部抓取。

这样抓取呢会是这样的

这样输出的就是字符串了,然后我们提取文本内容


这样就可以把这个父集里面的文本全部提取出来了

这样之后就可以对这个数据进行保存了。
网页标签抓取规律
网页抓取很多人呢问我怎么抓取,抓取顺序是什么。。。这就是上课不认真呀!!
网页呢分有不同的属性,每个属性内保存着不同的数据,而我们爬虫则需要经过代码的指引才能进行精准爬取,所以这就行把大象放冰箱一样,一层一层的查询属性直到抓到自己想要的属性。
比如我们来抓取这个属性,
这个小说网站里的作者属性,导包和创建伪装我就不演示了,直接进入实战,首先我们找到这个属性在哪。

可以看到我们需要的属性在这里,然后向上查询它的父集,知道查询至第一个父集

这个就是我们需要查询的第一个属性也就是 装大象的第一步,打开冰箱门

确定我们的大目标之后则查询下一层的子集,


然后精准查询需要的数据,
emmmm刚发现自己的pycharm过期了=-= 这次只能先鸽了,明天在更新后续的东西qwq。
啊,还没回寝室,但是有一个昨天困扰我的问题解决了,所以就先写个博客发出来再说,所以昨天的问题啊,在鸽一天qwq,不过分吧。
ok,进入正题,问题是这样的

可以看出我已经抓出了自己想要的数据,但是呢报错了,这就是问题所在了,这也是很多学生容易犯的问题,拿过来别人的代码就直接套用那可能之前用着没什么问题但是自己做一做修改那就出现问题了,所以现在我们需要找到问题所在。
https://www.qishuw.com/author/%E5%A5%B3%E7%8E%8B%E4%B8%8D%E5%9C%A8%E5%AE%B6.html 附上网页链接以供练习
首先我们查看错误原因,
可以看出我们的第47行代码出了问题,那么我们去查看我们的第47行代码

单独输出一下47行可以输出,哎,这时候就蒙了,可以输出呀,那这为什么报错呢,
这也是我们这种上课不怎么听讲的学生容易出的错,因为是直接套用的老师代码后更改使用,虽然那个代码可能适合原来的网页,但是换一个网页就不太适合了,首先我们去查询下网页源码。

虽然这个网页有两个box_con属性但是第二个里面却没有
这个属性,而我们却用的是find_all,这个代码呢会抓取所有的box_con属性,然后代码也就进行第二次执行,但是第二次执行却没有找到maininfo属性,所以就对我们的代码进行了报错,也就是47行的问题,所以我们应该对代码的作用进行理解,
去除all和循环结构

看下结果

现在就可以正常抓取了,所以所我们还是要对代码进行理解,而不是一味的去套用,套用别人的永远是别人的,只有自己理解了那这个代码才是你自己的。
浙公网安备 33010602011771号