需求:增量按照时间段统计每个人知识库文章的文章数量、创建人、操作时间、修改人、文章内容、文章链接。并将每个人的统计结果导出到excel。
实现步骤: 1、首先找到最适合的网页,即:能爬取出需求所需要的数据 的 最合适的网页 最合适的页面为右上方的搜索,如下示例图: 点击搜索如下: 点击高级搜索出现如下:下图中可根据很多提供的条件进行获取文章、文章摘要等,还有日期时间段条件。所以就选定如下页面进行数据爬取。
2、由于网站做了反爬手段,所以需要首先模拟登录,登录账号使用个人账号即可,模拟登录库使用requests session 库。代码示例如下:
base_url = 'http://192.168.10.18:8080'
login_action_url = "http://192.168.10.18:8080/dologin.action"
headers = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36",
"Referer": "http://192.168.10.18:8080/login.action?language=zh_CN"
}
login_data = {
"os_username": "真实用户名",
"os_password": "真实密码",
"login": "登录",
"os_destination": ""
}
import requests
session = requests.session()
response_post = session.post(url=login_action_url, data=login_data, headers=headers)
content_post = response_post.text
print(session.cookies)
print("登录成功")
3、登录成功后再次请求网页时则使用session 进行请求,因为requests.session 每次请求后都会携带cookie,从而保证登录状态,请求刚刚需要的网页地址,并获取页面源码 经过分析可知:要爬取的页面为分页数据,故地址为: http://192.168.10.18:8080/dosearchsite.action?cql=type+%3D+%22page%22&startIndex=50 其中startIndex参数为第6页的标识别。第一页的网址为 http://192.168.10.18:8080/dosearchsite.action?cql=type+%3D+%22page%22 其他第n页的网址为: http://192.168.10.18:8080/dosearchsite.action?cql=type+%3D+%22page%22&startIndex=n*10-10 所以根据这个规律可循坏获取所有页面网页源码并进行解析。这里就不详细写代码了。
article_list = []
for i in 100:
article_dict = {}
if i==1:
url = http://192.168.10.18:8080/dosearchsite.action?cql=type+%3D+%22page%22
else:
url = http://192.168.10.18:8080/dosearchsite.action?cql=type+%3D+%22page%22&startIndex=i*10-10
current_res = session.get(url=current_href).text
from lxml import etree
tree = etree.HTML(current_res)
4、解析成功后将需要的数据保存到list列表中,并导出到excel
def exporToExcel(article_list):
from openpyxl import load_workbook
from openpyxl import Workbook
workbook = Workbook()
wb = workbook.create_sheet(index=0)
wb.cell(row=1, column=1, value='按人员统计')
wb.cell(row=1, column=2, value='文章名称')
wb.cell(row=1, column=3, value='文章链接')
wb.cell(row=1, column=4, value='创建人')
wb.cell(row=1, column=5, value='修改人')
wb.cell(row=1, column=6, value='处理时间')
count = 2
for article in article_list:
wb.cell(row=count, column=1, value=article["tj_user"])
wb.cell(row=count, column=2, value=article["a_title"])
wb.cell(row=count, column=3, value=article["a_href"])
wb.cell(row=count, column=4, value=article["a_c_person"])
wb.cell(row=count, column=5, value=article["a_m_person"])
wb.cell(row=count, column=6, value=article["a_date"])
count += 1
workbook.save(filename='article_list.xlsx')
总结
爬虫爬取最重要的是找到合适的页面进行数据分析。其他都不难。
|