鱼C论坛

 找回密码
 立即注册
查看: 1255|回复: 1

[作品展示] 爬虫:几个拿我们老窝开刀的爬虫(2)

[复制链接]
发表于 2022-3-23 18:15:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
        众所周知,鱼C论坛没有user-agent的检测,所以很适合新手开刀......
        注:我没有任何邪恶的想法(比如以前的大规模攻击)
        [1]

from requests import *
import bs4
import sys

try:
    resp = get(input('请输入URL:'))
#如果出错(ValueError,404......)
except:
    print(f'Un oh......')
    sys.exit(0)#退出程序

#正常
#(1)数据分析
s = bs4.BeautifulSoup(resp.text, 'html.parser')

name = s.find('span', id='thread_subject').text#帖子名称
author = s.find('div', class_='authi').text#作者id[index]
#查看与回复
a = s.find('div', class_ = 'hm ptn')
look_num = str(bs4.BeautifulSoup(a.text, 'html.parser')).split('|')[0]
say_num = str(bs4.BeautifulSoup(a.text, 'html.parser')).split('|')[1]
#个人信息
d1 = s.find('dl', class_="cl")
dts = str(bs4.BeautifulSoup(d1.text, 'html.parser'))
dts = dts.split('\n')
#UID
uid = dts[1][:3] + ' : ' + dts[1][3:]
#积分
jf = dts[-2][:2] + ' : ' + dts[-2][2:]

#(3)打印数据

print('帖子名称:', name)
print('作者:', author)
print(look_num)
print(say_num)
print('[Ta的个人信息]:')
print(uid)
print(jf)


        根据注释,想必大家已经猜到这是用来爬取我们老窝的帖子与作者的信息的。其实也不难,学过小甲鱼《极客Python之效率革命【爬虫篇】》的鱼油,应该都能看懂。requests用于爬取源代码,一个get()就行。bs4用于分析数据,只要往源代码里钻就行。其中我有个bs4的小技巧:
        请注意看“dts = str(bs4.BeautifulSoup(d1.text, 'html.parser'))”这行,bs4.BeautifulSoup()用于创建BeautifulSoup对象,而我又用str()将它创建时返回的html给变成了str,这是什么操作???
        重点在‘.text’这里,
        BeautifulSoup对象的text属性,是去掉了标签的html(即我们可以在浏览器看到的文字)。而我们需要的数据,大部分也都是浏览器可以看到的。而如果遇到嵌套在内层的数据,如:
<div class="z">

<a href="./" class="nvhm" title="首页">鱼C论坛</a>

</div>


        我们需要“鱼C论坛”四个字,只需按刚才的技巧就可以提取出来了。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-23 19:36:13 | 显示全部楼层
厉害厉害  收藏一波
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 01:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表