python爬虫项目实战:爬取用户的所有信息,如性别、年龄等

Python023

python爬虫项目实战:爬取用户的所有信息,如性别、年龄等,第1张

python爬虫项目实战:

爬取糗事百科用户的所有信息,包括用户名、性别年龄、内容等等。

10个步骤实现项目功能,下面开始实例讲解:

1.导入模块

import re

import urllib.request

from bs4 import BeautifulSoup

2.添加头文件,防止爬取过程被拒绝链接

def qiuShi(url,page):

################### 模拟成高仿度浏览器的行为 ##############

heads ={

'Connection':'keep-alive',

'Accept-Language':'zh-CN,zhq=0.9',

'Accept':'text/html,application/xhtml+xml,application/xml

q=0.9,image/webp,image/apng, / q=0.8',

'User-Agent':'Mozilla/5.0 (Windows NT 10.0WOW64) AppleWebKit/537.36

(KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',

}

headall = []

for key,value in heads.items():

items = (key,value)

headall.append(items)

opener = urllib.request.build_opener()

opener.addheaders = headall

urllib.request.install_opener(opener)

data = opener.open(url).read().decode()

################## end ########################################

3.创建soup解析器对象

soup = BeautifulSoup(data,'lxml')

x = 0

4.开始使用BeautifulSoup4解析器提取用户名信息

############### 获取用户名 ########################

name = []

unames = soup.find_all('h2')

for uname in unames:

name.append(uname.get_text())

#################end#############################

5.提取发表的内容信息

############## 发表的内容 #########################

cont = []

data4 = soup.find_all('div',class_='content')

data4 = str(data4)

soup3 = BeautifulSoup(data4,'lxml')

contents = soup3.find_all('span')

for content in contents:

cont.append(content.get_text())

##############end####################################

6.提取搞笑指数

#################搞笑指数##########################

happy = []

data2 = soup.find_all('span',class_="stats-vote")

data2 = str(data2) # 将列表转换成字符串形式才可以使用

soup1 = BeautifulSoup(data2,'lxml')

happynumbers = soup1.find_all('i',class_="number")

for happynumber in happynumbers:

happy.append(happynumber.get_text())

##################end#############################

7.提取评论数

############## 评论数 ############################

comm = []

data3 = soup.find_all('a',class_='qiushi_comments')

data3 = str(data3)

soup2 = BeautifulSoup(data3,'lxml')

comments = soup2.find_all('i',class_="number")

for comment in comments:

comm.append(comment.get_text())

############end#####################################

8.使用正则表达式提取性别和年龄

######## 获取性别和年龄 ##########################

pattern1 = '<div class="articleGender (w ?)Icon">(d ?)</div>'

sexages = re.compile(pattern1).findall(data)

9.设置用户所有信息输出的格局设置

################## 批量输出用户的所以个人信息 #################

print()

for sexage in sexages:

sa = sexage

print(' ' 17, '= = 第', page, '页-第', str(x+1) + '个用户 = = ',' ' 17)

print('【用户名】:',name[x],end='')

print('【性别】:',sa[0],' 【年龄】:',sa[1])

print('【内容】:',cont[x])

print('【搞笑指数】:',happy[x],' 【评论数】:',comm[x])

print(' ' 25,' 三八分割线 ',' ' 25)

x += 1

###################end##########################

10.设置循环遍历爬取13页的用户信息

for i in range(1,14):

url = ' https://www.qiushibaike.com/8hr/page/'+str(i)+'/'

qiuShi(url,i)

运行结果,部分截图:

具体步骤

整体思路流程

简单代码演示

准备工作

下载并安装所需要的python库,包括:

对所需要的网页进行请求并解析返回的数据

对于想要做一个简单的爬虫而言,这一步其实很简单,主要是通过requests库来进行请求,然后对返回的数据进行一个解析,解析之后通过对于元素的定位和选择来获取所需要的数据元素,进而获取到数据的一个过程。

可以通过定义不同的爬虫来实现爬取不同页面的信息,并通过程序的控制来实现一个自动化爬虫。

以下是一个爬虫的实例