马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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论坛”四个字,只需按刚才的技巧就可以提取出来了。
|