利用BeautifulSoup4爬取猿圈
程序员文章站
2022-05-02 22:01:35
...
import requests
import json
from bs4 import BeautifulSoup
'''
数据源地址: https://www.lmonkey.com/t
爬取的数据内容:文章的标题,url,作者,发布时间
使用工具:requests, bs4
'''
class Yq():
# 定义请求的url
url = 'https://www.lmonkey.com/t'
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'
}
# 存放爬取到的数据地址
res_html = None
# 存储解析后的数据
varlist = []
# 初始化方法
def __init__(self):
# 发送请求
result = requests.get(url=self.url, headers=self.headers)
# 判断请求是否成功,并获取请求的源代码
if result.status_code == 200:
print('数据请求成功')
self.res_html = result.text
if self.parsedata():
self.writedata()
else:
print('数据请求失败')
# 解析数据
def parsedata(self):
print('正在解析数据...')
try:
soup = BeautifulSoup(self.res_html, 'lxml')
# 获取页面中所有的文章
divs = soup.find_all('div', class_="list-group-item list-group-item-action p-06")
for i in divs:
title = i.find('div', class_="topic_title mb-0 lh-180")
if title:
# split('\n')[0]: 使用\n字符分隔字符串,获取分割后的第一个字符串
vardict = {'title': title.text.split('\n')[0],
'url': i.a['href'],
'author': i.strong.a.text,
'date': i.span['title']}
self.varlist.append(vardict)
print('数据解析成功')
return True
except:
print('数据解析时出现异常!')
return False
# 写入数据
def writedata(self):
if self.varlist != []:
try:
with open('./yq.json', 'w', encoding='utf-8', ) as fp:
json.dump(self.varlist, fp, ensure_ascii=False)
print('写入数据成功!')
return True
except:
print('写入数据时发生异常!')
return False
else:
print('无法获取当前解析的数据!')
return False
# 实例化类
Yq()
上一篇: 爬取界面中“贵州茅台”相关新闻的标题、网址和日期。
下一篇: python爬虫:登录学习猿地