对一次爬虫的总结

前言

大数据决赛要开始了,团队里数据爬取的任务就交给我吧
在这里插入图片描述
找到一个例题
在这里插入图片描述

让我们来搞一手吧。

爬取前的准备

所用语言:python
所用的库:bs4,requests,urllib,re
这两个库是一定没有的,我们需要下载:

pip install beautisoup4
pip install requests

其他两个库如果没有的话也自行pip下载。
如果你连pip都没有的话回头另讲:

爬取时

目标网站
先附上爬取代码:

import requests
import re
from bs4 import BeautifulSoup
from urllib import request

url = 'https://www.discuz.net/forum-10-1.html'
res = request.urlopen(url)#打开链接
print(res)
soup = BeautifulSoup(res,'html.parser')#返回网页源代码
#然后我们在用find去找相关标签包含的东西
t_div = soup.findAll('a',attrs={"c":"1"})
a = 1
author = []

# author's name
for i in t_div:
    if a%2 == 0:
        a += 1
        continue
    a += 1
    author.append(i.text)

th = soup.findAll('a',attrs={"class":"showcontent y"})
d = str(th)
tid = re.findall('\'\d+\'',d)
uid = re.findall('uid=\d+',str(t_div))
print("tid",    " author",  "uid")
for i in range(len(tid)):
    print (tid[i][1:-1],author[i],uid[i][4:])

在这里插入图片描述这里面是不是有个 c = 1,所以下面这句话就是用来获得所有c=1的a标签的内容

t_div = soup.findAll('a',attrs={"c":"1"})

如果我们直接用for循环遍历的话,会发现他把作者和最后发言人一块给记录下来了。那我们就隔一个输出一个不就行了。
用户名爬取完成,再看看a标签中的href里发现这里有作者的uid,这里我们使用正则表达式来进行匹配

uid = re.findall('uid=\d+',str(t_div))

这样就把uid以列表的形式储存在了uid里。
关于正则表达式,传送链接:正则表达式
用户id也爬取完成了,我们再找找帖子的tid:
在这里插入图片描述
很容易发现这里有个CONTENT_TID我们也使用正则表达式给他匹配出来

th = soup.findAll('a',attrs={"class":"showcontent y"})
d = str(th)
tid = re.findall('\'\d+\'',d)

我们这样就可以把a标签中含有class为‘showcontent y’的搜集出来,然后匹配出TID储存到TID里。
为了匹配的准确性,我在匹配的时候加了一些关键字:UID里我使用了uid=xxxx
这时候我们再用切片给它删掉,这样就是正常的UID了,TID同理把头和尾的双引号去掉。

for i in range(len(tid)):
    print (tid[i][1:-1],author[i],uid[i][4:])

在这里插入图片描述
这样就得到了你想要的数据。

注意事项

爬取需谨慎,爬取到敏感、他人隐私信息是要坐牢的。

发布了36 篇原创文章 · 获赞 29 · 访问量 3951

猜你喜欢

转载自blog.csdn.net/YUK_103/article/details/102760115