我有一个社交网络分析的作业,想仿照这篇Python实现《都挺好》社交网络分析做一个《锦衣之下》的社交网络分析。之所以选锦衣之下是因为我简直太喜欢看这部剧了哈哈哈~~嗝~ 咳咳····
本来想着下载个原小说对当数据来着,简单粗暴省时省力,但是后来我发现它和电视剧的出入有点大,我又对电视剧更加熟悉,所以我就舍弃了原小说,改用剧情介绍的数据。
这只是我作业的第一步,我打算弄一点写一点博客,劳逸结合当放松一下,哈哈,加油~
爬取的对象网页是这样的:
链接:https://www.juqingba.cn/zjuqing/76253.html
一共爬取55集,需要对每一集发送请求获得页面,经过分析发现除了第一集url后缀是76253.html形式,其余集都是76253_{}.html的形式
于是只对第一集单独做一下处理
爬虫的代码(pachong.py)如下:
import requests
from lxml import etree
# 获取到分页url的一个统一格式
url_all = 'https://www.juqingba.cn/zjuqing/76253_{}.html'
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
def get_url_list(url):
'''获取url列表 用于分页获取内容'''
# 获取55集
url_list = [url.format(i) for i in range(2, 56)]
url_list.insert(0, 'https://www.juqingba.cn/zjuqing/76253.html') # 第一集
return url_list
def get_page_etree(url, headers):
'''得到页面的etree对象'''
html_obj = requests.get(url=url, headers=headers)# 根据url请求页面,获取页面响应对象html_obj
html_obj = html_obj.content.decode('GBK') # 解决乱码问题
tree = etree.HTML(html_obj) # 转化为页面的etree对象
return tree
def get_data(tree):
"""获取一页的数据"""
data = tree.xpath('.//div[@class="ndfj"]/p/text()')[:-1]
content = ''
for para in data:
content = content + para
return content
def write_txt(filename, content):
"""写入txt文件"""
f = open(filename, 'w')
f.write(content)
f.close()
# 主程序部分
# 获取url列表 用于分页爬取
url_list = get_url_list(url_all)
for i, url in enumerate(url_list):
# 获取每一页的列表页etree对象
tree = get_page_etree(url=url,headers=headers)
# 得到所有数据追加到data中
content = get_data(tree)
if(content):
# 持久化存储
# print(content)
filename = 'E:/Pycharm Project/UnderPower/content/'+ str(i+1) + '.txt'
write_txt(filename, content) # 写入文件中
print('第',i + 1,'集 爬取成功!')
else:
print('第', i + 1, '集 失败!!!')
形成文件(截取了部分):
待更新···