Python爬虫:糗事百科

「已注销」 2022-01-15 04:28:34 阅读数:381

Python 爬虫 百科 糗事

python小案例:爬虫-糗事百科段子

环境:pycharm, python3.0+

库:requests, BeautifulSoup

如果没有这两个库:在命令行任意位置下(前提是你已经配置好了环境,这个网上大把,自行Google):pip install requests, pip install bs4 import BeautifulSoup

代码:

import requests
from bs4 import BeautifulSoup

#模拟浏览器请求网络
def get_requests(url):
# 用户代理(有些网站服务器是拒绝某些IP的,使用代理确保无误)
headers={
“User-Agent”: “Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36”
}
# 请求网络,并将返回的数据进行解码,utf-8是200多中语言都通用的
response=requests.get(url=url,headers=headers).content.decode(‘utf-8’)
# 函数调用返回一个值
return response

def get_content(html):
# 保存到本地的时候文件夹的形式,{}这个是占位符,等待函数传参
out_put=’’‘第{}页 作者:{}性别:{} 年龄:{} 点赞:{} 评论:{} {}’’’
# HtmlParser,顾名思义,是解析Html的一个工具。python自带的。
soup=BeautifulSoup(html, ‘html.parser’)
# 一层一层地找到我们想要的东西,我们要的是段子
con_left=soup.find(id=“content-left”)
con_list=con_left.find_all(‘div’,class_=“article”)
# 循环遍历,爬到一个段子就进行解剖保存
for item in con_list:
# 段子的作者
author=item.find(‘h2’).string
# 得到内容
content=item.find(‘div’,class_=“content”).find(‘span’).get_text()
#
stats=item.find(‘div’,class_=“stats”)
# 得到点赞内容
smile=stats.find(‘span’,class_=“stats-vote”).find(‘i’,class_=“number”).string
# 得到评论内容
comments = stats.find(‘span’, class_=“stats-comments”).find(‘i’, class_=“number”).string
# print(comments)
# 因为有些是匿名用户 无法得到男女,我们用判断语句筛选出匿名用户,否则打上男女标签
author_info=item.find(‘div’, class_=“articleGender”)
if author_info is not None:
class_list=author_info[‘class’]
if ‘manIcon’ in class_list:
sex=‘男’
elif “womenIcon” in class_list:
sex=‘女’
else:
sex=" "
age=author_info.string
# 如果是匿名,则性别年龄为空
else:
sex=’ ’
age=’ ’
# 调用保存文件的方法
save_text(out_put.format(‘1’,author,sex,age,smile,comments,content))
def save_text(*args):
for item in args:
with open(“糗事百科段子.txt”,‘a’,encoding=‘utf-8’) as file:
file.write(item)
print(item)

def main():
# 糗事百科的某一个页面的url
url=“https://www.qiushibaike.com/text/page/2/
html=get_requests(url)
get_content(html)

if name==‘main’:
main()

版权声明:本文为[「已注销」]所创,转载请带上原文链接,感谢。 https://blog.csdn.net/qq_41152432/article/details/85290572