Python爬取学习猿地网站猿圈的文章列表(标题、作者、链接、时间)
程序员文章站
2022-03-02 19:38:43
...
import requests
from bs4 import BeautifulSoup
import json
class bs4YQ():
url = 'https://www.lmonkey.com/t'
headers = {
'user-agent': # 自己设置即可
}
# 响应源代码的存放位置
res_html = None
# 存储解析后的数据
info = []
# 初始化方法
def __init__(self):
# 初始化请求对象
res = requests.get(url=self.url, headers=self.headers)
if res.status_code == 200:
print('请求成功')
self.res_html = res.text
if self.ParseData():
self.WriteJson() # 如果解析成功,则写入数据
print('succeed')
else:
print('请求失败')
# 定义解析html数据的方法
def ParseData(self):
bs = BeautifulSoup(self.res_html, 'lxml') # BeautifulSoup 的实例化
# 先找出文章模块所在列表区域,再从该区域解析标题、作者
try:
# 文章列表
lists = bs.find_all(
'div', {'class': 'list-group-item list-group-item-action p-06'}
) # find_all返回一个列表
for i in lists:
# 找每个文章列表里的标题
titles = i.find(
'div', {'class', 'topic_title mb-0 lh-180'}
)
if titles:
# 用一个字典存储查找的相应数据
infodict = {
'title': titles.text.split('\n')[0],
'author': i.strong.a.text,
'url': i.a['href'],
'time': i.span['title']
}
self.info.append(infodict)
return True
except:
return False
# 定义写入json数据的方法
def WriteJson(self):
# 判断数据是否找到并存入初始化列表
if self.info is not None:
try:
# 写入
with open('./yq.json', 'w', encoding='utf-8') as fp:
json.dump(self.info, fp)
return True
except:
return False
else:
print('无法获取解析数据')
return False
# 设置入口
if __name__ == '__main__':
bs4YQ()
上一篇: python 爬取新浪新闻正文内容
下一篇: 爬取大众点评